# ==========================================================================
# Header
# ==========================================================================
swagger: '2.0'

info:
  version: "2.0.0"
  title: UltraCart Rest API V2
  description: UltraCart REST API Version 2
  termsOfService: https://www.ultracart.com/api/terms.html
  contact:
    name: UltraCart Support
    email: support@ultracart.com
    url: http://www.ultracart.com/api/
host: secure.ultracart.com
basePath: /rest/v2
schemes:
  - https
consumes:
  - application/json
produces:
  - application/json
security:
  - ultraCartOauth:
    - affiliate_read
    - affiliate_write
    - auto_order_read
    - auto_order_write
    - channel_partner_read
    - channel_partner_write
    - chargeback_read
    - chargeback_write
    - checkout_read
    - checkout_write
    - configuration_read
    - configuration_write
    - conversation_read
    - conversation_write
    - coupon_read
    - coupon_write
    - customer_read
    - customer_write
    - fulfillment_read
    - fulfillment_write
    - gift_certificate_read
    - gift_certificate_write
    - integration_log_read
    - integration_log_write
    - order_read
    - order_write
    - item_read
    - item_write
    - storefront_read
    - storefront_write
    - tax_read
    - tax_write
    - webhook_read
    - webhook_write
    - ultrabooks_read
    - ultrabooks_write
    - user_read
    - user_write
    - workflow_read
    - workflow_write
  - ultraCartSimpleApiKey: []
  - ultraCartBrowserApiKey: []
# ==========================================================================
# Paths
# ==========================================================================
paths:
# ==========================================================================
# UserRestApi
# ==========================================================================
  /user/groups:
    get:
      tags:
        - user
      summary: Get groups
      operationId: getGroups
      security:
        - ultraCartOauth:
          - user_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GroupsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - user
      summary: Insert a group
      description: |
        Insert a group on the UltraCart account.
      parameters:
        -
          name: group
          in: body
          description: Group to insert
          required: true
          schema:
            $ref: "#/definitions/Group"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertGroup
      security:
        - ultraCartOauth:
          - user_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GroupResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /user/groups/{group_oid}:
    delete:
      tags:
        - user
      summary: Delete a group
      description: |
        Delete a group on the UltraCart account.
      parameters:
        -
          name: group_oid
          in: path
          description: The group_oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteGroup
      security:
        - ultraCartOauth:
          - user_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - user
      summary: Retrieve a group
      description: |
        Retrieves a single group using the specified group id.
      parameters:
        -
          name: group_oid
          in: path
          description: The group id to retrieve.
          required: true
          type: integer
          format: int32
      operationId: getGroup
      security:
        - ultraCartOauth:
          - user_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - user
      summary: Update a group
      description: |
        Update a group on the UltraCart account.
      parameters:
        -
          name: group
          in: body
          description: Group to update
          required: true
          schema:
            $ref: "#/definitions/Group"
        -
          name: group_oid
          in: path
          description: The group_oid to update.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateGroup
      security:
        - ultraCartOauth:
          - user_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GroupResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /user/users:
    get:
      tags:
        - user
      summary: Get users
      operationId: getUsers
      security:
        - ultraCartOauth:
          - user_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/UsersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - user
      summary: Insert a user
      description: |
        Insert a user on the UltraCart account.
      parameters:
        -
          name: user
          in: body
          description: User to insert
          required: true
          schema:
            $ref: "#/definitions/User"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertUser
      security:
        - ultraCartOauth:
          - user_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/UserResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /user/users/{user_id}:
    delete:
      tags:
        - user
      summary: Delete a user
      description: |
        Delete a user on the UltraCart account.
      parameters:
        -
          name: user_id
          in: path
          description: The user_id to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteUser
      security:
        - ultraCartOauth:
          - user_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - user
      summary: Retrieve a user
      description: |
        Retrieves a single user using the specified user id.
      parameters:
        -
          name: user_id
          in: path
          description: The user id to retrieve.
          required: true
          type: integer
          format: int32
      operationId: getUser
      security:
        - ultraCartOauth:
          - user_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/UserResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - user
      summary: Update a user
      description: |
        Update a user on the UltraCart account.
      parameters:
        -
          name: user
          in: body
          description: User to update
          required: true
          schema:
            $ref: "#/definitions/User"
        -
          name: user_id
          in: path
          description: The user_id to update.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateUser
      security:
        - ultraCartOauth:
          - user_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/UserResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /user/users/{user_id}/logins:
    get:
      tags:
        - user
      summary: Retrieve a user's login history
      description: |
        Retrieves logins for a single user using the specified user id.
      parameters:
        -
          name: user_id
          in: path
          description: The user id to retrieve.
          required: true
          type: integer
          format: int32
      operationId: getUserLogins
      security:
        - ultraCartOauth:
          - user_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/UserLoginsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# CustomerProfileRestApi
# ==========================================================================
  /customer/customers:
    get:
      tags:
        - customer
      summary: Retrieve customers
      description: |
        Retrieves customers from the account.  If no parameters are specified, all customers will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: email
          in: query
          description: Email
          required: false
          type: string
        -
          name: qb_class
          in: query
          description: Quickbooks class
          required: false
          type: string
        -
          name: quickbooks_code
          in: query
          description: Quickbooks code
          required: false
          type: string
        -
          name: last_modified_dts_start
          in: query
          description: Last modified date start
          required: false
          type: string
        -
          name: last_modified_dts_end
          in: query
          description: Last modified date end
          required: false
          type: string
        -
          name: signup_dts_start
          in: query
          description: Signup date start
          required: false
          type: string
        -
          name: signup_dts_end
          in: query
          description: Signup date end
          required: false
          type: string
        -
          name: billing_first_name
          in: query
          description: Billing first name
          required: false
          type: string
        -
          name: billing_last_name
          in: query
          description: Billing last name
          required: false
          type: string
        -
          name: billing_company
          in: query
          description: Billing company
          required: false
          type: string
        -
          name: billing_city
          in: query
          description: Billing city
          required: false
          type: string
        -
          name: billing_state
          in: query
          description: Billing state
          required: false
          type: string
        -
          name: billing_postal_code
          in: query
          description: Billing postal code
          required: false
          type: string
        -
          name: billing_country_code
          in: query
          description: Billing country code
          required: false
          type: string
        -
          name: billing_day_phone
          in: query
          description: Billing day phone
          required: false
          type: string
        -
          name: billing_evening_phone
          in: query
          description: Billing evening phone
          required: false
          type: string
        -
          name: shipping_first_name
          in: query
          description: Shipping first name
          required: false
          type: string
        -
          name: shipping_last_name
          in: query
          description: Shipping last name
          required: false
          type: string
        -
          name: shipping_company
          in: query
          description: Shipping company
          required: false
          type: string
        -
          name: shipping_city
          in: query
          description: Shipping city
          required: false
          type: string
        -
          name: shipping_state
          in: query
          description: Shipping state
          required: false
          type: string
        -
          name: shipping_postal_code
          in: query
          description: Shipping postal code
          required: false
          type: string
        -
          name: shipping_country_code
          in: query
          description: Shipping country code
          required: false
          type: string
        -
          name: shipping_day_phone
          in: query
          description: Shipping day phone
          required: false
          type: string
        -
          name: shipping_evening_phone
          in: query
          description: Shipping evening phone
          required: false
          type: string
        -
          name: pricing_tier_oid
          in: query
          description: Pricing tier oid
          required: false
          type: integer
          format: int32
        -
          name: pricing_tier_name
          in: query
          description: Pricing tier name
          required: false
          type: string
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch customers that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the customers.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCustomers
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - customer
      summary: Insert a customer
      description: |
        Insert a customer on the UltraCart account.
      parameters:
        -
          name: customer
          in: body
          description: Customer to insert
          required: true
          schema:
            $ref: "#/definitions/Customer"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: insertCustomer
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/by_email/{email}:
    get:
      tags:
        - customer
      summary: Retrieve a customer by Email
      description: |
        Retrieves a single customer using the specified customer email address.
      parameters:
        -
          name: email
          in: path
          description: The email address of the customer to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCustomerByEmail
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/dataTables:
    post:
      tags:
        - customer
      summary: Retrieve customers for DataTables plugin
      description: |
        Retrieves customers from the account.  If no searches are specified, all customers will be returned.
      parameters:
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCustomersForDataTables
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/DataTablesServerSideResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/email_verify/get_token:
    post:
      tags:
        - customer
      summary: Create a token that can be used to verify a customer email address
      description: |
        Create a token that can be used to verify a customer email address.  The implementation of how a customer interacts with this token is left to the merchant.
      parameters:
        -
          name: token_request
          in: body
          description: Token request
          required: true
          schema:
            $ref: "#/definitions/EmailVerifyTokenRequest"
      operationId: getEmailVerificationToken
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailVerifyTokenResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/email_verify/validate_token:
    post:
      tags:
        - customer
      summary: Validate a token that can be used to verify a customer email address
      description: |
        Validate a token that can be used to verify a customer email address.  The implementation of how a customer interacts with this token is left to the merchant.
      parameters:
        -
          name: validation_request
          in: body
          description: Token validation request
          required: true
          schema:
            $ref: "#/definitions/EmailVerifyTokenValidateRequest"
      operationId: validateEmailVerificationToken
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailVerifyTokenValidateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/query:
    post:
      tags:
        - customer
      summary: Retrieve customers by query
      description: |
        Retrieves customers from the account.  If no parameters are specified, all customers will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: customer_query
          in: body
          description: Customer query
          required: true
          schema:
            $ref: "#/definitions/CustomerQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch customers that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the customers.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCustomersByQuery
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}:
    delete:
      tags:
        - customer
      summary: Delete a customer
      description: |
        Delete a customer on the UltraCart account.
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer_profile_oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteCustomer
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - customer
      summary: Retrieve a customer
      description: |
        Retrieves a single customer using the specified customer profile oid.
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer oid to retrieve.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCustomer
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - customer
      summary: Update a customer
      description: |
        Update a customer on the UltraCart account.
      parameters:
        -
          name: customer
          in: body
          description: Customer to update
          required: true
          schema:
            $ref: "#/definitions/Customer"
        -
          name: customer_profile_oid
          in: path
          description: The customer_profile_oid to update.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCustomer
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/adjust_cashback_balance:
    post:
      tags:
        - customer
      summary: Updates the cashback balance for a customer by updating the internal gift certificate used, creating the gift certificate if needed.
      description: |
        Updates the cashback balance for a customer by updating the internal gift certificate used, creating the gift certificate if needed.
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer profile oid
          required: true
          type: integer
          format: int32
        -
          name: adjust_internal_certificate_request
          in: body
          description: adjustInternalCertificateRequest
          required: true
          schema:
            $ref: "#/definitions/AdjustInternalCertificateRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: adjustInternalCertificate
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AdjustInternalCertificateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/email_lists:
    post:
      tags:
        - customer
      summary: Update email list subscriptions for a customer
      description: |
        Update email list subscriptions for a customer
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer profile oid
          required: true
          type: integer
          format: int32
        -
          name: list_changes
          in: body
          description: List changes
          required: true
          schema:
            $ref: "#/definitions/CustomerEmailListChanges"
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCustomerEmailLists
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerEmailListChanges"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/magic_link/{storefront_host_name}:
    put:
      tags:
        - customer
      summary: getMagicLink
      description: |
        Retrieves a magic link to allow a merchant to login as a customer.  This method is a PUT call intentionally.
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer_profile_oid of the customer.
          required: true
          type: integer
          format: int32
        -
          name: storefront_host_name
          in: path
          description: The storefront to log into.
          required: true
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: getMagicLink
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerMagicLinkResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/merge:
    put:
      tags:
        - customer
      summary: Merge customer into this customer
      description: |
        Merge customer into this customer.
      parameters:
        -
          name: customer
          in: body
          description: Customer to merge into this profile.
          required: true
          schema:
            $ref: "#/definitions/CustomerMergeRequest"
        -
          name: customer_profile_oid
          in: path
          description: The customer_profile_oid to update.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: mergeCustomer
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/store_credit:
    get:
      tags:
        - customer
      summary: Retrieve the customer store credit accumulated through loyalty programs
      description: |
        Retrieve the customer store credit accumulated through loyalty programs
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer oid to retrieve.
          required: true
          type: integer
          format: int32
      operationId: getCustomerStoreCredit
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerStoreCreditResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - customer
      summary: Adds store credit to a customer
      description: |
        Adds store credit to a customer
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer oid to credit.
          required: true
          type: integer
          format: int32
        -
          name: store_credit_request
          in: body
          description: Store credit to add
          required: true
          schema:
            $ref: "#/definitions/CustomerStoreCreditAddRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: addCustomerStoreCredit
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/wishlist:
    get:
      tags:
        - customer
      summary: Retrieve wishlist items for customer
      description: |
        Retrieve wishlist items for customer.
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer oid for this wishlist.
          required: true
          type: integer
          format: int32
      operationId: getCustomerWishList
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerWishListItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - customer
      summary: Insert a customer wishlist item
      description: |
        Insert a customer wishlist item
      parameters:
        -
          name: wishlist_item
          in: body
          description: Wishlist item to insert
          required: true
          schema:
            $ref: "#/definitions/CustomerWishListItem"
        -
          name: customer_profile_oid
          in: path
          description: The customer oid for this wishlist.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: insertWishListItem
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerWishListItem"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/customers/{customer_profile_oid}/wishlist/{customer_wishlist_item_oid}:
    delete:
      tags:
        - customer
      summary: Delete a customer wishlist item
      description: |
        Delete a customer wishlist item
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer oid for this wishlist.
          required: true
          type: integer
          format: int32
        -
          name: customer_wishlist_item_oid
          in: path
          description: The wishlist oid for this wishlist item to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteWishListItem
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - customer
      summary: Retrieve wishlist item for customer
      description: |
        Retrieve wishlist item for customer.
      parameters:
        -
          name: customer_profile_oid
          in: path
          description: The customer oid for this wishlist.
          required: true
          type: integer
          format: int32
        -
          name: customer_wishlist_item_oid
          in: path
          description: The wishlist oid for this wishlist item.
          required: true
          type: integer
          format: int32
      operationId: getCustomerWishListItem
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerWishListItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - customer
      summary: Update a customer wishlist item
      description: |
        Update a customer wishlist item
      parameters:
        -
          name: wishlist_item
          in: body
          description: Wishlist item to update
          required: true
          schema:
            $ref: "#/definitions/CustomerWishListItem"
        -
          name: customer_profile_oid
          in: path
          description: The customer oid for this wishlist.
          required: true
          type: integer
          format: int32
        -
          name: customer_wishlist_item_oid
          in: path
          description: The wishlist oid for this wishlist item.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateWishListItem
      security:
        - ultraCartOauth:
          - customer_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerWishListItem"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/editor_values:
    get:
      tags:
        - customer
      summary: Retrieve values needed for a customer profile editor
      description: |
        Retrieve values needed for a customer profile editor.
      operationId: getCustomerEditorValues
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomerEditorValues"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/email_lists:
    get:
      tags:
        - customer
      summary: Retrieve all email lists across all storefronts
      description: |
        Retrieve all email lists across all storefronts
      operationId: getCustomerEmailLists
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /customer/search:
    post:
      tags:
        - customer
      summary: Searches for all matching values (using POST)
      parameters:
        -
          name: lookup_request
          in: body
          description: LookupRequest
          required: true
          schema:
            $ref: "#/definitions/LookupRequest"
      operationId: searchCustomerProfileValues
      security:
        - ultraCartOauth:
          - customer_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LookupResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# FulfillmentRestApi
# ==========================================================================
  /fulfillment/distribution_centers:
    get:
      tags:
        - fulfillment
      summary: Retrieve distribution centers
      description: |
        Retrieves the distribution centers that this user has access to.
      operationId: getDistributionCenters
      security:
        - ultraCartOauth:
          - fulfillment_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/DistributionCentersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /fulfillment/distribution_centers/{distribution_center_code}/acknowledgements:
    put:
      tags:
        - fulfillment
      summary: Acknowledge receipt of orders.
      description: |
        Acknowledge receipt of orders so that they are removed from the fulfillment queue.  This method must be called after receiving and order (via webhook) or retrieving (via retrieve orders method).
      parameters:
        -
          name: distribution_center_code
          in: path
          description: Distribution center code
          required: true
          type: string
        -
          name: orderIds
          in: body
          description: Orders to acknowledge receipt of (limit 100)
          required: true
          schema:
            type: array
            items: 
              type: string
      operationId: acknowledgeOrders
      security:
        - ultraCartOauth:
          - fulfillment_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /fulfillment/distribution_centers/{distribution_center_code}/inventory:
    post:
      tags:
        - fulfillment
      summary: Update inventory
      description: |
        Update the inventory for items associated with this distribution center
      parameters:
        -
          name: distribution_center_code
          in: path
          description: Distribution center code
          required: true
          type: string
        -
          name: inventories
          in: body
          description: Inventory updates (limit 500)
          required: true
          schema:
            type: array
            items: 
              $ref: "#/definitions/FulfillmentInventory"
      operationId: updateInventory
      security:
        - ultraCartOauth:
          - fulfillment_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /fulfillment/distribution_centers/{distribution_center_code}/orders:
    get:
      tags:
        - fulfillment
      summary: Retrieve orders queued up for this distribution center.
      description: |
        Retrieves up to 100 orders that are queued up in this distribution center.  You must acknowledge them before additional new orders will be returned.  There is NO record chunking.  You'll get the same 100 records again and again until you acknowledge orders.  The orders that are returned contain only items for this distribution center and are by default completely expanded with billing, channel_partner, checkout, coupons, customer_profile, edi, gift, gift_certificate, internal, items, payment, shipping, summary, taxes.
      parameters:
        -
          name: distribution_center_code
          in: path
          description: Distribution center code
          required: true
          type: string
      operationId: getDistributionCenterOrders
      security:
        - ultraCartOauth:
          - fulfillment_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /fulfillment/distribution_centers/{distribution_center_code}/orders/{order_id}:
    get:
      tags:
        - fulfillment
      summary: Generate a packing slip for this order for the given distribution center.
      description: |
        The packing slip PDF that is returned is base 64 encoded
      parameters:
        -
          name: distribution_center_code
          in: path
          description: Distribution center code
          required: true
          type: string
        -
          name: order_id
          in: path
          description: Order ID
          required: true
          type: string
      operationId: generatePackingSlip
      security:
        - ultraCartOauth:
          - fulfillment_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderPackingSlipResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /fulfillment/distribution_centers/{distribution_center_code}/shipments:
    post:
      tags:
        - fulfillment
      summary: Mark orders as shipped
      description: |
        Store the tracking information and mark the order shipped for this distribution center.
      parameters:
        -
          name: distribution_center_code
          in: path
          description: Distribution center code
          required: true
          type: string
        -
          name: shipments
          in: body
          description: Orders to mark shipped
          required: true
          schema:
            type: array
            items: 
              $ref: "#/definitions/FulfillmentShipment"
      operationId: shipOrders
      security:
        - ultraCartOauth:
          - fulfillment_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# ItemRestApi
# ==========================================================================
  /item/digital_library:
    get:
      tags:
        - item
      summary: Retrieve digital items from the digital library which are digital files that may be attached to normal items
      description: |
        Retrieves a group of digital items (file information) from the account.  If no parameters are specified, all digital items will be returned.  Be aware that these are not normal items that can be added to a shopping cart. Rather, they are digital files that may be associated with normal items.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 2000)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch items that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      operationId: getDigitalItems
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemDigitalItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - item
      summary: Create a file within the digital library
      description: |
        Create a file within the digital library.  This does not create an item, but makes this digital file available and selectable as part (or all) of an item.
      parameters:
        -
          name: digital_item
          in: body
          description: Digital item to create
          required: true
          schema:
            $ref: "#/definitions/ItemDigitalItem"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertDigitalItem
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemDigitalItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/digital_library/by_external/{external_id}:
    get:
      tags:
        - item
      summary: Retrieves digital items from the digital library (which are digital files that may be attached to normal items) that having a matching external id
      description: |
        Retrieves digital items from the digital library (which are digital files that may be attached to normal items) that having a matching external id.  Be aware that these are not normal items that can be added to a shopping cart. Rather, they are digital files that may be associated with normal items.
      parameters:
        -
          name: external_id
          in: path
          description: The external id to match against.
          required: true
          type: string
      operationId: getDigitalItemsByExternalId
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemDigitalItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/digital_library/unassociated:
    get:
      tags:
        - item
      summary: Retrieve digital items from the digital library (which are digital files that may be attached to normal items) not yet associated with actual items
      description: |
        Retrieves a group of digital items (file information) from the account that are not yet associated with any actual items.  If no parameters are specified, all digital items will be returned.  Be aware that these are not normal items that can be added to a shopping cart. Rather, they are digital files that may be associated with normal items.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 2000)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch items that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      operationId: getUnassociatedDigitalItems
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemDigitalItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/digital_library/{digital_item_oid}:
    delete:
      tags:
        - item
      summary: Delete a digital item, which is a file within the digital library, not an actual merchant item
      description: |
        Delete a digital item on the UltraCart account.
      parameters:
        -
          name: digital_item_oid
          in: path
          description: The digital item oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteDigitalItem
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - item
      summary: Retrieve a digital item from the digital library, which are digital files that may be attached to normal items
      description: |
        Retrieves a digital item (file information) from the account.  Be aware that these are not normal items that can be added to a shopping cart. Rather, they are digital files that may be associated with normal items.
      parameters:
        -
          name: digital_item_oid
          in: path
          description: The digital item oid to retrieve.
          required: true
          type: integer
          format: int32
      operationId: getDigitalItem
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemDigitalItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - item
      summary: Updates a file within the digital library
      description: |
        Updates a file within the digital library.  This does not update an item, but updates a digital file available and selectable as part (or all) of an item.
      parameters:
        -
          name: digital_item_oid
          in: path
          description: The digital item oid to update.
          required: true
          type: integer
          format: int32
        -
          name: digital_item
          in: body
          description: Digital item to update
          required: true
          schema:
            $ref: "#/definitions/ItemDigitalItem"
      consumes:
        - application/json; charset=UTF-8
      operationId: updateDigitalItem
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemDigitalItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items:
    get:
      tags:
        - item
      summary: Retrieve items
      description: |
        Retrieves a group of items from the account.  If no parameters are specified, all items will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: parent_category_id
          in: query
          description: The parent category object id to retrieve items for.  Unspecified means all items on the account.  0 = root
          required: false
          type: integer
          format: int32
        -
          name: parent_category_path
          in: query
          description: The parent category path to retrieve items for.  Unspecified means all items on the account.  / = root
          required: false
          type: string
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 2000)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch items that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      operationId: getItems
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - item
      summary: Create an item
      description: |
        Create a new item on the UltraCart account.
      parameters:
        -
          name: item
          in: body
          description: Item to create
          required: true
          schema:
            $ref: "#/definitions/Item"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: insertItem
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/batch:
    put:
      tags:
        - item
      summary: Update multiple items
      description: |
        Update multiple item on the UltraCart account.
      parameters:
        -
          name: items_request
          in: body
          description: Items to update (synchronous maximum 20 / asynchronous maximum 100)
          required: true
          schema:
            $ref: "#/definitions/ItemsRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
        -
          name: _async
          in: query
          description: True if the operation should be run async.  No result returned
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: updateItems
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/inventory_snapshot:
    get:
      tags:
        - item
      summary: Retrieve a list of item inventories.  This method may be called once every 15 minutes.  More than that will result in a 429 response.
      description: |
        Retrieve a list of item inventories.  This method may be called once every 15 minutes.  More than that will result in a 429 response.
      operationId: getInventorySnapshot
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemInventorySnapshotResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/merchant_item_id/{merchant_item_id}:
    get:
      tags:
        - item
      summary: Retrieve an item by item id
      description: |
        Retrieves a single item using the specified item id.
      parameters:
        -
          name: merchant_item_id
          in: path
          description: The item id to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      operationId: getItemByMerchantItemId
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/{merchant_item_oid}:
    delete:
      tags:
        - item
      summary: Delete an item
      description: |
        Delete an item on the UltraCart account.
      parameters:
        -
          name: merchant_item_oid
          in: path
          description: The item oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteItem
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - item
      summary: Retrieve an item
      description: |
        Retrieves a single item using the specified item oid.
      parameters:
        -
          name: merchant_item_oid
          in: path
          description: The item oid to retrieve.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      operationId: getItem
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - item
      summary: Update an item
      description: |
        Update a new item on the UltraCart account.
      parameters:
        -
          name: item
          in: body
          description: Item to update
          required: true
          schema:
            $ref: "#/definitions/Item"
        -
          name: merchant_item_oid
          in: path
          description: The item oid to update.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: updateItem
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/{merchant_item_oid}/content/attributes:
    post:
      tags:
        - item
      summary: Upsert an item content attribute
      description: |
        Update an item content attribute, creating it new if it does not yet exist.
      parameters:
        -
          name: item_attribute
          in: body
          description: Item content attribute to upsert
          required: true
          schema:
            $ref: "#/definitions/ItemContentAttribute"
        -
          name: merchant_item_oid
          in: path
          description: The item oid to modify.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: insertUpdateItemContentAttribute
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/{merchant_item_oid}/reviews:
    get:
      tags:
        - item
      summary: Get reviews for an item
      description: |
        Retrieve item reviews.
      parameters:
        -
          name: merchant_item_oid
          in: path
          description: The item oid the review is associated with.
          required: true
          type: integer
          format: int32
      operationId: getReviews
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemReviewsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - item
      summary: Insert a review
      description: |
        Insert a item review.
      parameters:
        -
          name: review
          in: body
          description: Review to insert
          required: true
          schema:
            $ref: "#/definitions/ItemReview"
        -
          name: merchant_item_oid
          in: path
          description: The item oid the review is associated with.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: insertReview
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemReviewResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/items/{merchant_item_oid}/reviews/{review_oid}:
    delete:
      tags:
        - item
      summary: Delete a review
      description: |
        Delete an item review.
      parameters:
        -
          name: review_oid
          in: path
          description: The review oid to delete.
          required: true
          type: integer
          format: int32
        -
          name: merchant_item_oid
          in: path
          description: The item oid the review is associated with.
          required: true
          type: integer
          format: int32
      operationId: deleteReview
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - item
      summary: Get a review
      description: |
        Retrieve an item review.
      parameters:
        -
          name: review_oid
          in: path
          description: The review oid to retrieve.
          required: true
          type: integer
          format: int32
        -
          name: merchant_item_oid
          in: path
          description: The item oid the review is associated with.
          required: true
          type: integer
          format: int32
      operationId: getReview
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemReviewResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - item
      summary: Update a review
      description: |
        Update an item review.
      parameters:
        -
          name: review
          in: body
          description: Review to update
          required: true
          schema:
            $ref: "#/definitions/ItemReview"
        -
          name: review_oid
          in: path
          description: The review oid to update.
          required: true
          type: integer
          format: int32
        -
          name: merchant_item_oid
          in: path
          description: The item oid the review is associated with.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateReview
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemReviewResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/pricing_tiers:
    get:
      tags:
        - item
      summary: Retrieve pricing tiers
      description: |
        Retrieves the pricing tiers
      parameters:
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getPricingTiers
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/PricingTiersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /item/temp_multimedia:
    post:
      tags:
        - item
      summary: Upload an image to the temporary multimedia.
      description: |
        Uploads an image and returns back meta information about the image as well as the identifier needed for the item update.
      parameters:
        -
          name: file
          in: formData
          description: File to upload
          required: true
          type: file
      consumes:
        - multipart/form-data
      operationId: uploadTemporaryMultimedia
      security:
        - ultraCartOauth:
          - item_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TempMultimediaResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# WebhookRestApi
# ==========================================================================
  /webhook/webhooks:
    delete:
      tags:
        - webhook
      summary: Delete a webhook by URL
      description: |
        Delete a webhook based upon the URL on the webhook_url matching an existing webhook.
      parameters:
        -
          name: webhook
          in: body
          description: Webhook to delete
          required: true
          schema:
            $ref: "#/definitions/Webhook"
      consumes:
        - application/json; charset=UTF-8
      operationId: deleteWebhookByUrl
      security:
        - ultraCartOauth:
          - webhook_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhookResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - webhook
      summary: Retrieve webhooks
      description: |
        Retrieves the webhooks associated with this application.
      parameters:
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call.
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the webhooks.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      operationId: getWebhooks
      security:
        - ultraCartOauth:
          - webhook_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhooksResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - webhook
      summary: Add a webhook
      description: |
        Adds a new webhook on the account.  If you add a new webhook with the authentication_type set to basic, but do not specify the basic_username and basic_password, UltraCart will automatically generate random ones and return them.  This allows your application to have simpler logic on the setup of a secure webhook.
      parameters:
        -
          name: webhook
          in: body
          description: Webhook to create
          required: true
          schema:
            $ref: "#/definitions/Webhook"
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: insertWebhook
      security:
        - ultraCartOauth:
          - webhook_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhookResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /webhook/webhooks/{webhookOid}:
    delete:
      tags:
        - webhook
      summary: Delete a webhook
      description: |
        Delete a webhook on the UltraCart account.
      parameters:
        -
          name: webhookOid
          in: path
          description: The webhook oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteWebhook
      security:
        - ultraCartOauth:
          - webhook_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - webhook
      summary: Update a webhook
      description: |
        Update a webhook on the account
      parameters:
        -
          name: webhook
          in: body
          description: Webhook to update
          required: true
          schema:
            $ref: "#/definitions/Webhook"
        -
          name: webhookOid
          in: path
          description: The webhook oid to update.
          required: true
          type: integer
          format: int32
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: updateWebhook
      security:
        - ultraCartOauth:
          - webhook_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhookResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /webhook/webhooks/{webhookOid}/logs:
    get:
      tags:
        - webhook
      summary: Retrieve the log summaries
      description: |
        Retrieves the log summary information for a given webhook.  This is useful for displaying all the various logs that can be viewed.
      parameters:
        -
          name: webhookOid
          in: path
          description: The webhook oid to retrieve log summaries for.
          required: true
          type: integer
          format: int32
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call.
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch log summaries that have been delivered since this date/time.
          required: false
          type: string
          format: dateTime
      operationId: getWebhookLogSummaries
      security:
        - ultraCartOauth:
          - webhook_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhookLogSummariesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /webhook/webhooks/{webhookOid}/logs/{requestId}:
    get:
      tags:
        - webhook
      summary: Retrieve an individual log
      description: |
        Retrieves an individual log for a webhook given the webhook oid the request id.
      parameters:
        -
          name: webhookOid
          in: path
          description: The webhook oid that owns the log.
          required: true
          type: integer
          format: int32
        -
          name: requestId
          in: path
          description: The request id associated with the log to view.
          required: true
          type: string
      operationId: getWebhookLog
      security:
        - ultraCartOauth:
          - webhook_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhookLogResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /webhook/webhooks/{webhookOid}/reflow/{eventName}:
    post:
      tags:
        - webhook
      summary: Resend events to the webhook endpoint.
      description: |
        This method will resend events to the webhook endpoint.  This method can be used for example to send all the existing items on an account to a webhook.
      parameters:
        -
          name: webhookOid
          in: path
          description: The webhook oid that is receiving the reflowed events.
          required: true
          type: integer
          format: int32
        -
          name: eventName
          in: path
          description: The event to reflow.
          required: true
          type: string
      operationId: resendEvent
      security:
        - ultraCartOauth:
          - webhook_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WebhookReflowResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# WorkflowRestApi
# ==========================================================================
  /workflow/agent/auth:
    put:
      tags:
        - workflow
      summary: Get agent websocket authorization
      description: |
        Retrieve a JWT to authorize an agent to make a websocket connection.
      operationId: getWorkflowAgentWebsocketAuthorization
      security:
        - ultraCartOauth:
          - workflow_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowAgentAuthResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/assignment_groups:
    get:
      tags:
        - workflow
      summary: Retrieve a list of groups that workflow tasks can be assigned to
      description: |
        Retrieve a list of groups that workflow tasks can be assigned to
      parameters:
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
      operationId: getWorkflowAssignmentGroups
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowGroupsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/assignment_users:
    get:
      tags:
        - workflow
      summary: Retrieve a list of users that workflow tasks can be assigned to
      description: |
        Retrieve a list of users that workflow tasks can be assigned to
      parameters:
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
      operationId: getWorkflowAssignmentUsers
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowUsersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/me:
    get:
      tags:
        - workflow
      summary: Retrieve a user object for myself
      description: |
        Retrieve a user object for myself
      operationId: getWorkflowMe
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowUserResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks:
    post:
      tags:
        - workflow
      summary: Insert a workflow task
      description: |
        Insert a workflow task
      parameters:
        -
          name: workflow_task
          in: body
          description: workflow task
          required: true
          schema:
            $ref: "#/definitions/WorkflowTask"
      operationId: insertWorkflowTask
      security:
        - ultraCartOauth:
          - workflow_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTaskResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks/attachments/{extension}:
    get:
      tags:
        - workflow
      summary: Get a presigned workflow task attachment upload URL
      description: |
        Get a presigned workflow task attachment upload URL
      parameters:
        -
          name: extension
          in: path
          required: true
          type: string
      operationId: getWorkflowTaskAttachmentUploadUrl
      security:
        - ultraCartOauth:
          - workflow_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowAttachmentUploadUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks/by/{object_type}/{object_id}:
    get:
      tags:
        - workflow
      summary: Retrieve a workflow task by object type and id
      description: |
        Retrieve a workflow task by object type and id
      parameters:
        -
          name: object_type
          in: path
          required: true
          type: string
        -
          name: object_id
          in: path
          required: true
          type: string
      operationId: getWorkflowTaskByObjectType
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTasksResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks/open_count:
    get:
      tags:
        - workflow
      summary: Retrieve workflow task open count
      description: |
        Retrieve workflow task open count
      operationId: getWorkflowTaskOpenCount
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTaskOpenCountResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks/search:
    post:
      tags:
        - workflow
      summary: Search workflow tasks
      description: |
        Retrieves a set of workflow tasks from the account based on a query object.
      parameters:
        -
          name: workflow_tasks_query
          in: body
          description: Workflow tasks query
          required: true
          schema:
            $ref: "#/definitions/WorkflowTasksRequest"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 500)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: getWorkflowTasks
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTasksResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks/tags:
    get:
      tags:
        - workflow
      summary: Get a list of existing workflow task tags
      description: |
        Retrieves a unique list of all the existing workflow task tags.
      operationId: getWorkflowTaskTags
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTaskTagsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /workflow/tasks/{task_uuid}:
    get:
      tags:
        - workflow
      summary: Retrieve a workflow task
      description: |
        Retrieve a workflow task
      parameters:
        -
          name: task_uuid
          in: path
          required: true
          type: string
      operationId: getWorkflowTask
      security:
        - ultraCartOauth:
          - workflow_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTaskResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - workflow
      summary: Update a workflow task
      description: |
        Update a workflow task
      parameters:
        -
          name: task_uuid
          in: path
          required: true
          type: string
        -
          name: workflow_task
          in: body
          description: Workflow task
          required: true
          schema:
            $ref: "#/definitions/WorkflowTask"
      operationId: updateWorkflowTask
      security:
        - ultraCartOauth:
          - workflow_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/WorkflowTaskResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# StorefrontRestApiV2
# ==========================================================================
  /storefront:
    get:
      tags:
        - storefront
      summary: Get storefronts (internal use only for security reasons)
      operationId: getStoreFronts
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/StoreFrontsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library:
    post:
      tags:
        - storefront
      summary: Add to library
      parameters:
        -
          name: add_library_request
          in: body
          description: New library item request
          required: true
          schema:
            $ref: "#/definitions/AddLibraryItemRequest"
      operationId: addToLibrary
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/apply:
    post:
      tags:
        - storefront
      summary: Apply library item to storefront.
      parameters:
        -
          name: apply_library_request
          in: body
          description: New library item
          required: true
          schema:
            $ref: "#/definitions/ApplyLibraryItemRequest"
      operationId: applyToStoreFront
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ApplyLibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/filter_values:
    get:
      tags:
        - storefront
      summary: Get library values used to populate drop down boxes for filtering.
      operationId: getLibraryFilterValues
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryFilterValuesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/search:
    post:
      tags:
        - storefront
      summary: Retrieve library items
      description: |
        Retrieves a library items based on a query object.  If no parameters are specified, the API call will default to the merchant id only.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: item_query
          in: body
          description: Item query
          required: true
          schema:
            $ref: "#/definitions/LibraryItemQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 10000)
          required: false
          default: 10000
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the library items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: searchLibraryItems
      security:
        - ultraCartOauth:
          - affiliate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/search_published:
    post:
      tags:
        - storefront
      summary: Retrieve library items
      description: |
        Retrieves a library items based on a query object.  If no parameters are specified, the API call will default to the merchant id only.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: item_query
          in: body
          description: Item query
          required: true
          schema:
            $ref: "#/definitions/LibraryItemQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 10000)
          required: false
          default: 10000
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the library items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: searchPublishedItems
      security:
        - ultraCartOauth:
          - affiliate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/search_review:
    post:
      tags:
        - storefront
      summary: Retrieve library items needing review or rejected
      description: |
        Retrieves a library items based on a query object.  If no parameters are specified, the API call will default to the merchant id only.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: item_query
          in: body
          description: Item query
          required: true
          schema:
            $ref: "#/definitions/LibraryItemQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 10000)
          required: false
          default: 10000
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the library items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: searchReviewItems
      security:
        - ultraCartOauth:
          - affiliate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/search_shared:
    post:
      tags:
        - storefront
      summary: Retrieve library items
      description: |
        Retrieves a library items based on a query object.  If no parameters are specified, the API call will default to the merchant id only.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: item_query
          in: body
          description: Item query
          required: true
          schema:
            $ref: "#/definitions/LibraryItemQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 10000)
          required: false
          default: 10000
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the library items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: searchSharedItems
      security:
        - ultraCartOauth:
          - affiliate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/{library_item_oid}:
    delete:
      tags:
        - storefront
      summary: Delete library item
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteLibraryItem
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get library item.
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getLibraryItem
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update library item. Note that only certain fields may be updated via this method.
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: library_item
          in: body
          description: Library item
          required: true
          schema:
            $ref: "#/definitions/LibraryItem"
      operationId: updateLibraryItem
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/{library_item_oid}/duplicate:
    post:
      tags:
        - storefront
      summary: Duplicate library item.
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: duplicateLibraryItem
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/{library_item_oid}/publish:
    post:
      tags:
        - storefront
      summary: Publish library item.
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: publish_library_request
          in: body
          description: Publish library item request
          required: true
          schema:
            $ref: "#/definitions/PublishLibraryItemRequest"
      operationId: publishLibraryItem
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/{library_item_oid}/published_versions:
    delete:
      tags:
        - storefront
      summary: Delete all published versions for a library item, including anything in review.
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteLibraryItemPublishedVersions
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get all published versions for a library item.
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getLibraryItemPublishedVersions
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/code_library/{library_item_oid}/purchase:
    post:
      tags:
        - storefront
      summary: Purchase public library item, which creates a copy of the item in your personal code library
      parameters:
        -
          name: library_item_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: storefront_oid
          in: query
          required: false
          type: integer
          format: int32
      operationId: purchaseLibraryItem
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LibraryItemResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/email/global_settings:
    get:
      tags:
        - storefront
      summary: Get email globalsettings
      operationId: getEmailGlobalSettings
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailGlobalSettingsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Update email global settings
      parameters:
        -
          name: global_settings
          in: body
          description: global settings request
          required: true
          schema:
            $ref: "#/definitions/EmailGlobalSettings"
      operationId: updateEmailGlobalSettings
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailGlobalSettingsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/email/sending_domain/{domain}:
    get:
      tags:
        - storefront
      summary: Get email sending domain
      parameters:
        -
          name: domain
          in: path
          required: true
          type: string
      operationId: getEmailSendingDomain
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSendingDomainResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/email/sending_domains:
    get:
      tags:
        - storefront
      summary: Get email sending domains
      operationId: getEmailSendingDomains
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSendingDomainsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Create email sending domain for various providers
      parameters:
        -
          name: email_domain
          in: body
          description: EmailDomain
          required: true
          schema:
            $ref: "#/definitions/EmailDomain"
      operationId: createEmailSendingDomain2
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSendingDomainResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/email/sending_domains/{domain}:
    delete:
      tags:
        - storefront
      summary: delete email campaign
      parameters:
        -
          name: domain
          in: path
          required: true
          type: string
      operationId: deleteEmailSendingDomain
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email sending domain
      parameters:
        -
          name: domain
          in: path
          required: true
          type: string
        -
          name: email_domain
          in: body
          description: EmailDomain
          required: true
          schema:
            $ref: "#/definitions/EmailDomain"
      operationId: updateEmailSendingDomain
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSendingDomainResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/email/sending_domains/{domain}/create:
    post:
      tags:
        - storefront
      summary: Create email campaign
      parameters:
        -
          name: domain
          in: path
          required: true
          type: string
      operationId: createEmailSendingDomain
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSendingDomainResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/email/sending_domains/{domain}/status:
    post:
      tags:
        - storefront
      summary: Get email sending domain status
      parameters:
        -
          name: domain
          in: path
          required: true
          type: string
      operationId: getEmailSendingDomainStatus
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSendingDomainResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/pricing_tiers:
    get:
      tags:
        - storefront
      summary: Retrieve pricing tiers
      description: |
        Retrieves the pricing tiers
      parameters:
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getStoreFrontPricingTiers
      security:
        - ultraCartOauth:
          - item_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/PricingTiersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/ruler/validate:
    post:
      tags:
        - storefront
      summary: Validate AWS Event Ruler
      parameters:
        -
          name: ruler_validate_request
          in: body
          description: Ruler Validate Request
          required: true
          schema:
            $ref: "#/definitions/RulerValidationRequest"
      operationId: validateRuler
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/RulerValidationResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/search:
    get:
      tags:
        - storefront
      summary: Searches for all matching values
      parameters:
        -
          name: category
          in: query
          required: false
          type: string
        -
          name: matches
          in: query
          required: false
          type: string
        -
          name: storefront_oid
          in: query
          required: false
          type: string
        -
          name: max_hits
          in: query
          required: false
          type: integer
          format: int32
        -
          name: subcategory
          in: query
          required: false
          type: string
      operationId: search
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LookupResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Searches for all matching values (using POST)
      parameters:
        -
          name: lookup_request
          in: body
          description: LookupRequest
          required: true
          schema:
            $ref: "#/definitions/LookupRequest"
      operationId: search2
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/LookupResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/thumbnailParameters:
    post:
      tags:
        - storefront
      summary: Get thumbnail parameters
      parameters:
        -
          name: thumbnail_parameters
          in: body
          description: Thumbnail Parameters
          required: true
          schema:
            $ref: "#/definitions/ThumbnailParametersRequest"
      operationId: getThumbnailParameters
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ThumbnailParametersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/twilio/accounts:
    get:
      tags:
        - storefront
      summary: Get all Twilio accounts
      operationId: getTwilioAccounts
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TwiliosResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Create Twilio account
      parameters:
        -
          name: twilio
          in: body
          description: Twilio
          required: true
          schema:
            $ref: "#/definitions/Twilio"
      operationId: createTwilioAccount
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TwilioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/twilio/accounts/{esp_twilio_uuid}:
    delete:
      tags:
        - storefront
      summary: delete Twilio account
      parameters:
        -
          name: esp_twilio_uuid
          in: path
          required: true
          type: string
      operationId: deleteTwilioAccount
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get Twilio account
      parameters:
        -
          name: esp_twilio_uuid
          in: path
          required: true
          type: string
      operationId: getTwilioAccount
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TwilioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update Twilio account
      parameters:
        -
          name: esp_twilio_uuid
          in: path
          required: true
          type: string
        -
          name: twilio
          in: body
          description: Twilio
          required: true
          schema:
            $ref: "#/definitions/Twilio"
      operationId: updateTwilioAccount
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TwilioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{id}/fs/dir:
    get:
      tags:
        - storefront
      summary: Get file manager directory
      parameters:
        -
          name: id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: path
          in: query
          required: false
          type: string
        -
          name: storefront_fs_directory_oid
          in: query
          required: false
          type: integer
          format: int32
        -
          name: storefront_theme_oid
          in: query
          required: false
          type: integer
          format: int32
      operationId: getFsDirectory
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/FileManagerPageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Create file manager directory
      parameters:
        -
          name: id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: name
          in: query
          required: false
          type: string
        -
          name: parent_storefront_fs_directory_oid
          in: query
          required: false
          type: integer
          format: int32
      operationId: createFsDirectory
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/FileManagerPageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{id}/fs/file:
    delete:
      tags:
        - storefront
      summary: Delete file manager directory
      parameters:
        -
          name: id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: parent_storefront_fs_directory_oid
          in: query
          required: false
          type: integer
          format: int32
        -
          name: storefront_fs_file_oid
          in: query
          required: false
          type: integer
          format: int32
      operationId: deleteFsFile
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/FileManagerPageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{id}/fs/upload:
    post:
      tags:
        - storefront
      summary: This is the last step in uploading a file after 1) calling getUploadFsFileUrl and 2) uploading a file to the provided url, then finally 3) calling this method and providing the key to trigger the server into reading the S3 bucket and retrieving the file.
      parameters:
        -
          name: id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: upload_request
          in: body
          description: UploadRequest
          required: true
          schema:
            $ref: "#/definitions/FileManagerUploadRequest"
      operationId: uploadFsFile
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{id}/fs/upload_url/{extension}:
    get:
      tags:
        - storefront
      summary: Retrieves a S3 url where a file may be uploaded. Once uploaded, use uploadFsFile to trigger the server into reading the S3 bucket and retrieving the file.
      parameters:
        -
          name: id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: extension
          in: path
          required: true
          type: string
      operationId: getUploadFsFileUrl
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/FileManagerUploadUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/editor_token:
    get:
      tags:
        - storefront
      summary: Gets editor token
      description: |
        Fetches a temporary authentication token for the editor
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEditorToken
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailEditorTokenResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/baseTemplates:
    get:
      tags:
        - storefront
      summary: Get email communication base templates
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailBaseTemplates
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailBaseTemplateListResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaign_folders:
    get:
      tags:
        - storefront
      summary: Get email campaign folders
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailCampaignFolders
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignFoldersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email campaign folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_folder
          in: body
          description: Email campaign folder
          required: true
          schema:
            $ref: "#/definitions/EmailCampaignFolder"
      operationId: insertEmailCampaignFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaign_folders/{email_campaign_folder_uuid}:
    delete:
      tags:
        - storefront
      summary: Delete email campaignFolder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_folder_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailCampaignFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get email campaign folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_folder_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCampaignFolder
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email campaign folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_folder_uuid
          in: path
          required: true
          type: string
        -
          name: email_campaign_folder
          in: body
          description: Email campaign folder
          required: true
          schema:
            $ref: "#/definitions/EmailCampaignFolder"
      operationId: updateEmailCampaignFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaigns:
    get:
      tags:
        - storefront
      summary: Get email campaigns
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailCampaigns
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email campaign
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign
          in: body
          description: Email campaign
          required: true
          schema:
            $ref: "#/definitions/EmailCampaign"
      operationId: insertEmailCampaign
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaigns/{email_campaign_uuid}:
    get:
      tags:
        - storefront
      summary: Get email campaign
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCampaign
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email campaign
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_uuid
          in: path
          required: true
          type: string
        -
          name: email_campaign
          in: body
          description: Email campaign
          required: true
          schema:
            $ref: "#/definitions/EmailCampaign"
      operationId: updateEmailCampaign
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaigns/{email_campaign_uuid}/clone:
    post:
      tags:
        - storefront
      summary: Clone email campaign
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_uuid
          in: path
          required: true
          type: string
        -
          name: target_storefront_oid
          in: query
          required: false
          type: integer
          format: int32
      operationId: cloneEmailCampaign
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaigns/{email_campaign_uuid}/screenshots:
    get:
      tags:
        - storefront
      summary: Get email campaign screenshots
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCampaignScreenshots
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenshotsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaigns/{email_campaign_uuid}/start:
    put:
      tags:
        - storefront
      summary: Start email campaign
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_campaign_uuid
          in: path
          required: true
          type: string
      operationId: startEmailCampaign
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/campaignsWithStats/{stat_days}:
    get:
      tags:
        - storefront
      summary: Get email campaigns with stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: stat_days
          in: path
          required: true
          type: string
      operationId: getEmailCampaignsWithStats
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCampaignsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs:
    get:
      tags:
        - storefront
      summary: Get email commseqs
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailCommseqs
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email commseq
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_commseq
          in: body
          description: Email commseq
          required: true
          schema:
            $ref: "#/definitions/EmailCommseq"
      operationId: insertEmailCommseq
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/editorValues:
    get:
      tags:
        - storefront
      summary: Get email merchant specific editor values
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailCommseqEditorValues
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailEditorValuesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}:
    get:
      tags:
        - storefront
      summary: Get email commseq
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCommseq
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email commseq
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq
          in: body
          description: Email commseq
          required: true
          schema:
            $ref: "#/definitions/EmailCommseq"
      operationId: updateEmailCommseq
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/emailStats:
    post:
      tags:
        - storefront
      summary: Get email communication sequence emails stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: statsRequest
          in: body
          description: StatsRequest
          required: true
          schema:
            $ref: "#/definitions/EmailStatSummaryRequest"
      operationId: getEmailCommseqEmailStats
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailStatSummaryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/postcardStats:
    post:
      tags:
        - storefront
      summary: Get email communication sequence postcard stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: statsRequest
          in: body
          description: StatsRequest
          required: true
          schema:
            $ref: "#/definitions/EmailStatPostcardSummaryRequest"
      operationId: getEmailCommseqPostcardStats
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailStatPostcardSummaryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/rate_limiters:
    delete:
      tags:
        - storefront
      summary: Reset email commseq rate limiters (only callable by UltraCart Support)
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
      operationId: resetEmailCommseqRateLimiters
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get email commseq rate limiters
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCommseqRateLimiters
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailRateLimitersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/smsStats:
    post:
      tags:
        - storefront
      summary: Get email communication sequence sms stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: statsRequest
          in: body
          description: StatsRequest
          required: true
          schema:
            $ref: "#/definitions/EmailStatSmsSummaryRequest"
      operationId: getEmailCommseqSmsStats
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailStatSmsSummaryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/stat:
    delete:
      tags:
        - storefront
      summary: Delete communication sequence stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailCommseqStat
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get communication sequence stats overall
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCommseqStatOverall
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqStatResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/stepStats:
    post:
      tags:
        - storefront
      summary: Get email communication sequence step stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: statsRequest
          in: body
          description: StatsRequest
          required: true
          schema:
            $ref: "#/definitions/EmailStepStatRequest"
      operationId: getEmailCommseqStepStats
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailStepStatResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/steps/{commseq_step_uuid}/emails/{commseq_email_uuid}/clicks:
    get:
      tags:
        - storefront
      summary: Get email email clicks
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_step_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
        -
          name: days
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailEmailClicks
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailClicksResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/steps/{commseq_step_uuid}/emails/{commseq_email_uuid}/orders:
    get:
      tags:
        - storefront
      summary: Get email email orders
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_step_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
        -
          name: days
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailEmailOrders
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailOrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/steps/{commseq_step_uuid}/logs:
    get:
      tags:
        - storefront
      summary: Get email dispatch logs
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_step_uuid
          in: path
          required: true
          type: string
      operationId: getEmailDispatchLogs
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqStepLogsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/steps/{commseq_step_uuid}/sms/orders:
    get:
      tags:
        - storefront
      summary: Get email sms orders
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_step_uuid
          in: path
          required: true
          type: string
        -
          name: days
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailSmsOrders
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSmsOrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/test:
    post:
      tags:
        - storefront
      summary: Sequence test
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_sequence_test_request
          in: body
          description: Commseq test request
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqSequenceTestRequest"
      operationId: sequenceTest
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqSequenceTestResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/waiting:
    post:
      tags:
        - storefront
      summary: Get email communication sequence customers waiting at each requested step
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: waitingRequest
          in: body
          description: WaitingRequest
          required: true
          schema:
            $ref: "#/definitions/EmailStepWaitingRequest"
      operationId: getEmailCommseqStepWaiting
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailStepWaitingResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/waiting/{commseq_step_uuid}:
    post:
      tags:
        - storefront
      summary: Release email communication sequence customers waiting at the specified step
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_step_uuid
          in: path
          required: true
          type: string
      operationId: releaseEmailCommseqStepWaiting
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/webhookEditorValues:
    get:
      tags:
        - storefront
      summary: Get email webhook editor values
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCommseqWebhookEditorValues
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailWebhookEditorValuesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/countries:
    get:
      tags:
        - storefront
      summary: Get countries
      description: |
        Obtain a list of all the countries
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getCountries
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CountriesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/customers:
    get:
      tags:
        - storefront
      summary: Get email customers
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: pageNumber
          in: query
          required: false
          type: integer
          format: int32
        -
          name: pageSize
          in: query
          required: false
          type: integer
          format: int32
        -
          name: searchEmailPrefix
          in: query
          required: false
          type: string
      operationId: getEmailCustomers
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/customers/{email_customer_uuid}:
    put:
      tags:
        - storefront
      summary: Update email customer
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_customer_uuid
          in: path
          required: true
          type: string
        -
          name: email_customer
          in: body
          description: Email customer
          required: true
          schema:
            $ref: "#/definitions/EmailCustomer"
      operationId: updateEmailCustomer
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/customers/{email_customer_uuid}/editor_url:
    get:
      tags:
        - storefront
      summary: Get customers editor URL
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_customer_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCustomerEditorUrl
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCustomerEditorUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/dashboard_activity:
    get:
      tags:
        - storefront
      summary: Get email dashboard activity
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: last_records
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailDashboardActivity
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailDashboardActivityResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/dashboard_stats:
    get:
      tags:
        - storefront
      summary: Get dashboard stats
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: days
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailDashboardStats
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailDashboardStatsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/emails:
    get:
      tags:
        - storefront
      summary: Get email emails
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailEmails
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_commseq_email
          in: body
          description: Email email
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqEmail"
      operationId: insertEmailEmail
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/emails/multiple:
    post:
      tags:
        - storefront
      summary: Get email emails multiple
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_commseq_emails_request
          in: body
          description: Request of email uuids
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqEmailsRequest"
      operationId: getEmailEmailsMultiple
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/emails/{commseq_email_uuid}:
    delete:
      tags:
        - storefront
      summary: Delete email email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailEmail
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get email email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
      operationId: getEmailEmail
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_email
          in: body
          description: Email commseq email
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqEmail"
      operationId: updateEmailEmail
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/emails/{commseq_email_uuid}/orders/{order_id}/editor_url:
    get:
      tags:
        - storefront
      summary: Get email order customer editor url
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
        -
          name: order_id
          in: path
          required: true
          type: string
      operationId: getEmailEmailCustomerEditorUrl
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCustomerEditorUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/emails/{commseq_email_uuid}/review:
    post:
      tags:
        - storefront
      summary: Request a review of an email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_email_review_request
          in: body
          description: Email commseq email review request
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqEmailSendTestRequest"
      operationId: review
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailSendTestResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/emails/{commseq_email_uuid}/test:
    post:
      tags:
        - storefront
      summary: Send email test
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_email_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_email_test_request
          in: body
          description: Email commseq email test request
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqEmailSendTestRequest"
      operationId: sendEmailTest
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqEmailSendTestResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flow_folders:
    get:
      tags:
        - storefront
      summary: Get email flow folders
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailFlowFolders
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowFoldersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email flow folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_folder
          in: body
          description: Email flow folder
          required: true
          schema:
            $ref: "#/definitions/EmailFlowFolder"
      operationId: insertEmailFlowFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flow_folders/{email_flow_folder_uuid}:
    delete:
      tags:
        - storefront
      summary: Delete email flowFolder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_folder_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailFlowFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get email flow folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_folder_uuid
          in: path
          required: true
          type: string
      operationId: getEmailFlowFolder
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email flow folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_folder_uuid
          in: path
          required: true
          type: string
        -
          name: email_flow_folder
          in: body
          description: Email flow folder
          required: true
          schema:
            $ref: "#/definitions/EmailFlowFolder"
      operationId: updateEmailFlowFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flows:
    get:
      tags:
        - storefront
      summary: Get email flows
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailFlows
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email flow
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow
          in: body
          description: Email flow
          required: true
          schema:
            $ref: "#/definitions/EmailFlow"
      operationId: insertEmailFlow
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flows/{email_flow_uuid}:
    get:
      tags:
        - storefront
      summary: Get email flow
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_uuid
          in: path
          required: true
          type: string
      operationId: getEmailFlow
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email flow
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_uuid
          in: path
          required: true
          type: string
        -
          name: email_flow
          in: body
          description: Email flow
          required: true
          schema:
            $ref: "#/definitions/EmailFlow"
      operationId: updateEmailFlow
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flows/{email_flow_uuid}/backfill:
    post:
      tags:
        - storefront
      summary: Back populate email flow
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_uuid
          in: path
          required: true
          type: string
        -
          name: back_populate_request
          in: body
          description: The request to back populate
          required: true
          schema:
            $ref: "#/definitions/EmailFlowBackPopulateRequest"
      operationId: backPopulateEmailFlow
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowBackPopulateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flows/{email_flow_uuid}/clone:
    post:
      tags:
        - storefront
      summary: Clone email flow
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_uuid
          in: path
          required: true
          type: string
        -
          name: target_storefront_oid
          in: query
          required: false
          type: integer
          format: int32
      operationId: cloneEmailFlow
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailFlowResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/flows/{email_flow_uuid}/screenshots:
    get:
      tags:
        - storefront
      summary: Get email flow screenshots
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_flow_uuid
          in: path
          required: true
          type: string
      operationId: getEmailFlowScreenshots
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenshotsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/geocode:
    post:
      tags:
        - storefront
      summary: Obtain lat/long for an address
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: geocode_request
          in: body
          description: geocode request
          required: true
          schema:
            $ref: "#/definitions/GeocodeRequest"
      operationId: geocodeAddress
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GeocodeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/globalUnsubscribe:
    post:
      tags:
        - storefront
      summary: Globally unsubscribe a customer
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: unsubscribe
          in: body
          description: Unsubscribe
          required: true
          schema:
            $ref: "#/definitions/EmailGlobalUnsubscribeRequest"
      operationId: globalUnsubscribe
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailGlobalUnsubscribeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/histogram/property_names:
    get:
      tags:
        - storefront
      summary: Get histogram property names
      description: |
        Obtain a list of property names for a given property type
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: property_type
          in: query
          required: false
          type: string
      operationId: getHistogramPropertyNames
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailHistogramPropertyNamesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/histogram/property_values:
    get:
      tags:
        - storefront
      summary: Get histogram property values
      description: |
        Obtain a list of property values for a given property name and type
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: property_name
          in: query
          required: false
          type: string
        -
          name: property_type
          in: query
          required: false
          type: string
        -
          name: limit
          in: query
          required: false
          type: integer
          format: int32
      operationId: getHistogramPropertyValues
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailHistogramPropertyValuesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/list_segment_folders:
    get:
      tags:
        - storefront
      summary: Get email campaign folders
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailListSegmentFolders
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListSegmentFoldersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email campaign folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_segment_folder
          in: body
          description: Email campaign folder
          required: true
          schema:
            $ref: "#/definitions/EmailListSegmentFolder"
      operationId: insertEmailListSegmentFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListSegmentFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/list_segment_folders/{email_list_segment_folder_uuid}:
    delete:
      tags:
        - storefront
      summary: Delete email ListSegmentFolder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_segment_folder_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailListSegmentFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get email campaign folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_segment_folder_uuid
          in: path
          required: true
          type: string
      operationId: getEmailListSegmentFolder
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListSegmentFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email campaign folder
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_segment_folder_uuid
          in: path
          required: true
          type: string
        -
          name: email_list_segment_folder
          in: body
          description: Email campaign folder
          required: true
          schema:
            $ref: "#/definitions/EmailListSegmentFolder"
      operationId: updateEmailListSegmentFolder
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListSegmentFolderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists:
    get:
      tags:
        - storefront
      summary: Get email lists
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailLists
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email list
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list
          in: body
          description: Email list
          required: true
          schema:
            $ref: "#/definitions/EmailList"
      operationId: insertEmailList
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}:
    get:
      tags:
        - storefront
      summary: Get email list
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
      operationId: getEmailList
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email list
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
        -
          name: email_list
          in: body
          description: Email list
          required: true
          schema:
            $ref: "#/definitions/EmailList"
      operationId: updateEmailList
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}/archive:
    post:
      tags:
        - storefront
      summary: Archive email list
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
      operationId: archiveEmailList
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListArchiveResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}/customers:
    get:
      tags:
        - storefront
      summary: Get email list customers
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
        -
          name: pageNumber
          in: query
          required: false
          type: integer
          format: int32
        -
          name: pageSize
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailListCustomers
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListCustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}/customers/{email_customer_uuid}:
    delete:
      tags:
        - storefront
      summary: Delete email list customer
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
        -
          name: email_customer_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailListCustomer
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}/customers/{email_customer_uuid}/editor_url:
    get:
      tags:
        - storefront
      summary: Get email list customer editor url
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
        -
          name: email_customer_uuid
          in: path
          required: true
          type: string
      operationId: getEmailListCustomerEditorUrl
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCustomerEditorUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}/search:
    get:
      tags:
        - storefront
      summary: Search email list customers
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
        -
          name: startsWith
          in: query
          required: false
          type: string
      operationId: searchEmailListCustomers
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListCustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/lists/{email_list_uuid}/subscribe:
    post:
      tags:
        - storefront
      summary: Subscribe customers to email list
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_list_uuid
          in: path
          required: true
          type: string
        -
          name: customers
          in: body
          description: Customers
          required: true
          schema:
            type: array
            items: 
              $ref: "#/definitions/EmailCustomer"
      operationId: subscribeToEmailList
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailListSubscribeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/performance:
    get:
      tags:
        - storefront
      summary: Get email performance
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailPerformance
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailPerformanceResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/plan:
    get:
      tags:
        - storefront
      summary: Get email plan
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailPlan
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailPlanResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Update email plan
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: settings
          in: body
          description: plan request
          required: true
          schema:
            $ref: "#/definitions/EmailPlan"
      operationId: updateEmailPlan
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailPlanResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/postcards:
    get:
      tags:
        - storefront
      summary: Get email postcards
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailPostcards
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqPostcardsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email postcard
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_commseq_postcard
          in: body
          description: Email postcard
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqPostcard"
      operationId: insertEmailPostcard
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqPostcardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/postcards/multiple:
    post:
      tags:
        - storefront
      summary: Get email postcards multiple
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_commseq_postcards_request
          in: body
          description: Request of postcard uuids
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqPostcardsRequest"
      operationId: getEmailPostcardsMultiple
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqPostcardsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/postcards/{commseq_postcard_uuid}:
    delete:
      tags:
        - storefront
      summary: Delete email postcard
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_postcard_uuid
          in: path
          required: true
          type: string
      operationId: deleteEmailPostcard
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get email postcard
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_postcard_uuid
          in: path
          required: true
          type: string
      operationId: getEmailPostcard
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqPostcardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email postcard
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_postcard_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_postcard
          in: body
          description: Email commseq postcard
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqPostcard"
      operationId: updateEmailPostcard
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqPostcardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/postcards/{commseq_postcard_uuid}/test:
    post:
      tags:
        - storefront
      summary: Send postcard test
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_postcard_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_postcard_test_request
          in: body
          description: Email commseq email test request
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqPostcardSendTestRequest"
      operationId: sendPostcardTest
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqPostcardSendTestResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/postcards/{commseq_postcard_uuid}/tracking:
    get:
      tags:
        - storefront
      summary: Get email communication postcard tracking
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_postcard_uuid
          in: path
          required: true
          type: string
      operationId: getEmailCommseqPostcardTracking
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailPostcardTrackingResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments:
    get:
      tags:
        - storefront
      summary: Get email segments
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailSegments
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment
          in: body
          description: Email segment
          required: true
          schema:
            $ref: "#/definitions/EmailSegment"
      operationId: insertEmailSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}:
    get:
      tags:
        - storefront
      summary: Get email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
      operationId: getEmailSegment
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
        -
          name: email_segment
          in: body
          description: Email segment
          required: true
          schema:
            $ref: "#/definitions/EmailSegment"
      operationId: updateEmailSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/archive:
    post:
      tags:
        - storefront
      summary: Archive email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
      operationId: archiveEmailSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentArchiveResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/customers:
    get:
      tags:
        - storefront
      summary: Get email segment customers
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
        -
          name: pageNumber
          in: query
          required: false
          type: integer
          format: int32
        -
          name: pageSize
          in: query
          required: false
          type: integer
          format: int32
      operationId: getEmailSegmentCustomers
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentCustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/customers/{email_customer_uuid}/editor_url:
    get:
      tags:
        - storefront
      summary: Get email segment customers editor URL
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
        -
          name: email_customer_uuid
          in: path
          required: true
          type: string
      operationId: getEmailSegmentCustomerEditorUrl
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCustomerEditorUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/downloadPrepare:
    post:
      tags:
        - storefront
      summary: Prepare download of email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
      operationId: prepareDownloadEmailSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentDownloadPrepareResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/downloadPrepare/{email_segment_rebuild_uuid}:
    post:
      tags:
        - storefront
      summary: Check download of email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
        -
          name: email_segment_rebuild_uuid
          in: path
          required: true
          type: string
      operationId: checkDownloadEmailSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentDownloadPrepareResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/search:
    get:
      tags:
        - storefront
      summary: Search email segment customers
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
        -
          name: startsWith
          in: query
          required: false
          type: string
      operationId: searchEmailSegmentCustomers
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSegmentCustomersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/segments/{email_segment_uuid}/sunset:
    put:
      tags:
        - storefront
      summary: Sunset email segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_segment_uuid
          in: path
          required: true
          type: string
      operationId: sunsetEmailSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/settings:
    get:
      tags:
        - storefront
      summary: Get email settings
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailSettings
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSettingsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Update email settings
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: settings
          in: body
          description: settings request
          required: true
          schema:
            $ref: "#/definitions/EmailSettings"
      operationId: updateEmailSettings
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailSettingsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/sms/{commseq_uuid}/{commseq_step_uuid}/test:
    post:
      tags:
        - storefront
      summary: Send SMS test
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: commseq_uuid
          in: path
          required: true
          type: string
        -
          name: commseq_step_uuid
          in: path
          required: true
          type: string
        -
          name: email_commseq_sms_test_request
          in: body
          description: Email commseq sms test request
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqSmsSendTestRequest"
      operationId: sendSmsTest
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqSmsSendTestResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/templates:
    get:
      tags:
        - storefront
      summary: Get email templates
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: trigger_type
          in: query
          required: false
          type: string
      operationId: getEmailTemplates
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailTemplatesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/templates/{email_template_oid}:
    get:
      tags:
        - storefront
      summary: Get email template
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_template_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailTemplate
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailTemplate"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/third_party_providers:
    get:
      tags:
        - storefront
      summary: Get a list of third party email providers
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getEmailThirdPartyProviders
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailThirdPartyProvidersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/third_party_providers/import:
    post:
      tags:
        - storefront
      summary: Import a third party provider list
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: import_request
          in: body
          description: lists to import
          required: true
          schema:
            $ref: "#/definitions/EmailThirdPartyListImportRequest"
      operationId: importEmailThirdPartyProviderList
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/email/webhooks/test:
    post:
      tags:
        - storefront
      summary: Send webhook test
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_commseq_webhook_test_request
          in: body
          description: Email commseq webhook test request
          required: true
          schema:
            $ref: "#/definitions/EmailCommseqWebhookSendTestRequest"
      operationId: sendWebhookTest
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/EmailCommseqWebhookSendTestResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/experiments:
    get:
      tags:
        - storefront
      summary: Get experiments
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getExperiments
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ExperimentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/experiments/{storefront_experiment_oid}:
    delete:
      tags:
        - storefront
      summary: Delete experiment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: storefront_experiment_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteExperiment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Update experiment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: storefront_experiment_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: experiment
          in: body
          description: Experiment
          required: true
          schema:
            $ref: "#/definitions/Experiment"
      operationId: updateExperiment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ExperimentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/pages/{page_oid}/content/attributes:
    post:
      tags:
        - storefront
      summary: Upsert a page content attribute
      description: |
        Update a page content attribute, creating it new if it does not yet exist.
      parameters:
        -
          name: page_attribute
          in: body
          description: Page content attribute to upsert
          required: true
          schema:
            $ref: "#/definitions/StoreFrontPageContentAttribute"
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: page_oid
          in: path
          description: The page oid to modify.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: insertUpdatePageContentAttribute
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/heatmap:
    delete:
      tags:
        - storefront
      summary: Delete screen recording heatmap
      description: |
        Delete screen recording heatmap
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: query
          in: body
          description: Query
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingHeatmapReset"
      operationId: deleteHeatmap
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Get screen recording heatmap
      description: |
        Get screen recording heatmap
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: query
          in: body
          description: Query
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingHeatmapRequest"
      operationId: getHeatmap
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingHeatmapResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/heatmap/index:
    post:
      tags:
        - storefront
      summary: Get screen recording heatmap index
      description: |
        Get screen recording heatmap index
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: query
          in: body
          description: Query
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingHeatmapIndexRequest"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 500)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: getHeatmapIndex
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingHeatmapIndexResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/query:
    post:
      tags:
        - storefront
      summary: Query screen recordings
      description: |
        Query screen recordings
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: query
          in: body
          description: Query
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingQueryRequest"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 500)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: getScreenRecordingsByQuery
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingQueryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/segments:
    get:
      tags:
        - storefront
      summary: Get screen recording segments
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getScreenRecordingSegments
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingSegmentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Insert screen recording segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: segment
          in: body
          description: Segment
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingSegment"
      operationId: insertScreenRecordingSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingSegmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/segments/{screen_recording_segment_oid}:
    delete:
      tags:
        - storefront
      summary: Delete screen recording segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_segment_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteScreenRecordingSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - storefront
      summary: Get screen recording segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_segment_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getScreenRecordingSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingSegmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Update screen recording segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_segment_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: segment
          in: body
          description: Segment
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingSegment"
      operationId: updateScreenRecordingSegment
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingSegmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/segments/{screen_recording_segment_oid}/query:
    post:
      tags:
        - storefront
      summary: Get screen recordings by segment
      description: |
        Get screen recordings by segment
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_segment_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 500)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: getScreenRecordingsBySegment
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingQueryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/settings:
    get:
      tags:
        - storefront
      summary: Get screen recording settings
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getScreenRecordingSettings
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingSettingsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Update screen recording settings
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: settings
          in: body
          description: Settings
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingSettings"
      operationId: updateScreenRecordingSettings
      security:
        - ultraCartOauth:
          - storefront_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingSettingsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/tags:
    post:
      tags:
        - storefront
      summary: Get tags used by screen recording
      description: |
        Get tags used by screen recording
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getScreenRecordingTags
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingTagsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/{screen_recording_uuid}:
    get:
      tags:
        - storefront
      summary: Get screen recording
      description: |
        Get screen recording
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_uuid
          in: path
          required: true
          type: string
      operationId: getScreenRecording
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/{screen_recording_uuid}/favorite:
    delete:
      tags:
        - storefront
      summary: Remove favorite flag on screen recording
      description: |
        Remove favorite flag on screen recording
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_uuid
          in: path
          required: true
          type: string
      operationId: unfavoriteScreenRecording
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - storefront
      summary: Update favorite flag on screen recording
      description: |
        Update favorite flag on screen recording
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_uuid
          in: path
          required: true
          type: string
      operationId: favoriteScreenRecording
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/{screen_recording_uuid}/merchant_notes:
    post:
      tags:
        - storefront
      summary: Update merchant notes on a screen recording
      description: |
        Update merchant notes on a screen recording
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_uuid
          in: path
          required: true
          type: string
        -
          name: merchant_notes_request
          in: body
          description: Merchant Notes
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingMerchantNotesRequest"
      operationId: updateScreenRecordingMerchantNotes
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/{screen_recording_uuid}/page_view_data/{screen_recording_page_view_uuid}:
    get:
      tags:
        - storefront
      summary: Get screen recording page view data
      description: |
        Get screen recording page view data
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_uuid
          in: path
          required: true
          type: string
        -
          name: screen_recording_page_view_uuid
          in: path
          required: true
          type: string
      operationId: getScreenRecordingPageViewData
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenRecordingPageViewDataResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/screen_recordings/{screen_recording_uuid}/tags:
    post:
      tags:
        - storefront
      summary: Update tags on a screen recording
      description: |
        Update tags on a screen recording
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: screen_recording_uuid
          in: path
          required: true
          type: string
        -
          name: tags
          in: body
          description: Tags
          required: true
          schema:
            $ref: "#/definitions/ScreenRecordingTagsRequest"
      operationId: updateScreenRecordingTags
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/transaction_email/list:
    get:
      tags:
        - storefront
      summary: Gets a list of transaction email names
      description: |
        Obtain a list of all transactional emails and return back just their names
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getTransactionEmailList
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TransactionEmailListResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/transaction_email/list/{email_id}:
    get:
      tags:
        - storefront
      summary: Gets a transaction email object
      description: |
        Fetch a transactional email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_id
          in: path
          required: true
          type: string
      operationId: getTransactionEmail
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TransactionEmailResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - storefront
      summary: Updates a transaction email object
      description: |
        Updates a transactional email
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_id
          in: path
          required: true
          type: string
        -
          name: transaction_email
          in: body
          description: TransactionEmail
          required: true
          schema:
            $ref: "#/definitions/TransactionEmail"
      operationId: updateTransactionEmail
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TransactionEmailResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /storefront/{storefront_oid}/transaction_email/list/{email_id}/screenshots:
    get:
      tags:
        - storefront
      summary: Get transactional email screenshots
      parameters:
        -
          name: storefront_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: email_id
          in: path
          required: true
          type: string
      operationId: getTransactionEmailScreenshots
      security:
        - ultraCartOauth:
          - storefront_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ScreenshotsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# SingleSignOnRestApi
# ==========================================================================
  /sso/authorize:
    put:
      tags:
        - sso
      summary: Authorize a single sign on session
      description: |
        Starts the process of authorizing a single sign on session.
      parameters:
        -
          name: authorization_request
          in: body
          description: Authorization request
          required: true
          schema:
            $ref: "#/definitions/SingleSignOnAuthorizeRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: ssoAuthorize
      security:
        - ultraCartOauth:
          - sso_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/SingleSignOnAuthorizeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /sso/session/revoke:
    delete:
      tags:
        - sso
      summary: Revoke single sign on session
      description: |
        This is the equivalent of logging out of the single sign on session
      operationId: ssoSessionRevoke
      security:
        - ultraCartOauth:
          - sso_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /sso/session/user:
    get:
      tags:
        - sso
      summary: Get single sign on session user
      description: |
        This is the equivalent of logging out of the single sign on session
      operationId: getSsoSessionUser
      security:
        - ultraCartOauth:
          - sso_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/User"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /sso/token:
    put:
      tags:
        - sso
      summary: Exchange a single sign on code for a simple key token
      description: |
        Called by your application after receiving the code back on the redirect URI to obtain a simple key token to make API calls with
      parameters:
        -
          name: token_request
          in: body
          description: Token request
          required: true
          schema:
            $ref: "#/definitions/SingleSignOnTokenRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: ssoToken
      security:
        - ultraCartOauth:
          - sso_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/SingleSignOnTokenResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# AutoOrderRestApi
# ==========================================================================
  /auto_order/auto_orders:
    get:
      tags:
        - auto_order
      summary: Retrieve auto orders
      description: |
        Retrieves auto orders from the account.  If no parameters are specified, all auto orders will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: auto_order_code
          in: query
          description: Auto order code
          required: false
          type: string
        -
          name: original_order_id
          in: query
          description: Original order id
          required: false
          type: string
        -
          name: first_name
          in: query
          description: First name
          required: false
          type: string
        -
          name: last_name
          in: query
          description: Last name
          required: false
          type: string
        -
          name: company
          in: query
          description: Company
          required: false
          type: string
        -
          name: city
          in: query
          description: City
          required: false
          type: string
        -
          name: state
          in: query
          description: State
          required: false
          type: string
        -
          name: postal_code
          in: query
          description: Postal code
          required: false
          type: string
        -
          name: country_code
          in: query
          description: Country code (ISO-3166 two letter)
          required: false
          type: string
        -
          name: phone
          in: query
          description: Phone
          required: false
          type: string
        -
          name: email
          in: query
          description: Email
          required: false
          type: string
        -
          name: original_order_date_begin
          in: query
          description: Original order date begin
          required: false
          type: string
        -
          name: original_order_date_end
          in: query
          description: Original order date end
          required: false
          type: string
        -
          name: next_shipment_date_begin
          in: query
          description: Next shipment date begin
          required: false
          type: string
        -
          name: next_shipment_date_end
          in: query
          description: Next shipment date end
          required: false
          type: string
        -
          name: card_type
          in: query
          description: Card type
          required: false
          type: string
        -
          name: item_id
          in: query
          description: Item ID
          required: false
          type: string
        -
          name: status
          in: query
          description: Status
          required: false
          type: string
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch auto orders that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the auto orders.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getAutoOrders
      security:
        - ultraCartOauth:
          - auto_order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/batch:
    post:
      tags:
        - auto_order
      summary: Retrieve auto order batch
      description: |
        Retrieves a group of auto orders from the account based on an array of auto order oids.  If more than 200 auto order ids are specified, the API call will fail with a bad request error.
      parameters:
        -
          name: auto_order_batch
          in: body
          description: Auto order batch
          required: true
          schema:
            $ref: "#/definitions/AutoOrderQueryBatch"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.
          required: false
          type: string
      operationId: getAutoOrdersBatch
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - auto_order
      summary: Update multiple auto orders
      description: |
        Update multiple auto orders on the UltraCart account.
      parameters:
        -
          name: auto_orders_request
          in: body
          description: Auto orders to update (synchronous maximum 20 / asynchronous maximum 100)
          required: true
          schema:
            $ref: "#/definitions/AutoOrdersRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
        -
          name: _async
          in: query
          description: True if the operation should be run async.  No result returned
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: updateAutoOrdersBatch
      security:
        - ultraCartOauth:
          - auto_order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/code/{auto_order_code}:
    get:
      tags:
        - auto_order
      summary: Retrieve an auto order by code
      description: |
        Retrieves a single auto order using the specified reference (original) order id.
      parameters:
        -
          name: auto_order_code
          in: path
          description: The auto order oid to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getAutoOrderByCode
      security:
        - ultraCartOauth:
          - auto_order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/query:
    post:
      tags:
        - auto_order
      summary: Retrieve auto orders by query
      description: |
        Retrieves a group of auto orders from the account based on a query object.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: auto_order_query
          in: body
          description: Auto order query
          required: true
          schema:
            $ref: "#/definitions/AutoOrderQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the auto orders.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.
          required: false
          type: string
      operationId: getAutoOrdersByQuery
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/reference_order_id/{reference_order_id}:
    get:
      tags:
        - auto_order
      summary: Retrieve an auto order by order id
      description: |
        Retrieves a single auto order using the specified reference (original) order id.
      parameters:
        -
          name: reference_order_id
          in: path
          description: The auto order oid to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getAutoOrderByReferenceOrderId
      security:
        - ultraCartOauth:
          - auto_order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - auto_order
      summary: Establish an auto order by referencing a regular order id
      description: |
        Establish an auto order by referencing a regular order id.  The result will be an auto order without any items.  You should add the items and perform an update call.  Orders must be less than 60 days old and use a credit card payment.
      parameters:
        -
          name: reference_order_id
          in: path
          description: The order id to attach this auto order to
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: establishAutoOrderByReferenceOrderId
      security:
        - ultraCartOauth:
          - auto_order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/{auto_order_oid}:
    get:
      tags:
        - auto_order
      summary: Retrieve an auto order by oid
      description: |
        Retrieves a single auto order using the specified auto order oid.
      parameters:
        -
          name: auto_order_oid
          in: path
          description: The auto order oid to retrieve.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getAutoOrder
      security:
        - ultraCartOauth:
          - auto_order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - auto_order
      summary: Update an auto order
      description: |
        Update an auto order on the UltraCart account.
      parameters:
        -
          name: auto_order
          in: body
          description: Auto order to update
          required: true
          schema:
            $ref: "#/definitions/AutoOrder"
        -
          name: auto_order_oid
          in: path
          description: The auto order oid to update.
          required: true
          type: integer
          format: int32
        -
          name: validate_original_order
          in: query
          description: Validate original order before updating
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: updateAutoOrder
      security:
        - ultraCartOauth:
          - auto_order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/{auto_order_oid}/consolidate:
    put:
      tags:
        - auto_order
      summary: Consolidates multiple auto orders
      description: |
        Consolidates mutliple auto orders on the UltraCart account.
      parameters:
        -
          name: auto_order_consolidate
          in: body
          description: Auto orders to consolidate
          required: true
          schema:
            $ref: "#/definitions/AutoOrderConsolidate"
        -
          name: auto_order_oid
          in: path
          description: The auto order oid to consolidate into.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: consolidateAutoOrders
      security:
        - ultraCartOauth:
          - auto_order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /auto_order/auto_orders/{auto_order_oid}/pause:
    put:
      tags:
        - auto_order
      summary: Pause auto order
      description: |
        Completely pause an auto order
      parameters:
        -
          name: auto_order
          in: body
          description: Auto order to pause
          required: true
          schema:
            $ref: "#/definitions/AutoOrder"
        -
          name: auto_order_oid
          in: path
          description: The auto order oid to pause.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: pauseAutoOrder
      security:
        - ultraCartOauth:
          - auto_order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AutoOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# OAuthRestAPI
# ==========================================================================
  /oauth/revoke:
    post:
      tags:
        - oauth
      summary: Revoke this OAuth application.
      description: |
        Revokes the OAuth application associated with the specified client_id and token.
      parameters:
        -
          name: client_id
          in: formData
          description: The OAuth application client_id.
          required: true
          type: string
        -
          name: token
          in: formData
          description: The OAuth access token that is to be revoked..
          required: true
          type: string
      consumes:
        - application/x-www-form-urlencoded
      operationId: oauthRevoke
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OauthRevokeSuccessResponse"
        400:
          $ref: '#/responses/400'
        500:
          $ref: '#/responses/500'
  /oauth/token:
    post:
      tags:
        - oauth
      summary: Exchange authorization code for access token.
      description: |
        The final leg in the OAuth process which exchanges the specified access token for the access code needed to make API calls.
      parameters:
        -
          name: client_id
          in: formData
          description: The OAuth application client_id.
          required: true
          type: string
        -
          name: grant_type
          in: formData
          description: Type of grant
          required: true
          type: string
        -
          name: code
          in: formData
          description: Authorization code received back from the browser redirect
          required: false
          type: string
        -
          name: redirect_uri
          in: formData
          description: The URI that you redirect the browser to start the authorization process
          required: false
          type: string
        -
          name: refresh_token
          in: formData
          description: The refresh token received during the original grant_type=authorization_code that can be used to return a new access token
          required: false
          type: string
      consumes:
        - application/x-www-form-urlencoded
      operationId: oauthAccessToken
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OauthTokenResponse"
        400:
          $ref: '#/responses/400'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# DataWarehouseRestApi
# ==========================================================================
  /datawarehouse/custom_dashboards:
    get:
      tags:
        - datawarehouse
      summary: Get custom dashboards
      description: |
        Retrieve a custom dashboards
      operationId: getCustomDashboards
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - datawarehouse
      summary: Create a custom dashboard
      description: |
        Create a new custom dashboard on the UltraCart account.
      parameters:
        -
          name: dashboard
          in: body
          description: Dashboard to create
          required: true
          schema:
            $ref: "#/definitions/CustomDashboard"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertCustomDashboard
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_dashboards/{custom_dashboard_oid}:
    delete:
      tags:
        - datawarehouse
      summary: Delete a custom dashboard
      description: |
        Delete a custom dashboard on the UltraCart account.
      parameters:
        -
          name: custom_dashboard_oid
          in: path
          description: The dashboard oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteCustomDashboard
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - datawarehouse
      summary: Get a custom dashboard
      description: |
        Retrieve a custom dashboard
      parameters:
        -
          name: custom_dashboard_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getCustomDashboard
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - datawarehouse
      summary: Update a custom dashboard
      description: |
        Update a custom dashboard on the UltraCart account.
      parameters:
        -
          name: dashboard
          in: body
          description: Dashboard to custom update
          required: true
          schema:
            $ref: "#/definitions/CustomDashboard"
        -
          name: custom_dashboard_oid
          in: path
          description: The dashboard oid to custom update.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCustomDashboard
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_dashboards/{custom_dashboard_oid}/schedules:
    get:
      tags:
        - datawarehouse
      summary: Get custom dashboards
      description: |
        Retrieve a custom dashboards
      parameters:
        -
          name: custom_dashboard_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getCustomDashboardSchedules
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardSchedulesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - datawarehouse
      summary: Create a custom dashboard schedule
      description: |
        Create a new custom dashboard schedule on the UltraCart account.
      parameters:
        -
          name: custom_dashboard_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: dashboard_schedule
          in: body
          description: Dashboard schedule to create
          required: true
          schema:
            $ref: "#/definitions/CustomDashboardSchedule"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertCustomDashboardSchedule
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardScheduleResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_dashboards/{custom_dashboard_oid}/schedules/{custom_dashboard_schedule_oid}:
    delete:
      tags:
        - datawarehouse
      summary: Delete a custom dashboard schedule
      description: |
        delete a custom dashboard schedule on the UltraCart account.
      parameters:
        -
          name: custom_dashboard_schedule_oid
          in: path
          description: The dashboard schedule oid to delete.
          required: true
          type: integer
          format: int32
        -
          name: custom_dashboard_oid
          in: path
          description: The dashboard oid that owns the schedule.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: deleteCustomDashboardSchedule
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - datawarehouse
      summary: Update a custom dashboard schedule
      description: |
        Update a custom dashboard schedule on the UltraCart account.
      parameters:
        -
          name: dashboard_schedule
          in: body
          description: Dashboard schedule to update
          required: true
          schema:
            $ref: "#/definitions/CustomDashboardSchedule"
        -
          name: custom_dashboard_schedule_oid
          in: path
          description: The dashboard schedule oid to update.
          required: true
          type: integer
          format: int32
        -
          name: custom_dashboard_oid
          in: path
          description: The dashboard oid to update.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCustomDashboardSchedule
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomDashboardResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports:
    get:
      tags:
        - datawarehouse
      summary: Get custom reports
      description: |
        Retrieve a custom reports
      operationId: getCustomReports
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - datawarehouse
      summary: Create a custom report
      description: |
        Create a new custom report on the UltraCart account.
      parameters:
        -
          name: report
          in: body
          description: Report to create
          required: true
          schema:
            $ref: "#/definitions/CustomReport"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertCustomReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports/account_config:
    get:
      tags:
        - datawarehouse
      summary: Get custom report account configuration
      description: |
        Retrieve a custom report account configuration
      operationId: getCustomReportAccountConfig
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportAccountConfigResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - datawarehouse
      summary: Update custom report account config
      description: |
        Update custom report account config.
      parameters:
        -
          name: account_config
          in: body
          description: Account config to update
          required: true
          schema:
            $ref: "#/definitions/CustomReportAccountConfig"
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCustomReportAccountConfig
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportAccountConfigResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports/execute:
    put:
      tags:
        - datawarehouse
      summary: Execute a custom reports
      description: |
        Execute a custom reports on the UltraCart account.
      parameters:
        -
          name: execution_request
          in: body
          description: Request to execute custom reports
          required: true
          schema:
            $ref: "#/definitions/CustomReportsExecutionRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: executeCustomReports
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportsExecutionResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports/{custom_report_oid}:
    delete:
      tags:
        - datawarehouse
      summary: Delete a custom report
      description: |
        Delete a custom report on the UltraCart account.
      parameters:
        -
          name: custom_report_oid
          in: path
          description: The report oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteCustomReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - datawarehouse
      summary: Get a custom report
      description: |
        Retrieve a custom report
      parameters:
        -
          name: custom_report_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getCustomReport
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - datawarehouse
      summary: Update a custom report
      description: |
        Update a custom report on the UltraCart account.
      parameters:
        -
          name: report
          in: body
          description: Report to custom update
          required: true
          schema:
            $ref: "#/definitions/CustomReport"
        -
          name: custom_report_oid
          in: path
          description: The report oid to custom update.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCustomReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports/{custom_report_oid}/analysis:
    put:
      tags:
        - datawarehouse
      summary: Analyze a custom report
      description: |
        Analyze a custom report on the UltraCart account.
      parameters:
        -
          name: analyze_request
          in: body
          description: Request to analyze custom report
          required: true
          schema:
            $ref: "#/definitions/CustomReportAnalysisRequest"
        -
          name: custom_report_oid
          in: path
          description: The report oid to analyze.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: analyzeCustomReport
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportAnalysisResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports/{custom_report_oid}/chart_png:
    get:
      tags:
        - datawarehouse
      summary: Upload a PNG of a custom report chart
      description: |
        Upload a PNG of a custom report chart
      parameters:
        -
          name: custom_report_oid
          in: path
          description: The report oid to upload a chart PNG for.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: getCustomReportChartPngUploadUrl
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportChartPngUploadResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/custom_reports/{custom_report_oid}/execute:
    put:
      tags:
        - datawarehouse
      summary: Execute a custom report
      description: |
        Execute a custom report on the UltraCart account.
      parameters:
        -
          name: execution_request
          in: body
          description: Request to execute custom report
          required: true
          schema:
            $ref: "#/definitions/CustomReportExecutionRequest"
        -
          name: custom_report_oid
          in: path
          description: The report oid to execute.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: executeCustomReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CustomReportExecutionResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports:
    get:
      tags:
        - datawarehouse
      summary: Get list of reports available
      description: |
        Retrieve a list of reports available
      operationId: getReports
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - datawarehouse
      summary: Create a report
      description: |
        Create a new report on the UltraCart account.
      parameters:
        -
          name: report
          in: body
          description: Report to create
          required: true
          schema:
            $ref: "#/definitions/Report"
      consumes:
        - application/json; charset=UTF-8
      operationId: insertReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports/auth:
    put:
      tags:
        - datawarehouse
      summary: Get report websocket authorization
      description: |
        Retrieve a JWT to authorize a report to make a websocket connection.
      operationId: getReportWebsocketAuthorization
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportAuthResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports/dataset/{dataset_uuid}:
    get:
      tags:
        - datawarehouse
      summary: Get a report data set
      description: |
        Retrieve a report data set
      parameters:
        -
          name: dataset_uuid
          in: path
          required: true
          type: string
      operationId: getReportDataSet
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportDataSetResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports/dataset/{dataset_uuid}/pages/{page_number}:
    get:
      tags:
        - datawarehouse
      summary: Get a report data set page
      description: |
        Retrieve a report data set page
      parameters:
        -
          name: dataset_uuid
          in: path
          required: true
          type: string
        -
          name: page_number
          in: path
          required: true
          type: integer
          format: int32
      operationId: getReportDataSetPage
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportDataSetPageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports/dryrun:
    put:
      tags:
        - datawarehouse
      summary: Dry run the report queries
      description: |
        Dry run the report queries
      parameters:
        -
          name: query_request
          in: body
          description: Dry run request
          required: true
          schema:
            $ref: "#/definitions/ReportDryRunQueriesRequest"
      operationId: dryRunReportQueries
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportDryRunQueriesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports/execute:
    put:
      tags:
        - datawarehouse
      summary: Execute the report queries
      description: |
        Execute the report queries
      parameters:
        -
          name: query_request
          in: body
          description: Query request
          required: true
          schema:
            $ref: "#/definitions/ReportExecuteQueriesRequest"
      operationId: executeReportQueries
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /datawarehouse/reports/{report_oid}:
    delete:
      tags:
        - datawarehouse
      summary: Delete a report
      description: |
        Delete a report on the UltraCart account.
      parameters:
        -
          name: report_oid
          in: path
          description: The report oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - datawarehouse
      summary: Get a report
      description: |
        Retrieve a report
      parameters:
        -
          name: report_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getReport
      security:
        - ultraCartOauth:
          - datawarehouse_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - datawarehouse
      summary: Update a report
      description: |
        Update a report on the UltraCart account.
      parameters:
        -
          name: report
          in: body
          description: Report to update
          required: true
          schema:
            $ref: "#/definitions/Report"
        -
          name: report_oid
          in: path
          description: The report oid to update.
          required: true
          type: integer
          format: int32
      consumes:
        - application/json; charset=UTF-8
      operationId: updateReport
      security:
        - ultraCartOauth:
          - datawarehouse_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ReportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# OrderRestApi
# ==========================================================================
  /order/accountsReceivableRetryConfig:
    get:
      tags:
        - order
      summary: Retrieve A/R Retry Configuration
      description: |
        Retrieve A/R Retry Configuration. This is primarily an internal API call.  It is doubtful you would ever need to use it.
      operationId: getAccountsReceivableRetryConfig
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AccountsReceivableRetryConfigResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - order
      summary: Update A/R Retry Configuration
      description: |
        Update A/R Retry Configuration.  This is primarily an internal API call.  It is doubtful you would ever need to use it.
      parameters:
        -
          name: retry_config
          in: body
          description: AccountsReceivableRetryConfig object
          required: true
          schema:
            $ref: "#/definitions/AccountsReceivableRetryConfig"
      operationId: updateAccountsReceivableRetryConfig
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/accountsReceivableRetryConfig/stats:
    get:
      tags:
        - order
      summary: Retrieve A/R Retry Statistics
      description: |
        Retrieve A/R Retry Statistics. This is primarily an internal API call.  It is doubtful you would ever need to use it.
      parameters:
        -
          name: from
          in: query
          required: false
          type: string
        -
          name: to
          in: query
          required: false
          type: string
      operationId: getAccountsReceivableRetryStats
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AccountsReceivableRetryStatsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders:
    get:
      tags:
        - order
      summary: Retrieve orders
      description: |
        Retrieves a group of orders from the account.  If no parameters are specified, the API call will fail with a bad request error.  Always specify some parameters to limit the scope of the orders returned to ones you are truly interested in.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: order_id
          in: query
          description: Order Id
          required: false
          type: string
        -
          name: payment_method
          in: query
          description: Payment Method
          required: false
          type: string
        -
          name: company
          in: query
          description: Company
          required: false
          type: string
        -
          name: first_name
          in: query
          description: First Name
          required: false
          type: string
        -
          name: last_name
          in: query
          description: Last Name
          required: false
          type: string
        -
          name: city
          in: query
          description: City
          required: false
          type: string
        -
          name: state_region
          in: query
          description: State/Region
          required: false
          type: string
        -
          name: postal_code
          in: query
          description: Postal Code
          required: false
          type: string
        -
          name: country_code
          in: query
          description: Country Code (ISO-3166 two letter)
          required: false
          type: string
        -
          name: phone
          in: query
          description: Phone
          required: false
          type: string
        -
          name: email
          in: query
          description: Email
          required: false
          type: string
        -
          name: cc_email
          in: query
          description: CC Email
          required: false
          type: string
        -
          name: total
          in: query
          description: Total
          required: false
          type: number
        -
          name: screen_branding_theme_code
          in: query
          description: Screen Branding Theme Code
          required: false
          type: string
        -
          name: storefront_host_name
          in: query
          description: StoreFront Host Name
          required: false
          type: string
        -
          name: creation_date_begin
          in: query
          description: Creation Date Begin
          required: false
          type: string
        -
          name: creation_date_end
          in: query
          description: Creation Date End
          required: false
          type: string
        -
          name: payment_date_begin
          in: query
          description: Payment Date Begin
          required: false
          type: string
        -
          name: payment_date_end
          in: query
          description: Payment Date End
          required: false
          type: string
        -
          name: shipment_date_begin
          in: query
          description: Shipment Date Begin
          required: false
          type: string
        -
          name: shipment_date_end
          in: query
          description: Shipment Date End
          required: false
          type: string
        -
          name: rma
          in: query
          description: RMA
          required: false
          type: string
        -
          name: purchase_order_number
          in: query
          description: Purchase Order Number
          required: false
          type: string
        -
          name: item_id
          in: query
          description: Item Id
          required: false
          type: string
        -
          name: current_stage
          in: query
          description: Current Stage
          required: false
          type: string
        -
          name: channel_partner_code
          in: query
          description: Channel Partner Code
          required: false
          type: string
        -
          name: channel_partner_order_id
          in: query
          description: Channel Partner Order ID
          required: false
          type: string
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the orders.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.
          required: false
          type: string
      operationId: getOrders
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - order
      summary: Insert an order
      description: |
        Inserts a new order on the UltraCart account.  This is probably NOT the method you want.  This is for channel orders.  For regular orders the customer is entering, use the CheckoutApi.  It has many, many more features, checks, and validations.
      parameters:
        -
          name: order
          in: body
          description: Order to insert
          required: true
          schema:
            $ref: "#/definitions/Order"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: insertOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/batch:
    post:
      tags:
        - order
      summary: Retrieve order batch
      description: |
        Retrieves a group of orders from the account based on an array of order ids.  If more than 500 order ids are specified, the API call will fail with a bad request error.
      parameters:
        -
          name: order_batch
          in: body
          description: Order batch
          required: true
          schema:
            $ref: "#/definitions/OrderQueryBatch"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.
          required: false
          type: string
      operationId: getOrdersBatch
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/query:
    post:
      tags:
        - order
      summary: Retrieve orders by query
      description: |
        Retrieves a group of orders from the account based on a query object.  If no parameters are specified, the API call will fail with a bad request error.  Always specify some parameters to limit the scope of the orders returned to ones you are truly interested in.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: order_query
          in: body
          description: Order query
          required: true
          schema:
            $ref: "#/definitions/OrderQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the orders.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.
          required: false
          type: string
      operationId: getOrdersByQuery
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrdersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/token:
    post:
      tags:
        - order
      summary: Retrieve an order using a token
      description: |
        Retrieves a single order using the specified order token.
      parameters:
        -
          name: order_by_token_query
          in: body
          description: Order by token query
          required: true
          schema:
            $ref: "#/definitions/OrderByTokenQuery"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getOrderByToken
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/token/{order_id}:
    get:
      tags:
        - order
      summary: Generate an order token for a given order id
      description: |
        Retrieves a single order token for a given order id.  The token can be used with the getOrderByToken API.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to generate a token for.
          required: true
          type: string
      operationId: generateOrderToken
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderTokenResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}:
    delete:
      tags:
        - order
      summary: Delete an order
      description: |
        Delete an order on the UltraCart account.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to delete.
          required: true
          type: string
      operationId: deleteOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        204:
          description: No Content
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - order
      summary: Retrieve an order
      description: |
        Retrieves a single order using the specified order id.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getOrder
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - order
      summary: Update an order
      description: |
        Update a new order on the UltraCart account.  This is probably NOT the method you want.  It is rare to update a completed order.  This will not trigger charges, emails, or any other automation.
      parameters:
        -
          name: order
          in: body
          description: Order to update
          required: true
          schema:
            $ref: "#/definitions/Order"
        -
          name: order_id
          in: path
          description: The order id to update.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: updateOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/adjust_order_total/{desired_total}:
    post:
      tags:
        - order
      summary: Adjusts an order total
      description: |
        Adjusts an order total.  Adjusts individual items appropriately and considers taxes.  Desired total should be provided in the same currency as the order and must be less than the current total and greater than zero.  This call will change the order total.  It returns true if the desired total is achieved.  If the goal seeking algorithm falls short (usually by pennies), this method returns back false.  View the merchant notes for the order for further details.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to cancel.
          required: true
          type: string
        -
          name: desired_total
          in: path
          description: The desired total with no formatting. example 123.45
          required: true
          type: string
      operationId: adjustOrderTotal
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/cancel:
    post:
      tags:
        - order
      summary: Cancel an order
      description: |
        Cancel an order on the UltraCart account.  If the success flag is false, then consult the error message for why it failed.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to cancel.
          required: true
          type: string
        -
          name: lock_self_ship_orders
          in: query
          description: Flag to prevent a order shipping during a refund process
          required: false
          type: boolean
        -
          name: skip_refund_and_hold
          in: query
          description: Skip refund and move order to Held Orders department
          required: false
          type: boolean
      operationId: cancelOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/duplicate:
    post:
      tags:
        - order
      summary: Duplicate an order
      description: |
        Perform a duplicate of the specified order_id and return a new order located in Accounts Receivable.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to duplicate.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: duplicateOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/edi:
    get:
      tags:
        - order
      summary: Retrieve EDI documents associated with this order.
      description: |
        Retrieve EDI documents associated with this order.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to retrieve EDI documents for.
          required: true
          type: string
      operationId: getOrderEdiDocuments
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderEdiDocumentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/format:
    post:
      tags:
        - order
      summary: Format order
      description: |
        Format the order for display at text or html
      parameters:
        -
          name: order_id
          in: path
          description: The order id to format
          required: true
          type: string
        -
          name: format_options
          in: body
          description: Format options
          required: true
          schema:
            $ref: "#/definitions/OrderFormat"
      operationId: format
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderFormatResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/invoice:
    get:
      tags:
        - order
      summary: Generate an invoice for this order.
      description: |
        The invoice PDF that is returned is base 64 encoded
      parameters:
        -
          name: order_id
          in: path
          description: Order ID
          required: true
          type: string
      operationId: generateInvoice
      security:
        - ultraCartOauth:
          - order_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderInvoiceResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/packing_slip:
    get:
      tags:
        - order
      summary: Generate a packing slip for this order across all distribution centers.
      description: |
        The packing slip PDF that is returned is base 64 encoded
      parameters:
        -
          name: order_id
          in: path
          description: Order ID
          required: true
          type: string
      operationId: generatePackingSlipAllDC
      security:
        - ultraCartOauth:
          - fulfillment_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderPackingSlipResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/packing_slip/{distribution_center_code}:
    get:
      tags:
        - order
      summary: Generate a packing slip for this order for the given distribution center.
      description: |
        The packing slip PDF that is returned is base 64 encoded
      parameters:
        -
          name: distribution_center_code
          in: path
          description: Distribution center code
          required: true
          type: string
        -
          name: order_id
          in: path
          description: Order ID
          required: true
          type: string
      operationId: generatePackingSlipSpecificDC
      security:
        - ultraCartOauth:
          - fulfillment_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderPackingSlipResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/process_payment:
    post:
      tags:
        - order
      summary: Process payment
      description: |
        Process payment on order
      parameters:
        -
          name: order_id
          in: path
          description: The order id to process payment on
          required: true
          type: string
        -
          name: process_payment_request
          in: body
          description: Process payment parameters
          required: true
          schema:
            $ref: "#/definitions/OrderProcessPaymentRequest"
      operationId: processPayment
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderProcessPaymentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/refund:
    put:
      tags:
        - order
      summary: Refund an order
      description: |
        Perform a refund operation on an order and then update the order if successful.  All of the object properties ending in _refunded should be the TOTAL amount that should end up being refunded.  UltraCart will calculate the actual amount to refund based upon the prior refunds.
      parameters:
        -
          name: order
          in: body
          description: Order to refund
          required: true
          schema:
            $ref: "#/definitions/Order"
        -
          name: order_id
          in: path
          description: The order id to refund.
          required: true
          type: string
        -
          name: reject_after_refund
          in: query
          description: Reject order after refund
          required: false
          type: boolean
          default: false
        -
          name: skip_customer_notification
          in: query
          description: Skip customer email notification
          required: false
          type: boolean
          default: false
        -
          name: auto_order_cancel
          in: query
          description: Cancel associated auto orders
          required: false
          type: boolean
          default: false
        -
          name: manual_refund
          in: query
          description: Consider a manual refund done externally
          required: false
          type: boolean
          default: false
        -
          name: reverse_affiliate_transactions
          in: query
          description: Reverse affiliate transactions
          required: false
          type: boolean
          default: true
        -
          name: issue_store_credit
          in: query
          description: Issue a store credit instead of refunding the original payment method, loyalty must be configured on merchant account
          required: false
          type: boolean
          default: false
        -
          name: auto_order_cancel_reason
          in: query
          description: Reason for auto orders cancellation
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: refundOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/refund_block:
    get:
      tags:
        - order
      summary: Set a refund block on an order
      description: |
        Sets a refund block on an order to prevent a user from performing a refund.  Commonly used when a chargeback has been received.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to block a refund on.
          required: true
          type: string
        -
          name: block_reason
          in: query
          description: Block reason code (optional)
          required: false
          type: string
      operationId: blockRefundOnOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/refund_unblock:
    get:
      tags:
        - order
      summary: Remove a refund block on an order
      description: |
        Removes a refund block on an order to prevent a user from performing a refund.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to unblock a refund on.
          required: true
          type: string
      operationId: unblockRefundOnOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/refundable:
    get:
      tags:
        - order
      summary: Determine if an order can be refunded
      description: |
        Determine if an order can be refunded based upon payment method and age
      parameters:
        -
          name: order_id
          in: path
          description: The order id to check for refundable order.
          required: true
          type: string
      operationId: isRefundableOrder
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderRefundableResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/replace_item_id:
    put:
      tags:
        - order
      summary: Replaces an order item id
      description: |
        Replaces a single order item id with another merchant_item_id, leaving all other attributes and properties unchanged.  A custom method requested by a merchant to allow for item id updates due to shipping errors.  It is doubtful you will ever need this method.  The expansion variable affects the returned order object.
      parameters:
        -
          name: replace_order_item_id_request
          in: body
          description: Replacement Request
          required: true
          schema:
            $ref: "#/definitions/ReplaceOrderItemIdRequest"
        -
          name: order_id
          in: path
          description: The order id to update.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: replaceOrderItemMerchantItemId
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/replacement:
    post:
      tags:
        - order
      summary: Replacement order
      description: |
        Create a replacement order based upon a previous order
      parameters:
        -
          name: order_id
          in: path
          description: The order id to generate a replacement for.
          required: true
          type: string
        -
          name: replacement
          in: body
          description: Replacement order details
          required: true
          schema:
            $ref: "#/definitions/OrderReplacement"
      operationId: replacement
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderReplacementResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/resend_receipt:
    post:
      tags:
        - order
      summary: Resend receipt
      description: |
        Resend the receipt for an order on the UltraCart account.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to resend the receipt for.
          required: true
          type: string
      operationId: resendReceipt
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/orders/{order_id}/resend_shipment_confirmation:
    post:
      tags:
        - order
      summary: Resend shipment confirmation
      description: |
        Resend shipment confirmation for an order on the UltraCart account.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to resend the shipment notification for.
          required: true
          type: string
      operationId: resendShipmentConfirmation
      security:
        - ultraCartOauth:
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/BaseResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /order/validate:
    post:
      tags:
        - order
      summary: Validate
      description: |
        Validate the order for errors.  Specific checks can be passed to fine tune what is validated. Read and write permissions are required because the validate method may fix obvious address issues automatically which require update permission.This rest call makes use of the built-in translation of rest objects to UltraCart internal objects which also contains a multitude of validation checks that cannot be trapped.  Therefore any time this call is made, you should also trap api exceptions and examine their content because it may contain validation issues.  So check the response object and trap any exceptions.
      parameters:
        -
          name: validation_request
          in: body
          description: Validation request
          required: true
          schema:
            $ref: "#/definitions/OrderValidationRequest"
      operationId: validateOrder
      security:
        - ultraCartOauth:
          - order_read
          - order_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderValidationResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# ChannelPartnerRestApi
# ==========================================================================
  /channel_partner/cancel/by_channel_partner_order_id/{order_id}:
    delete:
      tags:
        - channel partner
      summary: Cancel channel partner order by channel partner order id
      description: |
        Cancel channel partner order by channel partner order id
      parameters:
        -
          name: order_id
          in: path
          description: The channel partner order id to delete.
          required: true
          type: string
      operationId: cancelOrderByChannelPartnerOrderId
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerCancelResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/cancel/by_ultracart_order_id/{order_id}:
    delete:
      tags:
        - channel partner
      summary: Cancel channel partner order by UltraCart order id
      description: |
        Cancel channel partner order by UltraCart order id
      parameters:
        -
          name: order_id
          in: path
          description: The UltraCart order id to delete.
          required: true
          type: string
      operationId: cancelOrderByUltraCartOrderId
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerCancelResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/channel_partners:
    get:
      tags:
        - channel partner
      summary: Retrieve the channel partners configured on the account.
      description: |
        Retrieve the channel partners configured on the account.
      operationId: getChannelPartners
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/channel_partners/{channel_partner_oid}/reason_codes:
    get:
      tags:
        - channel partner
      summary: Retrieve reject and refund reason codes.
      description: |
        Retrieve reject and refund reason codes.
      parameters:
        -
          name: channel_partner_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getChannelPartnerReasonCodes
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChanelPartnerReasonCodesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/channel_partners/{channel_partner_oid}/ship_to_preferences:
    get:
      tags:
        - channel partner
      summary: Retrieve the ship to preferences associated with the channel partner.
      description: |
        Retrieve the ship to preferences associated with the channel partner.
      parameters:
        -
          name: channel_partner_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getChannelPartnerShipToPreferences
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerShipToPreferencesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - channel partner
      summary: Insert a ship to preference record for the channel partner.
      description: |
        Insert a ship to preference record for the channel partner.
      parameters:
        -
          name: channel_partner_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: ship_to_preference
          in: body
          description: Ship to preference to create
          required: true
          schema:
            $ref: "#/definitions/ChannelPartnerShipToPreference"
      operationId: insertChannelPartnerShipToPreference
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerShipToPreferenceResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/channel_partners/{channel_partner_oid}/ship_to_preferences/{channel_partner_ship_to_preference_oid}:
    delete:
      tags:
        - channel partner
      summary: Delete a ship to preference record for the channel partner.
      description: |
        Delete a ship to preference record for the channel partner.
      parameters:
        -
          name: channel_partner_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: channel_partner_ship_to_preference_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteChannelPartnerShipToPreference
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - channel partner
      summary: Retrieve the ship to preference associated with the channel partner and the specific id.
      description: |
        Retrieve the ship to preference associated with the channel partner and the specific id.
      parameters:
        -
          name: channel_partner_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: channel_partner_ship_to_preference_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getChannelPartnerShipToPreference
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerShipToPreferenceResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - channel partner
      summary: Update a ship to preference record for the channel partner.
      description: |
        Update a ship to preference record for the channel partner.
      parameters:
        -
          name: channel_partner_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: channel_partner_ship_to_preference_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: ship_to_preference
          in: body
          description: Ship to preference to create
          required: true
          schema:
            $ref: "#/definitions/ChannelPartnerShipToPreference"
      operationId: updateChannelPartnerShipToPreference
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerShipToPreferenceResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/estimate_shipping:
    post:
      tags:
        - channel partner
      summary: Estimate shipping for channel partner order
      description: |
        Estimate shipping for order from a channel partner.
      parameters:
        -
          name: channel_partner_order
          in: body
          description: Order needing shipping estimate
          required: true
          schema:
            $ref: "#/definitions/ChannelPartnerOrder"
      consumes:
        - application/json; charset=UTF-8
      operationId: estimateShippingForChannelPartnerOrder
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerEstimateShippingResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/estimate_tax:
    post:
      tags:
        - channel partner
      summary: Estimate tax for channel partner order
      description: |
        Estimate tax for order from a channel partner.
      parameters:
        -
          name: channel_partner_order
          in: body
          description: Order needing tax estimate
          required: true
          schema:
            $ref: "#/definitions/ChannelPartnerOrder"
      consumes:
        - application/json; charset=UTF-8
      operationId: estimateTaxForChannelPartnerOrder
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerEstimateTaxResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/import:
    post:
      tags:
        - channel partner
      summary: Insert channel partner order
      description: |
        Insert order from a channel partner.
      parameters:
        -
          name: channel_partner_order
          in: body
          description: Order to insert 
          required: true
          schema:
            $ref: "#/definitions/ChannelPartnerOrder"
      consumes:
        - application/json; charset=UTF-8
      operationId: importChannelPartnerOrder
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ChannelPartnerImportResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/orders/by_channel_partner_order_id/{order_id}:
    get:
      tags:
        - channel partner
      summary: Retrieve a channel partner order by the channel partner order id
      description: |
        Retrieves a single order using the channel partner order id, not the ultracart order id.  Only orders belonging to this channel partner may be retrieved.
      parameters:
        -
          name: order_id
          in: path
          description: The channel partner order id to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See OrderApi.getOrder documentation for examples
          required: false
          type: string
      operationId: getChannelPartnerOrderByChannelPartnerOrderId
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/orders/{order_id}:
    get:
      tags:
        - channel partner
      summary: Retrieve a channel partner order
      description: |
        Retrieves a single order using the specified order id.  Only orders belonging to this channel partner may be retrieved.
      parameters:
        -
          name: order_id
          in: path
          description: The order id to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See OrderApi.getOrder documentation for examples
          required: false
          type: string
      operationId: getChannelPartnerOrder
      security:
        - ultraCartOauth:
          - channel_partner_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /channel_partner/orders/{order_id}/refund:
    put:
      tags:
        - channel partner
      summary: Refund a channel partner order
      description: |
        Perform a refund operation on a channel partner order and then update the order if successful.  All of the object properties ending in _refunded should be the TOTAL amount that should end up being refunded.  UltraCart will calculate the actual amount to refund based upon the prior refunds.
      parameters:
        -
          name: order
          in: body
          description: Order to refund
          required: true
          schema:
            $ref: "#/definitions/Order"
        -
          name: order_id
          in: path
          description: The order id to refund.
          required: true
          type: string
        -
          name: reject_after_refund
          in: query
          description: Reject order after refund
          required: false
          type: boolean
          default: false
        -
          name: skip_customer_notification
          in: query
          description: Skip customer email notification
          required: false
          type: boolean
          default: false
        -
          name: auto_order_cancel
          in: query
          description: Cancel associated auto orders
          required: false
          type: boolean
          default: false
        -
          name: manual_refund
          in: query
          description: Consider a manual refund done externally
          required: false
          type: boolean
          default: false
        -
          name: reverse_affiliate_transactions
          in: query
          description: Reverse affiliate transactions
          required: false
          type: boolean
          default: true
        -
          name: issue_store_credit
          in: query
          description: Issue a store credit instead of refunding the original payment method, loyalty must be configured on merchant account
          required: false
          type: boolean
          default: false
        -
          name: auto_order_cancel_reason
          in: query
          description: Reason for auto orders cancellation
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See OrderApi.refundOrder documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: refundChannelPartnerOrder
      security:
        - ultraCartOauth:
          - channel_partner_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/OrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# CouponRestApi
# ==========================================================================
  /coupon/auto_apply:
    get:
      tags:
        - coupon
      summary: Retrieve auto apply rules and conditions
      description: |
        Retrieve auto apply rules and conditions
      operationId: getAutoApply
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponAutoApplyConditions"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - coupon
      summary: Update auto apply rules and conditions
      description: |
        Update auto apply rules and conditions
      parameters:
        -
          name: conditions
          in: body
          description: Conditions
          required: true
          schema:
            $ref: "#/definitions/CouponAutoApplyConditions"
      operationId: updateAutoApply
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons:
    get:
      tags:
        - coupon
      summary: Retrieve coupons
      description: |
        Retrieves coupons for this account.  If no parameters are specified, all coupons will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: merchant_code
          in: query
          description: Merchant code
          required: false
          type: string
        -
          name: description
          in: query
          description: Description
          required: false
          type: string
        -
          name: coupon_type
          in: query
          description: Coupon type
          required: false
          type: string
        -
          name: start_date_begin
          in: query
          description: Start date begin
          required: false
          type: string
        -
          name: start_date_end
          in: query
          description: Start date end
          required: false
          type: string
        -
          name: expiration_date_begin
          in: query
          description: Expiration date begin
          required: false
          type: string
        -
          name: expiration_date_end
          in: query
          description: Expiration date end
          required: false
          type: string
        -
          name: affiliate_oid
          in: query
          description: Affiliate oid
          required: false
          type: integer
          format: int32
        -
          name: exclude_expired
          in: query
          description: Exclude expired
          required: false
          type: boolean
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the coupons.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCoupons
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - coupon
      summary: Insert a coupon
      description: |
        Insert a coupon on the UltraCart account.
      parameters:
        -
          name: coupon
          in: body
          description: Coupon to insert
          required: true
          schema:
            $ref: "#/definitions/Coupon"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: insertCoupon
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/batch:
    post:
      tags:
        - coupon
      summary: Insert multiple coupons
      description: |
        Insert multiple coupon on the UltraCart account.
      parameters:
        -
          name: coupons_request
          in: body
          description: Coupons to insert (maximum 50)
          required: true
          schema:
            $ref: "#/definitions/CouponsRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: insertCoupons
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - coupon
      summary: Update multiple coupons
      description: |
        Update multiple coupon on the UltraCart account.
      parameters:
        -
          name: coupons_request
          in: body
          description: Coupons to update (synchronous maximum 50 / asynchronous maximum 100)
          required: true
          schema:
            $ref: "#/definitions/CouponsRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
        -
          name: _placeholders
          in: query
          description: Whether or not placeholder values should be returned in the result.  Useful for UIs that consume this REST API.
          required: false
          type: boolean
        -
          name: _async
          in: query
          description: True if the operation should be run async.  No result returned
          required: false
          type: boolean
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCoupons
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/by_code:
    delete:
      tags:
        - coupon
      summary: Deletes multiple coupons
      description: |
        Delete coupons on the UltraCart account.
      parameters:
        -
          name: coupon_delete_request
          in: body
          description: Coupon oids to delete
          required: true
          schema:
            $ref: "#/definitions/CouponDeletesRequest"
      operationId: deleteCouponsByCode
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/by_oid:
    delete:
      tags:
        - coupon
      summary: Deletes multiple coupons
      description: |
        Delete coupons on the UltraCart account.
      parameters:
        -
          name: coupon_delete_request
          in: body
          description: Coupon oids to delete
          required: true
          schema:
            $ref: "#/definitions/CouponDeletesRequest"
      operationId: deleteCouponsByOid
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/merchant_code/{merchant_code}:
    get:
      tags:
        - coupon
      summary: Retrieve a coupon by merchant code
      description: |
        Retrieves a single coupon using the specified merchant code.
      parameters:
        -
          name: merchant_code
          in: path
          description: The coupon merchant code to retrieve.
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCouponByMerchantCode
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/merchant_code/{merchant_code}/exists:
    get:
      tags:
        - coupon
      summary: Determines if a coupon merchant code already exists
      description: |
        Determines if a coupon merchant code already exists.
      parameters:
        -
          name: merchant_code
          in: path
          description: The coupon merchant code to examine.
          required: true
          type: string
      operationId: doesCouponCodeExist
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponExistsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/merchant_code/{merchant_code}/generate_codes:
    post:
      tags:
        - coupon
      summary: Generates one time codes by merchant code
      description: |
        Generate one time codes by merchant code
      parameters:
        -
          name: merchant_code
          in: path
          description: The merchant code to generate one time codes.
          required: true
          type: string
        -
          name: coupon_codes_request
          in: body
          description: Coupon code generation parameters
          required: true
          schema:
            $ref: "#/definitions/CouponCodesRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: generateOneTimeCodesByMerchantCode
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponCodesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/query:
    post:
      tags:
        - coupon
      summary: Retrieve coupons by query
      description: |
        Retrieves coupons from the account.  If no parameters are specified, all coupons will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: coupon_query
          in: body
          description: Coupon query
          required: true
          schema:
            $ref: "#/definitions/CouponQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the coupons.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCouponsByQuery
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/{coupon_oid}:
    delete:
      tags:
        - coupon
      summary: Delete a coupon
      description: |
        Delete a coupon on the UltraCart account.
      parameters:
        -
          name: coupon_oid
          in: path
          description: The coupon_oid to delete.
          required: true
          type: integer
          format: int32
      operationId: deleteCoupon
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - coupon
      summary: Retrieve a coupon
      description: |
        Retrieves a single coupon using the specified coupon profile oid.
      parameters:
        -
          name: coupon_oid
          in: path
          description: The coupon oid to retrieve.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCoupon
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - coupon
      summary: Update a coupon
      description: |
        Update a coupon on the UltraCart account.
      parameters:
        -
          name: coupon
          in: body
          description: Coupon to update
          required: true
          schema:
            $ref: "#/definitions/Coupon"
        -
          name: coupon_oid
          in: path
          description: The coupon_oid to update.
          required: true
          type: integer
          format: int32
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      consumes:
        - application/json; charset=UTF-8
      operationId: updateCoupon
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/{coupon_oid}/generate_codes:
    post:
      tags:
        - coupon
      summary: Generates one time codes for a coupon
      description: |
        Generate one time codes for a coupon
      parameters:
        -
          name: coupon_oid
          in: path
          description: The coupon oid to generate codes.
          required: true
          type: integer
          format: int32
        -
          name: coupon_codes_request
          in: body
          description: Coupon code generation parameters
          required: true
          schema:
            $ref: "#/definitions/CouponCodesRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: generateCouponCodes
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponCodesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/coupons/{coupon_oid}/upload_codes:
    post:
      tags:
        - coupon
      summary: Upload one-time codes for a coupon
      description: |
        Upload one-time codes for a coupon
      parameters:
        -
          name: coupon_oid
          in: path
          description: The coupon oid to associate with the provided one-time codes.
          required: true
          type: integer
          format: int32
        -
          name: upload_coupon_codes_request
          in: body
          description: One-time coupon codes
          required: true
          schema:
            $ref: "#/definitions/UploadCouponCodesRequest"
      consumes:
        - application/json; charset=UTF-8
      operationId: uploadCouponCodes
      security:
        - ultraCartOauth:
          - coupon_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/UploadCouponCodesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/editor_values:
    get:
      tags:
        - coupon
      summary: Retrieve values needed for a coupon editor
      description: |
        Retrieve values needed for a coupon editor
      operationId: getEditorValues
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponEditorValues"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /coupon/searchItems:
    get:
      tags:
        - coupon
      summary: Searches for items to display within a coupon editor and assign to coupons
      description: |
        Searches for items to display within a coupon editor and assign to coupons
      parameters:
        -
          name: s
          in: query
          required: false
          type: string
        -
          name: m
          in: query
          required: false
          type: integer
          format: int32
      operationId: searchItems
      security:
        - ultraCartOauth:
          - coupon_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CouponItemSearchResultsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# GiftCertificateRestApi
# ==========================================================================
  /gift_certificate/gift_certificates:
    post:
      tags:
        - gift certificate
      summary: Create a gift certificate
      description: |
        Creates a gift certificate for this merchant account.
      parameters:
        -
          name: gift_certificate_create_request
          in: body
          description: Gift certificate create request
          required: true
          schema:
            $ref: "#/definitions/GiftCertificateCreateRequest"
      operationId: createGiftCertificate
      security:
        - ultraCartOauth:
          - gift_certificate_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /gift_certificate/gift_certificates/by_code/{code}:
    post:
      tags:
        - gift certificate
      summary: Retrieve gift certificate by code
      description: |
        Retrieves a gift certificate from the account based on the code (the value the customer enters at checkout time).
      parameters:
        -
          name: code
          in: path
          required: true
          type: string
      operationId: getGiftCertificateByCode
      security:
        - ultraCartOauth:
          - gift_certificate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /gift_certificate/gift_certificates/by_email/{email}:
    post:
      tags:
        - gift certificate
      summary: Retrieve gift certificate by email
      description: |
        Retrieves all gift certificates from the account based on customer email.
      parameters:
        -
          name: email
          in: path
          required: true
          type: string
      operationId: getGiftCertificatesByEmail
      security:
        - ultraCartOauth:
          - gift_certificate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificatesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /gift_certificate/gift_certificates/query:
    post:
      tags:
        - gift certificate
      summary: Retrieve gift certificates by query
      description: |
        Retrieves gift certificates from the account.  If no parameters are specified, all gift certificates will be returned.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: gift_certificate_query
          in: body
          description: Gift certificates query
          required: true
          schema:
            $ref: "#/definitions/GiftCertificateQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _since
          in: query
          description: Fetch customers that have been created/modified since this date/time.
          required: false
          type: string
          format: dateTime
        -
          name: _sort
          in: query
          description: The sort order of the customers.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getGiftCertificatesByQuery
      security:
        - ultraCartOauth:
          - gift_certificate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificatesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /gift_certificate/gift_certificates/{gift_certificate_oid}:
    delete:
      tags:
        - gift certificate
      summary: Delete a gift certificate
      description: |
        Deletes a gift certificate for this merchant account.
      parameters:
        -
          name: gift_certificate_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteGiftCertificate
      security:
        - ultraCartOauth:
          - gift_certificate_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - gift certificate
      summary: Retrieve gift certificate by oid
      description: |
        Retrieves a gift certificate from the account based on the internal primary key.
      parameters:
        -
          name: gift_certificate_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getGiftCertificateByOid
      security:
        - ultraCartOauth:
          - gift_certificate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - gift certificate
      summary: Update a gift certificate
      description: |
        Update a gift certificate for this merchant account.
      parameters:
        -
          name: gift_certificate_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: gift_certificate
          in: body
          description: Gift certificate
          required: true
          schema:
            $ref: "#/definitions/GiftCertificate"
      operationId: updateGiftCertificate
      security:
        - ultraCartOauth:
          - gift_certificate_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /gift_certificate/gift_certificates/{gift_certificate_oid}/ledger_entry:
    post:
      tags:
        - gift certificate
      summary: Add a gift certificate ledger entry
      description: |
        Adds a ledger entry for this gift certificate.
      parameters:
        -
          name: gift_certificate_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: gift_certificate_ledger_entry
          in: body
          description: Gift certificate ledger entry
          required: true
          schema:
            $ref: "#/definitions/GiftCertificateLedgerEntry"
      operationId: addGiftCertificateLedgerEntry
      security:
        - ultraCartOauth:
          - gift_certificate_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/GiftCertificateResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# IntegrationLogRestApi
# ==========================================================================
  /integration_log/query:
    post:
      tags:
        - integration_log
      summary: Retrieve integration logs
      description: |
        Retrieves a set of integration logs from the account based on a query object.
      parameters:
        -
          name: integration_log_query
          in: body
          description: Integration log query
          required: true
          schema:
            $ref: "#/definitions/IntegrationLogQueryRequest"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Default 100, Max 500)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _sort
          in: query
          description: The sort order of the items.  See Sorting documentation for examples of using multiple values and sorting by ascending and descending.
          required: false
          type: string
      operationId: getIntegrationLogsQuery
      security:
        - ultraCartOauth:
          - integration_log_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/IntegrationLogQueryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /integration_log/query/{pk}/{sk}:
    get:
      tags:
        - integration_log
      summary: Retrieve an integration log
      description: |
        Retrieve an integration logs from the account based identifiers
      parameters:
        -
          name: pk
          in: path
          required: true
          type: string
        -
          name: sk
          in: path
          required: true
          type: string
      operationId: getIntegrationLog
      security:
        - ultraCartOauth:
          - integration_log_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/IntegrationLogResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /integration_log/query/{pk}/{sk}/{uuid}:
    get:
      tags:
        - integration_log
      summary: Retrieve an integration log file
      description: |
        Retrieve an integration log file from the account based identifiers
      parameters:
        -
          name: pk
          in: path
          required: true
          type: string
        -
          name: sk
          in: path
          required: true
          type: string
        -
          name: uuid
          in: path
          required: true
          type: string
      operationId: getIntegrationLogFile
      security:
        - ultraCartOauth:
          - integration_log_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/octet-stream
      responses:
        200:
          description: "Successful response"
          schema:
            type: file
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /integration_log/query/{pk}/{sk}/{uuid}/pdf:
    get:
      tags:
        - integration_log
      summary: Retrieve an integration log file converted to PDF
      description: |
        Retrieve an integration log file from the account based identifiers
      parameters:
        -
          name: pk
          in: path
          required: true
          type: string
        -
          name: sk
          in: path
          required: true
          type: string
        -
          name: uuid
          in: path
          required: true
          type: string
      operationId: getIntegrationLogFilePdf
      security:
        - ultraCartOauth:
          - integration_log_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/octet-stream
      responses:
        200:
          description: "Successful response"
          schema:
            type: file
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /integration_log/summary/query:
    post:
      tags:
        - integration_log
      summary: Retrieve integration log summaries
      description: |
        Retrieves a set of integration log summaries from the account based on a query object.
      parameters:
        -
          name: integration_log_summaries_query
          in: body
          description: Integration log summaries query
          required: true
          schema:
            $ref: "#/definitions/IntegrationLogSummaryQueryRequest"
      operationId: getIntegrationLogSummariesQuery
      security:
        - ultraCartOauth:
          - integration_log_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/IntegrationLogSummaryQueryResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# TaxRestApi
# ==========================================================================
  /tax/providers:
    get:
      tags:
        - tax
      summary: Retrieve tax methods
      description: |
        Retrieves tax methods for this account.
      parameters:
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getTaxProviders
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProvidersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/avalara:
    get:
      tags:
        - tax
      summary: Retrieve the Avalara tax provider
      description: |
        Retrieves the Avalara tax provider.
      operationId: getTaxProviderAvalara
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderAvalara"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Update the Avalara tax provider
      description: |
        Update the Avalara tax provider.
      parameters:
        -
          name: tax_provider_avalara
          in: body
          description: TaxProviderAvalara object
          required: true
          schema:
            $ref: "#/definitions/TaxProviderAvalara"
      operationId: updateTaxProviderAvalara
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderAvalara"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/avalara/companies:
    post:
      tags:
        - tax
      summary: Returns Avalara Tax companies configured by the merchant
      description: |
        Returns Avalara Tax companies configured by the merchant
      parameters:
        -
          name: tax_provider_avalara
          in: body
          description: TaxProviderAvalara object
          required: true
          schema:
            $ref: "#/definitions/TaxProviderAvalara"
      operationId: getTaxProviderAvalaraCompanies
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderAvalaraCompaniesResult"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/avalara/test:
    get:
      tags:
        - tax
      summary: Attempts to connect to Avalara and returns back the response
      description: |
        Attempts to connect to Avalara and returns back the response.
      operationId: getTaxProviderAvalaraTest
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderTestResult"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self:
    get:
      tags:
        - tax
      summary: Retrieve the Self tax provider
      description: |
        Retrieves the Self tax provider.
      operationId: getTaxProviderSelf
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderSelf"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Update the Self tax provider
      description: |
        Update the Self tax provider.
      parameters:
        -
          name: tax_provider_self
          in: body
          description: TaxProviderSelf object
          required: true
          schema:
            $ref: "#/definitions/TaxProviderSelf"
      operationId: updateTaxProviderSelf
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderSelf"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/city/{city}:
    delete:
      tags:
        - tax
      summary: Deletes a Self tax provider city
      description: |
        Deletes a Self tax provider city.
      parameters:
        -
          name: city
          in: path
          description: The city being deleted.
          required: true
          type: string
        -
          name: tax_city
          in: body
          description: tax city to be deleted
          required: true
          schema:
            $ref: "#/definitions/TaxCity"
      operationId: deleteTaxProviderSelfCity
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Updates a Self tax provider city
      description: |
        Updates a Self tax provider city.
      parameters:
        -
          name: city
          in: path
          description: The city being updated.
          required: true
          type: string
        -
          name: tax_city
          in: body
          description: tax city to be updated
          required: true
          schema:
            $ref: "#/definitions/TaxCity"
      operationId: updateTaxProviderSelfCity
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxCity"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/countries:
    get:
      tags:
        - tax
      summary: Retrieve the Self tax provider countries
      description: |
        Retrieves the Self tax provider countries.
      operationId: getTaxProviderSelfCountries
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderSelfCountriesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/country/{countryCode}:
    delete:
      tags:
        - tax
      summary: Deletes a Self tax provider country
      description: |
        Deletes a Self tax provider country.
      parameters:
        -
          name: countryCode
          in: path
          description: The country code being deleted.
          required: true
          type: string
        -
          name: tax_country
          in: body
          description: tax country to be deleted
          required: true
          schema:
            $ref: "#/definitions/TaxCountry"
      operationId: deleteTaxProviderSelfCountry
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Updates a Self tax provider country
      description: |
        Updates a Self tax provider country.
      parameters:
        -
          name: countryCode
          in: path
          description: The country code being updated.
          required: true
          type: string
        -
          name: tax_country
          in: body
          description: tax country to be updated
          required: true
          schema:
            $ref: "#/definitions/TaxCountry"
      operationId: updateTaxProviderSelfCountry
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxCountry"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/county/{county}:
    delete:
      tags:
        - tax
      summary: Deletes a Self tax provider county
      description: |
        Deletes a Self tax provider county.
      parameters:
        -
          name: county
          in: path
          description: The county being deleted.
          required: true
          type: string
        -
          name: tax_county
          in: body
          description: tax county to be deleted
          required: true
          schema:
            $ref: "#/definitions/TaxCounty"
      operationId: deleteTaxProviderSelfCounty
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Updates a Self tax provider county
      description: |
        Updates a Self tax provider county.
      parameters:
        -
          name: county
          in: path
          description: The county being updated.
          required: true
          type: string
        -
          name: tax_county
          in: body
          description: tax county to be updated
          required: true
          schema:
            $ref: "#/definitions/TaxCounty"
      operationId: updateTaxProviderSelfCounty
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxCounty"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/postalCode/{postal_code}:
    delete:
      tags:
        - tax
      summary: Deletes a Self tax provider postalCode
      description: |
        Deletes a Self tax provider postalCode.
      parameters:
        -
          name: postal_code
          in: path
          description: The postal code being deleted.
          required: true
          type: string
        -
          name: tax_postal_code
          in: body
          description: tax postal code to be deleted
          required: true
          schema:
            $ref: "#/definitions/TaxPostalCode"
      operationId: deleteTaxProviderSelfPostalCode
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Updates a Self tax provider postalCode
      description: |
        Updates a Self tax provider postalCode.
      parameters:
        -
          name: postal_code
          in: path
          description: The postal code being updated.
          required: true
          type: string
        -
          name: tax_postal_code
          in: body
          description: tax postal code to be updated
          required: true
          schema:
            $ref: "#/definitions/TaxPostalCode"
      operationId: updateTaxProviderSelfPostalCode
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxPostalCode"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/regions/{countryCode}:
    get:
      tags:
        - tax
      summary: Retrieve the Self tax provider regions for a given country code
      description: |
        Retrieves the Self tax provider regions for a given country code.
      parameters:
        -
          name: countryCode
          in: path
          description: The country code regions desired.
          required: true
          type: string
      operationId: getTaxProviderSelfRegionsByCountryCode
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderSelfRegionsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/self/state/{stateCode}:
    delete:
      tags:
        - tax
      summary: Deletes a Self tax provider state
      description: |
        Deletes a Self tax provider state.
      parameters:
        -
          name: stateCode
          in: path
          description: The state code being deleted.
          required: true
          type: string
        -
          name: tax_state
          in: body
          description: tax state to be deleted
          required: true
          schema:
            $ref: "#/definitions/TaxState"
      operationId: deleteTaxProviderSelfState
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Updates a Self tax provider state
      description: |
        Updates a Self tax provider state.
      parameters:
        -
          name: stateCode
          in: path
          description: The state code being updated.
          required: true
          type: string
        -
          name: tax_state
          in: body
          description: tax state to be updated
          required: true
          schema:
            $ref: "#/definitions/TaxState"
      operationId: updateTaxProviderSelfState
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxState"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/setActive/{providerName}:
    post:
      tags:
        - tax
      summary: Toggle a tax provider to active
      description: |
        Toggle a tax provider to active.
      parameters:
        -
          name: providerName
          in: path
          description: The tax provider to set active.
          required: true
          type: string
      operationId: setActiveTaxProvider
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderActivateResult"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/sovos:
    get:
      tags:
        - tax
      summary: Retrieve the Sovos tax provider
      description: |
        Retrieves the Sovos tax provider.
      operationId: getTaxProviderSovos
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderSovos"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Update the Sovos tax provider
      description: |
        Update the Sovos tax provider.
      parameters:
        -
          name: tax_provider_sovos
          in: body
          description: TaxProviderSovos object
          required: true
          schema:
            $ref: "#/definitions/TaxProviderSovos"
      operationId: updateTaxProviderSovos
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderSovos"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/sovos/test:
    get:
      tags:
        - tax
      summary: Attempts to connect to Sovos and returns back the response
      description: |
        Attempts to connect to Sovos and returns back the response.
      operationId: getTaxProviderSovosTest
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderTestResult"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/taxjar:
    get:
      tags:
        - tax
      summary: Retrieve the TaxJar tax provider
      description: |
        Retrieves the TaxJar tax provider.
      operationId: getTaxProviderTaxJar
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderTaxJar"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Update the TaxJar tax provider
      description: |
        Update the TaxJar tax provider.
      parameters:
        -
          name: tax_provider_taxJar
          in: body
          description: TaxProviderTaxJar object
          required: true
          schema:
            $ref: "#/definitions/TaxProviderTaxJar"
      operationId: updateTaxProviderTaxJar
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderTaxJar"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/taxjar/test:
    get:
      tags:
        - tax
      summary: Attempts to connect to TaxJar and returns back the response
      description: |
        Attempts to connect to TaxJar and returns back the response.
      operationId: getTaxProviderTaxJarTest
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderTestResult"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /tax/providers/ultracart:
    get:
      tags:
        - tax
      summary: Retrieve the UltraCart tax provider
      description: |
        Retrieves the UltraCart tax provider.
      operationId: getTaxProviderUltraCart
      security:
        - ultraCartOauth:
          - tax_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderUltraCart"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - tax
      summary: Update the UltraCart tax provider
      description: |
        Update the UltraCart tax provider.
      parameters:
        -
          name: tax_provider_ultracart
          in: body
          description: TaxProviderUltraCart object
          required: true
          schema:
            $ref: "#/definitions/TaxProviderUltraCart"
      operationId: updateTaxProviderUltraCart
      security:
        - ultraCartOauth:
          - tax_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/TaxProviderUltraCart"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# CheckoutRestApi
# ==========================================================================
  /checkout/affiliateClick/register:
    post:
      tags:
        - checkout
      summary: Register affiliate click
      description: |
        Register an affiliate click.  Used by custom checkouts that are completely API based and do not perform checkout handoff.
      parameters:
        -
          name: register_affiliate_click_request
          in: body
          description: Register affiliate click request
          required: true
          schema:
            $ref: "#/definitions/RegisterAffiliateClickRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: registerAffiliateClick
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/RegisterAffiliateClickResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/allowedCountries:
    post:
      tags:
        - checkout
      summary: Allowed countries
      description: |
        Lookup the allowed countries for this merchant id
      operationId: getAllowedCountries
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CheckoutAllowedCountriesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/browser_key:
    put:
      tags:
        - checkout
      summary: Setup Browser Application
      description: |
        Setup a browser key authenticated application with checkout permissions.  This REST call must be made with an authentication scheme that is not browser key.  The new application will be linked to the application that makes this call.  If this application is disabled / deleted, then so will the application setup by this call.  The purpose of this call is to allow an OAuth application, such as the Wordpress plugin, to setup the proper browser based authentication for the REST checkout API to use.
      parameters:
        -
          name: browser_key_request
          in: body
          description: Setup browser key request
          required: true
          schema:
            $ref: "#/definitions/CheckoutSetupBrowserKeyRequest"
      operationId: setupBrowserKey
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CheckoutSetupBrowserKeyResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart:
    get:
      tags:
        - checkout
      summary: Get cart
      description: |
        If the cookie is set on the browser making the request then it will return their active cart.  Otherwise it will create a new cart.
      parameters:
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCart
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - checkout
      summary: Update cart
      description: |
        Update the cart.
      parameters:
        -
          name: cart
          in: body
          description: Cart
          required: true
          schema:
            $ref: "#/definitions/Cart"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: updateCart
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/finalizeOrder:
    post:
      tags:
        - checkout
      summary: Finalize Order
      description: |
        Finalize the cart into an order.  This method can not be called with browser key authentication.  It is ONLY meant for server side code to call.
      parameters:
        -
          name: finalize_request
          in: body
          description: Finalize request
          required: true
          schema:
            $ref: "#/definitions/CartFinalizeOrderRequest"
      operationId: finalizeOrder
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartFinalizeOrderResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/handoff:
    post:
      tags:
        - checkout
      summary: Handoff cart
      description: |
        Handoff the browser to UltraCart for view cart on StoreFront, transfer to PayPal, transfer to Affirm, transfer to Sezzle or finalization of the order (including upsell processing).
      parameters:
        -
          name: handoff_request
          in: body
          description: Handoff request
          required: true
          schema:
            $ref: "#/definitions/CheckoutHandoffRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: handoffCart
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CheckoutHandoffResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/profile/login:
    post:
      tags:
        - checkout
      summary: Profile login
      description: |
        Login in to the customer profile specified by cart.billing.email and password
      parameters:
        -
          name: login_request
          in: body
          description: Login request
          required: true
          schema:
            $ref: "#/definitions/CartProfileLoginRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: login
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartProfileLoginResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/profile/logout:
    post:
      tags:
        - checkout
      summary: Profile logout
      description: |
        Log the cart out of the current profile.  No error will occur if they are not logged in.
      parameters:
        -
          name: cart
          in: body
          description: Cart
          required: true
          schema:
            $ref: "#/definitions/Cart"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: logout
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/profile/register:
    post:
      tags:
        - checkout
      summary: Profile registration
      description: |
        Register a new customer profile.  Requires the cart.billing object to be populated along with the password.
      parameters:
        -
          name: register_request
          in: body
          description: Register request
          required: true
          schema:
            $ref: "#/definitions/CartProfileRegisterRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: register
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartProfileRegisterResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/validate:
    post:
      tags:
        - checkout
      summary: Validate
      description: |
        Validate the cart for errors.  Specific checks can be passed and multiple validations can occur throughout your checkout flow.
      parameters:
        -
          name: validation_request
          in: body
          description: Validation request
          required: true
          schema:
            $ref: "#/definitions/CartValidationRequest"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: validateCart
      security:
        - ultraCartOauth:
          - checkout_write
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartValidationResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/{cart_id}:
    get:
      tags:
        - checkout
      summary: Get cart (by cart id)
      description: |
        Get a cart specified by the cart_id parameter.
      parameters:
        -
          name: cart_id
          in: path
          description: Cart ID to retrieve
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCartByCartId
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/cart/{cart_id}/affirmCheckout:
    get:
      tags:
        - checkout
      summary: Get affirm checkout (by cart id)
      description: |
        Get a Affirm checkout object for the specified cart_id parameter.
      parameters:
        -
          name: cart_id
          in: path
          description: Cart ID to retrieve
          required: true
          type: string
      operationId: getAffirmCheckout
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartAffirmCheckoutResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/city_state:
    post:
      tags:
        - checkout
      summary: City/State for Zip
      description: |
        Look up the city and state for the shipping zip code.  Useful for building an auto complete for parts of the shipping address
      parameters:
        -
          name: cart
          in: body
          description: Cart
          required: true
          schema:
            $ref: "#/definitions/Cart"
      operationId: cityState
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CityStateZip"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/relatedItems/{item_id}:
    post:
      tags:
        - checkout
      summary: Related items (specific item)
      description: |
        Retrieve all the related items for the cart contents.  Expansion is limited to content, content.assignments, content.attributes, content.multimedia, content.multimedia.thumbnails, options, pricing, and pricing.tiers.
      parameters:
        -
          name: item_id
          in: path
          description: Item ID to retrieve related items for
          required: true
          type: string
        -
          name: cart
          in: body
          description: Cart
          required: true
          schema:
            $ref: "#/definitions/Cart"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See item resource documentation for examples
          required: false
          type: string
      operationId: relatedItemsForItem
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/related_items:
    post:
      tags:
        - checkout
      summary: Related items
      description: |
        Retrieve all the related items for the cart contents.  Expansion is limited to content, content.assignments, content.attributes, content.multimedia, content.multimedia.thumbnails, options, pricing, and pricing.tiers.
      parameters:
        -
          name: cart
          in: body
          description: Cart
          required: true
          schema:
            $ref: "#/definitions/Cart"
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See item resource documentation for examples
          required: false
          type: string
      operationId: relatedItemsForCart
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ItemsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/return/{return_code}:
    get:
      tags:
        - checkout
      summary: Get cart (by return code)
      description: |
        Get a cart specified by the return code parameter.
      parameters:
        -
          name: return_code
          in: path
          description: Return code to lookup cart ID by
          required: true
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCartByReturnCode
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/return_token:
    get:
      tags:
        - checkout
      summary: Get cart (by return token)
      description: |
        Get a cart specified by the encrypted return token parameter.
      parameters:
        -
          name: return_token
          in: query
          description: Return token provided by StoreFront Communications
          required: false
          type: string
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  See documentation for examples
          required: false
          type: string
      operationId: getCartByReturnToken
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /checkout/stateProvincesForCountry/{country_code}:
    post:
      tags:
        - checkout
      summary: Get state/province list for a country code
      description: |
        Lookup a state/province list for a given country code
      parameters:
        -
          name: country_code
          in: path
          description: Two letter ISO country code
          required: true
          type: string
      operationId: getStateProvincesForCountry
      security:
        - ultraCartOauth:
          - checkout_read
        - ultraCartSimpleApiKey: []
        - ultraCartBrowserApiKey: []
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/CheckoutStateProvinceResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# AffiliateRestApi
# ==========================================================================
  /affiliate/clicks/query:
    post:
      tags:
        - affiliate
      summary: Retrieve clicks
      description: |
        Retrieves a group of clicks from the account based on a query object.  If no parameters are specified, the API call will fail with a bad request error.  Always specify some parameters to limit the scope of the clicks returned to ones you are truly interested in.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: click_query
          in: body
          description: Click query
          required: true
          schema:
            $ref: "#/definitions/AffiliateClickQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 10000)
          required: false
          default: 10000
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  Only option is link.
          required: false
          type: string
      operationId: getClicksByQuery
      security:
        - ultraCartOauth:
          - affiliate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AffiliateClicksResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /affiliate/ledgers/query:
    post:
      tags:
        - affiliate
      summary: Retrieve ledger entries
      description: |
        Retrieves a group of ledger entries from the account based on a query object.  If no parameters are specified, the API call will fail with a bad request error.  Always specify some parameters to limit the scope of the ledgers returned to ones you are truly interested in.  You will need to make multiple API calls in order to retrieve the entire result set since this API performs result set pagination.
      parameters:
        -
          name: ledger_query
          in: body
          description: Ledger query
          required: true
          schema:
            $ref: "#/definitions/AffiliateLedgerQuery"
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Maximum 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
        -
          name: _expand
          in: query
          description: The object expansion to perform on the result.  Only option is link.
          required: false
          type: string
      operationId: getLedgersByQuery
      security:
        - ultraCartOauth:
          - affiliate_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/AffiliateLedgersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# ConversationRestApi
# ==========================================================================
  /conversation//rest/v2/conversation/agent/profiles/{user_id}/knowledge_base/upload_url/{extension}:
    get:
      tags:
        - conversation
      summary: Get a pre-signed conversation knowledge base document upload URL
      description: |
        Get a pre-signed conversation knowledge base document upload URL
      parameters:
        -
          name: user_id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: extension
          in: path
          required: true
          type: string
      operationId: getConversationKnowledgeBaseDocumentUploadUrl
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationKnowledgeBaseDocumentUploadUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/agent/auth:
    put:
      tags:
        - conversation
      summary: Get agent websocket authorization
      description: |
        Retrieve a JWT to authorize an agent to make a websocket connection.
      operationId: getAgentWebsocketAuthorization
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationAgentAuthResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/agent/keepalive:
    get:
      tags:
        - conversation
      summary: Agent keep alive
      description: |
        Called periodically by the conversation API to keep the session alive.
      operationId: getAgentKeepAlive
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/agent/profile:
    get:
      tags:
        - conversation
      summary: Get agent profile
      description: |
        Retrieve the agents profile
      operationId: getAgentProfile
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationAgentProfileResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update agent profile
      description: |
        Update agent profile
      parameters:
        -
          name: profile_request
          in: body
          description: Profile request
          required: true
          schema:
            $ref: "#/definitions/ConversationAgentProfile"
      operationId: updateAgentProfile
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationAgentProfileResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/agent/profiles:
    get:
      tags:
        - conversation
      summary: Get agent profiles
      description: |
        Retrieve the agents profile
      operationId: getAgentProfiles
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationAgentProfilesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/agent/profiles/{user_id}/knowledge_base:
    get:
      tags:
        - conversation
      summary: Get the list of knowledge base documents associated with this agent profile
      description: |
        Retrieve knowledge base documents
      parameters:
        -
          name: user_id
          in: path
          required: true
          type: integer
          format: int32
      operationId: getAgentProfileKnowledgeBase
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationKnowledgeBaseDocumentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert a knowledge base document
      description: |
        Insert a knowledge base document
      parameters:
        -
          name: user_id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: knowledge_base_document_request
          in: body
          description: Insert request
          required: true
          schema:
            $ref: "#/definitions/ConversationInsertKnowledgeBaseDocumentRequest"
      operationId: insertAgentProfileKnowledgeBaseDocument
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationInsertKnowledgeBaseDocumentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/agent/profiles/{user_id}/knowledge_base/{document_uuid}:
    delete:
      tags:
        - conversation
      summary: Delete a knowledge base document
      description: |
        Delete a knowledge base document
      parameters:
        -
          name: user_id
          in: path
          required: true
          type: integer
          format: int32
        -
          name: document_uuid
          in: path
          required: true
          type: string
      operationId: deleteAgentProfileKnowledgeBaseDocument
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationDeleteKnowledgeBaseDocumentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/canned_messages:
    get:
      tags:
        - conversation
      summary: Retrieve a list of canned messages ordered by short_code
      description: |
        Retrieve a list of canned messages ordered by short_code
      operationId: getConversationCannedMessages
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationCannedMessagesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert a canned message
      description: |
        Insert a canned message
      parameters:
        -
          name: canned_message
          in: body
          description: Canned message
          required: true
          schema:
            $ref: "#/definitions/ConversationCannedMessage"
      operationId: insertConversationCannedMessage
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationCannedMessageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/canned_messages/search:
    post:
      tags:
        - conversation
      summary: Search for canned messages by short_code
      description: |
        Search for canned messages by short_code
      parameters:
        -
          name: search_request
          in: body
          description: Search request
          required: true
          schema:
            $ref: "#/definitions/ConversationCannedMessagesSearch"
      operationId: searchConversationCannedMessages
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationCannedMessagesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/canned_messages/{conversation_canned_message_oid}:
    delete:
      tags:
        - conversation
      summary: Delete a conversation canned message
      description: |
        Delete a conversation canned message
      parameters:
        -
          name: conversation_canned_message_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteConversationCannedMessage
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update a canned message
      description: |
        Update a canned message
      parameters:
        -
          name: conversation_canned_message_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: canned_message
          in: body
          description: Canned message
          required: true
          schema:
            $ref: "#/definitions/ConversationCannedMessage"
      operationId: updateConversationCannedMessage
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationCannedMessageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations:
    get:
      tags:
        - conversation
      summary: Retrieve a list of conversation summaries newest to oldest
      description: |
        Retrieve a list of conversation summaries that are ordered newest to oldest, include the most recent message and whether its been read.
      parameters:
        -
          name: medium
          in: query
          required: false
          type: string
        -
          name: before
          in: query
          required: false
          type: string
        -
          name: _limit
          in: query
          description: The maximum number of records to return on this one API call. (Max 200)
          required: false
          default: 100
          type: integer
        -
          name: _offset
          in: query
          description: Pagination of the record set.  Offset is a zero based index.
          required: false
          default: 0
          type: integer
      operationId: getConversations
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Start a conversation
      description: |
        Start a new conversation
      parameters:
        -
          name: start_request
          in: body
          description: Start request
          required: true
          schema:
            $ref: "#/definitions/ConversationStartRequest"
      operationId: startConversation
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationStartResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/autocomplete:
    post:
      tags:
        - conversation
      summary: Retrieve a list of matching terms for a search field
      description: |
        Retrieve a list of matching terms for a search field
      parameters:
        -
          name: autocomplete_request
          in: body
          description: Autocomplete Request
          required: true
          schema:
            $ref: "#/definitions/ConversationAutocompleteRequest"
      operationId: getConversationsAutocomplete
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationAutocompleteResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/queues/statuses:
    get:
      tags:
        - conversation
      summary: Retrieve a conversation webchat queue statuses
      description: |
        Retrieve a conversation webchat queue statuses including agent status and queue entries
      operationId: getConversationWebchatQueueStatuses
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationWebchatQueueStatusesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/queues/{queue_name}/status:
    put:
      tags:
        - conversation
      summary: Update status within the queue
      description: |
        Update status within the queue
      parameters:
        -
          name: queue_name
          in: path
          required: true
          type: string
        -
          name: status_request
          in: body
          description: Status request
          required: true
          schema:
            $ref: "#/definitions/ConversationWebchatQueueStatusUpdateRequest"
      operationId: updateConversationWebchatQueueStatus
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/search:
    post:
      tags:
        - conversation
      summary: Search conversations
      description: |
        Search conversations
      parameters:
        -
          name: search_request
          in: body
          description: Search Request
          required: true
          schema:
            $ref: "#/definitions/ConversationSearchRequest"
      operationId: getConversationsSearch
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationSearchResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}:
    get:
      tags:
        - conversation
      summary: Retrieve a conversation
      description: |
        Retrieve a conversation including the participants and messages
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
        -
          name: limit
          in: query
          required: false
          type: integer
          format: int32
      operationId: getConversation
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}/context:
    put:
      tags:
        - conversation
      summary: Get a webchat conversation context
      description: |
        Get a webchat conversation context
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
      operationId: getConversationContext
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationWebchatContext"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}/join:
    put:
      tags:
        - conversation
      summary: Join a conversation
      description: |
        Join a conversation
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
        -
          name: join_request
          in: body
          description: Join request
          required: false
          schema:
            $ref: "#/definitions/ConversationJoinRequest"
      operationId: joinConversation
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}/leave:
    delete:
      tags:
        - conversation
      summary: Leave a conversation
      description: |
        Leave a conversation
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
      operationId: leaveConversation
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}/markread:
    put:
      tags:
        - conversation
      summary: Mark a conversation as read
      description: |
        Mark a conversation as read
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
      operationId: markReadConversation
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}/messages/{since}:
    get:
      tags:
        - conversation
      summary: Retrieve conversation messages
      description: |
        Retrieve conversation messages since a particular time
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
        -
          name: since
          in: path
          required: true
          type: integer
          format: int64
        -
          name: limit
          in: query
          required: false
          type: integer
          format: int32
      operationId: getConversationMessages
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationMessagesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/conversations/{conversation_uuid}/sms_unsubscribe:
    put:
      tags:
        - conversation
      summary: Unsubscribe any SMS participants in this conversation
      description: |
        Unsubscribe any SMS participants in this conversation
      parameters:
        -
          name: conversation_uuid
          in: path
          required: true
          type: string
      operationId: smsUnsubscribeConversation
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/department_members:
    get:
      tags:
        - conversation
      summary: Retrieve a list of possible department members
      description: |
        Retrieve a list of possible department members
      operationId: getConversationDepartmentMemberList
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationDepartmentMembersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/departments:
    get:
      tags:
        - conversation
      summary: Retrieve a list of departments ordered by name
      description: |
        Retrieve a list of departments ordered by name
      operationId: getConversationDepartments
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationDepartmentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert a department
      description: |
        Insert a department
      parameters:
        -
          name: department
          in: body
          description: Department
          required: true
          schema:
            $ref: "#/definitions/ConversationDepartment"
      operationId: insertConversationDepartment
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationDepartmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/departments/{conversation_department_oid}:
    delete:
      tags:
        - conversation
      summary: Delete a conversation department
      description: |
        Delete a conversation department
      parameters:
        -
          name: conversation_department_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteDepartment
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update a department
      description: |
        Update a department
      parameters:
        -
          name: conversation_department_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: department
          in: body
          description: Department
          required: true
          schema:
            $ref: "#/definitions/ConversationDepartment"
      operationId: updateConversationDepartment
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationDepartmentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/engagements:
    get:
      tags:
        - conversation
      summary: Retrieve a list of engagements ordered by name
      description: |
        Retrieve a list of engagements ordered by name
      operationId: getConversationEngagements
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationEngagementsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert a engagement
      description: |
        Insert a engagement
      parameters:
        -
          name: engagement
          in: body
          description: Engagement
          required: true
          schema:
            $ref: "#/definitions/ConversationEngagement"
      operationId: insertConversationEngagement
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationEngagementResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/engagements/{conversation_engagement_oid}:
    delete:
      tags:
        - conversation
      summary: Delete a conversation engagement
      description: |
        Delete a conversation engagement
      parameters:
        -
          name: conversation_engagement_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: deleteEngagement
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Retrieve an engagement
      description: |
        Retrieve an engagement
      parameters:
        -
          name: conversation_engagement_oid
          in: path
          required: true
          type: integer
          format: int32
      operationId: getConversationEngagement
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationEngagementResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update a engagement
      description: |
        Update a engagement
      parameters:
        -
          name: conversation_engagement_oid
          in: path
          required: true
          type: integer
          format: int32
        -
          name: engagement
          in: body
          description: Engagement
          required: true
          schema:
            $ref: "#/definitions/ConversationEngagement"
      operationId: updateConversationEngagement
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationEngagementResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/locations:
    post:
      tags:
        - conversation
      summary: Get location data for engagement configuration
      description: |
        Get location data for engagement configuration
      operationId: getLocationsForEngagement
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationLocationsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/agent:
    get:
      tags:
        - conversation
      summary: Get pbx agents
      description: |
        Retrieve pbx agents
      operationId: getPbxAgents
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAgentsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/agent/voicemails:
    get:
      tags:
        - conversation
      summary: Get Agent Voicemails
      description: |
        Retrieve pbx agent Voicemails
      operationId: getPbxAgentVoicemails
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMessageSummariesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/agent/voicemails/{recording_sid}:
    delete:
      tags:
        - conversation
      summary: Delete Agent Voicemail
      description: |
        Delete pbx agent Voicemail
      parameters:
        -
          name: recording_sid
          in: path
          required: true
          type: string
      operationId: deletePbxAgentVoicemail
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get Agent Voicemail
      description: |
        Retrieve pbx agent Voicemail
      parameters:
        -
          name: recording_sid
          in: path
          required: true
          type: string
      operationId: getPbxAgentVoicemail
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMessageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/agent/voicemails/{recording_sid}/listened:
    get:
      tags:
        - conversation
      summary: Listened Agent Voicemail
      description: |
        Listened pbx agent Voicemail
      parameters:
        -
          name: recording_sid
          in: path
          required: true
          type: string
      operationId: listenedPbxAgentVoicemail
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/agent/{conversationPbxAgentUuid}:
    get:
      tags:
        - conversation
      summary: Get pbx agent
      description: |
        Retrieve a pbx agent
      parameters:
        -
          name: conversationPbxAgentUuid
          in: path
          required: true
          type: string
      operationId: getPbxAgent
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAgentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx agent
      description: |
        Update a pbx agent
      parameters:
        -
          name: conversationPbxAgentUuid
          in: path
          required: true
          type: string
        -
          name: pbx_agent
          in: body
          description: Pbx Agent
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxAgent"
      operationId: updatePbxAgent
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAgentResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/audio:
    get:
      tags:
        - conversation
      summary: Get pbx audios
      description: |
        Retrieve pbx audios
      operationId: getPbxAudios
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudiosResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert pbx audio
      description: |
        Insert a pbx audio
      parameters:
        -
          name: pbx_audio
          in: body
          description: Pbx Audio
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxAudio"
      operationId: insertPbxAudio
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/audio/upload_url/{extension}:
    get:
      tags:
        - conversation
      summary: Get a pre-signed conversation multimedia upload URL
      description: |
        Get a pre-signed conversation multimedia upload URL
      parameters:
        -
          name: extension
          in: path
          required: true
          type: string
      operationId: getConversationPbxAudioUploadUrl
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudioUploadUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/audio/{conversationPbxAudioUuid}:
    delete:
      tags:
        - conversation
      summary: Delete pbx audio
      description: |
        Delete a pbx audio
      parameters:
        -
          name: conversationPbxAudioUuid
          in: path
          required: true
          type: string
      operationId: deletePbxAudio
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get pbx audio
      description: |
        Retrieve a pbx audio
      parameters:
        -
          name: conversationPbxAudioUuid
          in: path
          required: true
          type: string
      operationId: getPbxAudio
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx audio
      description: |
        Update a pbx audio
      parameters:
        -
          name: conversationPbxAudioUuid
          in: path
          required: true
          type: string
        -
          name: pbx_audio
          in: body
          description: Pbx Audio
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxAudio"
      operationId: updatePbxAudio
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudioResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/audio/{conversationPbxAudioUuid}/usage:
    get:
      tags:
        - conversation
      summary: Get pbx audio usage
      description: |
        Retrieve a pbx audio usage
      parameters:
        -
          name: conversationPbxAudioUuid
          in: path
          required: true
          type: string
      operationId: getPbxAudioUsage
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxAudioUsageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/customer_snapshot:
    post:
      tags:
        - conversation
      summary: Get orders and customer information for a phone number
      description: |
        Retrieves all the orders, auto orders, and customer profile for a given phone number
      parameters:
        -
          name: pbx_customer_snapshot_request
          in: body
          description: Conversation pbx customer snapshot request
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxCustomerSnapshotRequest"
      operationId: getConversationPbxCustomerSnapshot
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxCustomerSnapshotResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/menu:
    get:
      tags:
        - conversation
      summary: Get pbx menus
      description: |
        Retrieve pbx menus
      operationId: getPbxMenus
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxMenusResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert pbx menu
      description: |
        Insert a pbx menu
      parameters:
        -
          name: pbx_menu
          in: body
          description: Pbx Menu
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxMenu"
      operationId: insertPbxMenu
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxMenuResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/menu/{conversationPbxMenuUuid}:
    delete:
      tags:
        - conversation
      summary: Delete pbx menu
      description: |
        Delete a pbx menu
      parameters:
        -
          name: conversationPbxMenuUuid
          in: path
          required: true
          type: string
      operationId: deletePbxMenu
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxMenuResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get pbx menu
      description: |
        Retrieve a pbx menu
      parameters:
        -
          name: conversationPbxMenuUuid
          in: path
          required: true
          type: string
      operationId: getPbxMenu
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxMenuResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx menu
      description: |
        Update a pbx menu
      parameters:
        -
          name: conversationPbxMenuUuid
          in: path
          required: true
          type: string
        -
          name: pbx_menu
          in: body
          description: Pbx Menu
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxMenu"
      operationId: updatePbxMenu
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxMenuResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/phone_number:
    get:
      tags:
        - conversation
      summary: Get pbx phoneNumbers
      description: |
        Retrieve pbx phoneNumbers
      operationId: getPbxPhoneNumbers
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxPhoneNumbersResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/phone_number/{conversationPbxPhoneNumberUuid}:
    get:
      tags:
        - conversation
      summary: Get pbx phoneNumber
      description: |
        Retrieve a pbx phoneNumber
      parameters:
        -
          name: conversationPbxPhoneNumberUuid
          in: path
          required: true
          type: string
      operationId: getPbxPhoneNumber
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxPhoneNumberResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx phoneNumber
      description: |
        Update a pbx phoneNumber
      parameters:
        -
          name: conversationPbxPhoneNumberUuid
          in: path
          required: true
          type: string
        -
          name: pbx_phoneNumber
          in: body
          description: Pbx PhoneNumber
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxPhoneNumber"
      operationId: updatePbxPhoneNumber
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxPhoneNumberResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/queue:
    get:
      tags:
        - conversation
      summary: Get pbx queues
      description: |
        Retrieve pbx queues
      operationId: getPbxQueues
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxQueuesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert pbx queue
      description: |
        Insert a pbx queue
      parameters:
        -
          name: pbx_queue
          in: body
          description: Pbx Queue
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxQueue"
      operationId: insertPbxQueue
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxQueueResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/queue/{conversationPbxQueueUuid}:
    delete:
      tags:
        - conversation
      summary: Delete pbx queue
      description: |
        Delete a pbx queue
      parameters:
        -
          name: conversationPbxQueueUuid
          in: path
          required: true
          type: string
      operationId: deletePbxQueue
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxQueueResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get pbx queue
      description: |
        Retrieve a pbx queue
      parameters:
        -
          name: conversationPbxQueueUuid
          in: path
          required: true
          type: string
      operationId: getPbxQueue
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxQueueResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx queue
      description: |
        Update a pbx queue
      parameters:
        -
          name: conversationPbxQueueUuid
          in: path
          required: true
          type: string
        -
          name: pbx_queue
          in: body
          description: Pbx Queue
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxQueue"
      operationId: updatePbxQueue
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxQueueResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/queues/{queue_uuid}/reset_statistics:
    post:
      tags:
        - conversation
      summary: reset statistics within the queue
      description: |
        reset statistics within the queue
      parameters:
        -
          name: queue_uuid
          in: path
          required: true
          type: string
      operationId: resetConversationPbxQueueStatistics
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/queues/{queue_uuid}/voicemails:
    get:
      tags:
        - conversation
      summary: Get Queue Voicemails
      description: |
        Retrieve pbx queue voicemails
      parameters:
        -
          name: queue_uuid
          in: path
          required: true
          type: string
      operationId: getPbxQueueVoicemails
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMessageSummariesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/queues/{queue_uuid}/voicemails/{recording_sid}:
    delete:
      tags:
        - conversation
      summary: Delete Queue Voicemail
      description: |
        Delete pbx queue Voicemail
      parameters:
        -
          name: queue_uuid
          in: path
          required: true
          type: string
        -
          name: recording_sid
          in: path
          required: true
          type: string
      operationId: deletePbxQueueVoicemail
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get Queue Voicemail
      description: |
        Retrieve pbx queue Voicemail
      parameters:
        -
          name: queue_uuid
          in: path
          required: true
          type: string
        -
          name: recording_sid
          in: path
          required: true
          type: string
      operationId: getPbxQueueVoicemail
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMessageResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/queues/{queue_uuid}/voicemails/{recording_sid}/listened:
    get:
      tags:
        - conversation
      summary: Listened Queue Voicemail
      description: |
        Listened pbx queue Voicemail
      parameters:
        -
          name: queue_uuid
          in: path
          required: true
          type: string
        -
          name: recording_sid
          in: path
          required: true
          type: string
      operationId: listenedPbxQueueVoicemail
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/time_based:
    get:
      tags:
        - conversation
      summary: Get pbx timeBaseds
      description: |
        Retrieve pbx timeBaseds
      operationId: getPbxTimeBaseds
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeBasedsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert pbx timeBased
      description: |
        Insert a pbx timeBased
      parameters:
        -
          name: pbx_timeBased
          in: body
          description: Pbx TimeBased
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxTimeBased"
      operationId: insertPbxTimeBased
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeBasedResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/time_based/{conversationPbxTimeBasedUuid}:
    delete:
      tags:
        - conversation
      summary: Delete pbx timeBased
      description: |
        Delete a pbx timeBased
      parameters:
        -
          name: conversationPbxTimeBasedUuid
          in: path
          required: true
          type: string
      operationId: deletePbxTimeBased
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeBasedResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get pbx timeBased
      description: |
        Retrieve a pbx timeBased
      parameters:
        -
          name: conversationPbxTimeBasedUuid
          in: path
          required: true
          type: string
      operationId: getPbxTimeBased
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeBasedResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx timeBased
      description: |
        Update a pbx timeBased
      parameters:
        -
          name: conversationPbxTimeBasedUuid
          in: path
          required: true
          type: string
        -
          name: pbx_timeBased
          in: body
          description: Pbx TimeBased
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxTimeBased"
      operationId: updatePbxTimeBased
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeBasedResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/time_range:
    get:
      tags:
        - conversation
      summary: Get pbx timeRanges
      description: |
        Retrieve pbx timeRanges
      operationId: getPbxTimeRanges
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeRangesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert pbx timeRange
      description: |
        Insert a pbx timeRange
      parameters:
        -
          name: pbx_timeRange
          in: body
          description: Pbx TimeRange
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxTimeRange"
      operationId: insertPbxTimeRange
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeRangeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/time_range/{conversationPbxTimeRangeUuid}:
    delete:
      tags:
        - conversation
      summary: Delete pbx timeRange
      description: |
        Delete a pbx timeRange
      parameters:
        -
          name: conversationPbxTimeRangeUuid
          in: path
          required: true
          type: string
      operationId: deletePbxTimeRange
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeRangeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get pbx timeRange
      description: |
        Retrieve a pbx timeRange
      parameters:
        -
          name: conversationPbxTimeRangeUuid
          in: path
          required: true
          type: string
      operationId: getPbxTimeRange
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeRangeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx timeRange
      description: |
        Update a pbx timeRange
      parameters:
        -
          name: conversationPbxTimeRangeUuid
          in: path
          required: true
          type: string
        -
          name: pbx_timeRange
          in: body
          description: Pbx TimeRange
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxTimeRange"
      operationId: updatePbxTimeRange
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxTimeRangeResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/voicemail_mailbox:
    get:
      tags:
        - conversation
      summary: Get pbx voicemailMailboxes
      description: |
        Retrieve pbx voicemailMailboxes
      operationId: getPbxVoicemailMailboxes
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailboxesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    post:
      tags:
        - conversation
      summary: Insert pbx voicemailMailbox
      description: |
        Insert a pbx voicemailMailbox
      parameters:
        -
          name: pbx_voicemailMailbox
          in: body
          description: Pbx VoicemailMailbox
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailbox"
      operationId: insertPbxVoicemailMailbox
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailboxResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/pbx/voicemail_mailbox/{conversationPbxVoicemailMailboxUuid}:
    delete:
      tags:
        - conversation
      summary: Delete pbx voicemailMailbox
      description: |
        Delete a pbx voicemailMailbox
      parameters:
        -
          name: conversationPbxVoicemailMailboxUuid
          in: path
          required: true
          type: string
      operationId: deletePbxVoicemailMailbox
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailboxResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    get:
      tags:
        - conversation
      summary: Get pbx voicemailMailbox
      description: |
        Retrieve a pbx voicemailMailbox
      parameters:
        -
          name: conversationPbxVoicemailMailboxUuid
          in: path
          required: true
          type: string
      operationId: getPbxVoicemailMailbox
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailboxResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update pbx voicemailMailbox
      description: |
        Update a pbx voicemailMailbox
      parameters:
        -
          name: conversationPbxVoicemailMailboxUuid
          in: path
          required: true
          type: string
        -
          name: pbx_voicemailMailbox
          in: body
          description: Pbx VoicemailMailbox
          required: true
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailbox"
      operationId: updatePbxVoicemailMailbox
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPbxVoicemailMailboxResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/permissions:
    get:
      tags:
        - conversation
      summary: Retrieve conversation permissions
      description: |
        Retrieve conversation permissions
      operationId: getConversationPermissions
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationPermissionsResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/upload_url/{extension}:
    get:
      tags:
        - conversation
      summary: Get a presigned conversation multimedia upload URL
      description: |
        Get a presigned conversation multimedia upload URL
      parameters:
        -
          name: extension
          in: path
          required: true
          type: string
      operationId: getConversationMultimediaUploadUrl
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationMultimediaUploadUrlResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/virtualagent/budget:
    get:
      tags:
        - conversation
      summary: Get virtual agent budget
      description: |
        Retrieve virtual agent budget
      operationId: getVirtualAgentBudget
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationVirtualAgentBudgetResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update virtual agent budget
      description: |
        Update virtual agent budget
      parameters:
        -
          name: virtual_agent_budget
          in: body
          description: Virtual Agent Budget
          required: true
          schema:
            $ref: "#/definitions/ConversationVirtualAgentBudget"
      operationId: updateVirtualAgentBudget
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationVirtualAgentBudgetResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
  /conversation/virtualagent/capabilities:
    get:
      tags:
        - conversation
      summary: Get virtual agent capabilities
      description: |
        Retrieve virtual agent capabilities
      operationId: getVirtualAgentCapabilities
      security:
        - ultraCartOauth:
          - conversation_read
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationVirtualAgentCapabilitiesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
    put:
      tags:
        - conversation
      summary: Update virtual agent capabilities
      description: |
        Update virtual agent capabilities
      parameters:
        -
          name: virtual_agent_capabilities
          in: body
          description: Virtual Agent Capabilities
          required: true
          schema:
            $ref: "#/definitions/ConversationVirtualAgentCapabilities"
      operationId: updateVirtualAgentCapabilities
      security:
        - ultraCartOauth:
          - conversation_write
        - ultraCartSimpleApiKey: []
      produces: 
        - application/json
      responses:
        200:
          description: "Successful response"
          schema:
            $ref: "#/definitions/ConversationVirtualAgentCapabilitiesResponse"
        400:
          $ref: '#/responses/400'
        401:
          $ref: '#/responses/401'
        410:
          $ref: '#/responses/410'
        429:
          $ref: '#/responses/429'
        500:
          $ref: '#/responses/500'
# ==========================================================================
# Security Definitions
# ==========================================================================
securityDefinitions:
  ultraCartOauth:
    type: oauth2
    scopes:
      affiliate_read: Allows you to read affiliate information.
      affiliate_write: Allows you to write affiliate information.
      auto_order_read: Allows you to read auto order information.
      auto_order_write: Allows you to write auto order information.
      channel_partner_read: Allows you to read channel partner information.
      channel_partner_write: Allows you to write channel partner information.
      chargeback_read: Allows you to read chargeback information.
      chargeback_write: Allows you to write chargeback information.
      checkout_read: Allows you to read checkout information.
      checkout_write: Allows you to write checkout information.
      configuration_read: Allows you to read configuration information.
      configuration_write: Allows you to write configuration information.
      conversation_read: Allows you to read conversation information.
      conversation_write: Allows you to write conversation information.
      coupon_read: Allows you to read coupon information.
      coupon_write: Allows you to write coupon information.
      customer_read: Allows you to read customer information.
      customer_write: Allows you to write customer information.
      fulfillment_read: Allows you to read fulfillment information.
      fulfillment_write: Allows you to write fulfillment information.
      gift_certificate_read: Allows you to read gift certificate information.
      gift_certificate_write: Allows you to write gift certificate information.
      integration_log_read: Allows you to read integration log information.
      integration_log_write: Allows you to write integration log information.
      order_read: Allows you to read order information.
      order_write: Allows you to write order information.
      item_read: Allows you to read item information.
      item_write: Allows you to write item information.
      storefront_read: Allows you to read storefront information.
      storefront_write: Allows you to write storefront information.
      tax_read: Allows you to read tax configuration information.
      tax_write: Allows you to write tax configuration information.
      webhook_read: Allows you to read webhook information.
      webhook_write: Allows you to write webhook information.
      ultrabooks_read: 1 of 2 required to use UltraBooks
      ultrabooks_write: 2 of 2 required to use UltraBooks
      user_read: Allows you to read user information.
      user_write: Allows you to write user information.
      workflow_read: Allows you to read workflow information.
      workflow_write: Allows you to write workflow information.
    flow: accessCode
    authorizationUrl: https://secure.ultracart.com/rest/v2/oauth/authorize
    tokenUrl: https://secure.ultracart.com/rest/v2/oauth/token
  ultraCartSimpleApiKey:
    type: apiKey
    in: header
    name: x-ultracart-simple-key
  ultraCartBrowserApiKey:
    type: apiKey
    in: header
    name: x-ultracart-browser-key
# ==========================================================================
# Global Responses
# ==========================================================================
responses:
  400:
    description: "Status Code 400: bad request input such as invalid json"
    headers:
      "UC-REST-ERROR":
        description: "Contains human readable error message"
        type: string
    schema:
      $ref: "#/definitions/ErrorResponse"
  401:
    description: "Status Code 401: invalid credentials supplied"
    headers:
      "UC-REST-ERROR":
        description: "Contains human readable error message"
        type: string
    schema:
      $ref: "#/definitions/ErrorResponse"
  410:
    description: "Status Code 410: Your authorized application has been disabled by UltraCart"
    headers:
      "UC-REST-ERROR":
        description: "Contains human readable error message"
        type: string
    schema:
      $ref: "#/definitions/ErrorResponse"
  429:
    description: "Status Code 429: you have exceeded the allowed API call rate limit for your application."
    headers:
      "UC-REST-ERROR":
        description: "Contains human readable error message"
        type: string
    schema:
      $ref: "#/definitions/ErrorResponse"
  500:
    description: "Status Code 500: any server side error.  the body will contain a generic server error message"
    headers:
      "UC-REST-ERROR":
        description: "Contains human readable error message"
        type: string
    schema:
      $ref: "#/definitions/ErrorResponse"
# ==========================================================================
# Schema Definitions
# ==========================================================================
definitions:
  AccountsReceivableRetryConfig:
    type: object
    properties:
      active:
        description: True if the retry should run daily.  False puts the retry service into an inactive state for this merchant.
        type: boolean
      allow_process_linked_accounts:
        description: True if this account has linked accounts that it can process.
        type: boolean
      cancel_auto_order:
        description: If true also cancel the auto order if the order is rejected at the end
        type: boolean
      current_service_plan:
        description: The current service plan that the account is on.
        type: string
      daily_activity_list:
        description: A list of days and what actions should take place on those days after an order reaches accounts receivable
        type: array
        items:
          $ref: '#/definitions/AccountsReceivableRetryDayActivity'
      managed_by_linked_account_merchant_id:
        description: If not null, this account is managed by the specified parent merchant id.
        type: boolean
      merchant_id:
        description: UltraCart merchant ID
        type: string
      notify_emails:
        description: A list of email addresses to receive summary notifications from the retry service.
        type: array
        items:
          type: string
      notify_rejections:
        description: If true, email addresses are notified of rejections.
        type: boolean
      notify_successes:
        description: If true, email addresses are notified of successful charges.
        type: boolean
      process_linked_accounts:
        description: If true, all linked accounts are also processed using the same rules.
        type: boolean
      processing_percentage:
        description: The percentage rate charged for the service.
        type: string
      reject_at_end:
        description: If true, the order is rejected the day after the last configured activity day
        type: boolean
      transaction_rejects:
        description: Array of key/value pairs that when found in the response cause the rejection of the transaction.
        type: array
        items:
          $ref: '#/definitions/AccountsReceivableRetryTransactionReject'
      trial_mode:
        description: True if the account is currently in trial mode.  Set to false to exit trial mode.
        type: boolean
      trial_mode_expiration_dts:
        description: The date when trial mode expires.  If this date is reached without exiting trial mode, the service will de-activate.
        type: string
        format: dateTime
  AccountsReceivableRetryConfigResponse:
    type: object
    properties:
      config:
        $ref: '#/definitions/AccountsReceivableRetryConfig'
      coupon_codes:
        type: array
        items:
          type: string
      emails:
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      has_linked_accounts:
        type: boolean
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AccountsReceivableRetryDayActivity:
    type: object
    properties:
      charge:
        description: True if a charge attempt should be made on this day.  False means the order should be rejected on this day.
        type: boolean
      coupon_code:
        description: The coupon code that should be applied to this order.
        type: string
      day:
        description: The number of days since the order placed in Accounts Receivable
        type: integer
        format: int32
  AccountsReceivableRetryStatAccount:
    type: object
    properties:
      days:
        type: array
        items:
          $ref: '#/definitions/AccountsReceivableRetryStatMetrics'
      merchant_id:
        type: string
      overall:
        $ref: '#/definitions/AccountsReceivableRetryStatMetrics'
      revenue_for_period:
        type: array
        items:
          $ref: '#/definitions/AccountsReceivableRetryStatRevenue'
  AccountsReceivableRetryStatMetrics:
    type: object
    properties:
      attempts:
        type: integer
        format: int32
      attempts_formatted:
        type: string
      conversion_rate:
        type: number
      conversion_rate_formatted:
        type: string
      day:
        type: integer
        format: int32
      discounts:
        type: number
      discounts_formatted:
        type: string
      revenue:
        type: number
      revenue_formatted:
        type: string
      successes:
        type: integer
        format: int32
      successes_formatted:
        type: string
  AccountsReceivableRetryStatRevenue:
    type: object
    properties:
      label:
        type: string
      revenue:
        type: number
  AccountsReceivableRetryStatsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      linked_accounts:
        type: array
        items:
          $ref: '#/definitions/AccountsReceivableRetryStatAccount'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      overall:
        $ref: '#/definitions/AccountsReceivableRetryStatAccount'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AccountsReceivableRetryTransactionReject:
    type: object
    properties:
      name:
        description: Transaction response name
        type: string
      value:
        description: Transaction response value
        type: string
  Activity:
    type: object
    properties:
      action:
        type: string
      channel:
        type: string
      metric:
        type: string
      storefront_oid:
        type: integer
        format: int32
      subject:
        type: string
      ts:
        type: integer
        format: int64
      type:
        type: string
      uuid:
        type: string
  AddLibraryItemRequest:
    type: object
    properties:
      attributes:
        description: Attributes associated with the library item to contain additional configuration.
        type: array
        items:
          $ref: '#/definitions/LibraryItemAttribute'
      cjson:
        description: Cjson to be added to library
        type: string
      content_type:
        description: flow, campaign, cjson, email, transactional_email, postcard or upsell
        type: string
      description:
        description: description of library item
        type: string
      email_name:
        description: Required if content_type is transactional_email. This is the name of the email template (html, not text).  This name should have a .vm file extension.  An example is auto_order_cancel_html.vm
        type: string
      email_path:
        description: Required if content_type is transactional_email. This is the full path to the email template stored in the file system.  This defines which StoreFront contains the desired email template.  An example is /themes/Elements/core/emails/auto_order_cancel_html.vm
        type: string
      screenshots:
        description: Screenshot urls for display
        type: array
        items:
          $ref: '#/definitions/LibraryItemScreenshot'
      storefront_oid:
        description: StoreFront oid where content originates necessary for tracking down relative assets
        type: integer
        format: int32
      title:
        description: title of library item, usually the name of the flow or campaign, or description of cjson
        type: string
      upsell_offer_oid:
        description: Required if content_type is upsell. This is object identifier of a StoreFront Upsell Offer.
        type: integer
        format: int32
      uuid:
        description: UUID of communication flow, campaign, email, postcard, or null if this item is something else. transactional_email do not have a uuid because they are singleton objects within a storefront and easily identifiable by name
        type: string
  AdjustInternalCertificateRequest:
    type: object
    properties:
      adjustment_amount:
        description: The adjustment amount
        type: number
      description:
        description: Description of this adjustment, 50 characters max
        type: string
      entry_dts:
        description: Optional timestamp for the adjustment, defaults to current time
        type: string
        format: dateTime
      expiration_days:
        description: Optional expiration days from the entry_dts when these adjustment becomes worthless
        type: integer
        format: int32
      order_id:
        description: Optional order id if this adjustment is related to a particular order
        type: string
      vesting_days:
        description: Optional days required for this adjustment to vest
        type: integer
        format: int32
  AdjustInternalCertificateResponse:
    type: object
    properties:
      adjustment_amount:
        description: The adjustment amount
        type: number
      balance_amount:
        description: The balance amount after the adjustment was made
        type: number
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AffiliateClick:
    type: object
    properties:
      affiliate_click_oid:
        description: Unique object identifier for this click
        type: integer
        format: int32
      affiliate_link_oid:
        description: Unique object identifier for for the link that this click is associated with
        type: integer
        format: int32
      affiliate_oid:
        description: Affiliate object ID associated with this click
        type: integer
        format: int32
      click_dts:
        description: Date/time that the click was made
        type: string
        format: dateTime
      ip_address:
        description: IP address that generated the click
        type: string
      landing_page:
        description: URL of the landing page the customer was sent to.
        type: string
      landing_page_query_string:
        description: Query string on the landing page URL the customer was sent to.
        type: string
      link:
        $ref: '#/definitions/AffiliateLink'
      referrer:
        description: URL that referred the click (Browser Header Referer)
        type: string
      referrer_query_string:
        description: Query string that was on the referrer URL.
        type: string
      screen_recording_uuid:
        description: Screen recording UUID
        type: string
      sub_id:
        description: Sub ID value passed on the click
        type: string
      ucacid:
        description: UC Analytics Identifier
        type: string
  AffiliateClickQuery:
    type: object
    properties:
      affiliate_link_oid:
        description: Unique object identifier for for the link that this click is associated with
        type: integer
        format: int32
      affiliate_oid:
        description: Affiliate ID associated with the click
        type: integer
        format: int32
      click_dts_begin:
        description: Minimum click date/time to return
        type: string
        format: dateTime
      click_dts_end:
        description: Maximum click date/time to return
        type: string
        format: dateTime
      ip_address:
        description: IP address that generated the click
        type: string
      sub_id:
        description: Sub ID value passed on the click
        type: string
  AffiliateClicksResponse:
    type: object
    properties:
      clicks:
        description: clicks
        type: array
        items:
          $ref: '#/definitions/AffiliateClick'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AffiliateLedger:
    type: object
    properties:
      affiliate_click_oid:
        description: Unique object identifier for the click associated with this ledger entry
        type: integer
        format: int32
      affiliate_ledger_oid:
        description: Affiliate ledger object ID associated with this ledger
        type: integer
        format: int32
      affiliate_link_oid:
        description: Unique object identifier for the link that this click is associated with
        type: integer
        format: int32
      affiliate_oid:
        description: Affiliate object ID associated with this transaction
        type: integer
        format: int32
      assigned_by_user:
        description: User that assigned the transaction if it was done manually
        type: string
      click:
        $ref: '#/definitions/AffiliateClick'
      item_id:
        description: Item ID associated with this transaction
        type: string
      link:
        $ref: '#/definitions/AffiliateLink'
      order:
        $ref: '#/definitions/Order'
      order_id:
        description: Order ID associated with this transaction
        type: string
      original_transaction_dts:
        description: Date/time of the original transaction for reversals
        type: string
        format: dateTime
      sub_id:
        description: Sub ID associated with transaction (from the click)
        type: string
      tier_number:
        description: Tier number that this transaction earned
        type: integer
        format: int32
      transaction_amount:
        description: Transaction amount
        type: number
      transaction_amount_paid:
        description: Amount of the transaction that has been paid out.
        type: number
      transaction_dts:
        description: Date/time that the transaction was made
        type: string
        format: dateTime
      transaction_memo:
        description: Memo explaining the transaction
        type: string
      transaction_percentage:
        description: Percentage associated with this transaction
        type: number
      transaction_state:
        description: Transaction state
        type: string
        enum: [
          "Pending",
          "Posted",
          "Approved",
          "Paid",
          "Rejected",
          "Partially Paid"
        ]
  AffiliateLedgerQuery:
    type: object
    properties:
      affiliate_oid:
        description: Affiliate ID associated with the ledger
        type: integer
        format: int32
      item_id:
        description: Item id associated with the ledger entry
        type: string
      order_id:
        description: Order ID associated with the ledger entries
        type: string
      sub_id:
        description: Sub ID value passed on the click that generated the ledger
        type: string
      transaction_dts_begin:
        description: Minimum transaction date/time to return
        type: string
        format: dateTime
      transaction_dts_end:
        description: Maximum transaction date/time to return
        type: string
        format: dateTime
  AffiliateLedgersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      ledgers:
        description: ledgers
        type: array
        items:
          $ref: '#/definitions/AffiliateLedger'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AffiliateLink:
    type: object
    properties:
      affiliate_link_oid:
        description: Unique object identifier associated with this link
        type: integer
        format: int32
      affiliate_managed_link_oid:
        description: Managed link OID that this link object was generated from
        type: integer
        format: int32
      affiliate_oid:
        description: Affiliate object ID associated with this link
        type: integer
        format: int32
      affiliate_program_item_oid:
        description: The affiliate program item this managed link is associated with
        type: integer
        format: int32
      code:
        description: Code associated with the link
        type: string
      creative_oid:
        description: Creative (image or text) associated with this link
        type: integer
        format: int32
      custom_html:
        description: Custom HTML associated with this link
        type: string
      custom_html_approval_status:
        description: Approved status of the custom html
        type: string
        enum: [
          "Pending",
          "Approved",
          "Rejected"
        ]
      custom_landing_url:
        description: Custom landing page URL if configured
        type: string
      deleted:
        description: True if the link has been deleted
        type: boolean
      invisible_link_approval_status:
        description: Invisible link approval status
        type: string
        enum: [
          "Pending",
          "Approved",
          "Rejected"
        ]
      invisible_link_url_prefix:
        description: Invisible link URL prefix
        type: string
      name:
        description: Name of the link
        type: string
      type:
        description: Type of link
        type: string
        enum: [
          "image",
          "text",
          "invisible",
          "direct"
        ]
  ApiUserApplicationProfile:
    type: object
    properties:
      api_application_logo_url:
        description: Application logo URL
        type: string
      application_description:
        description: Application description
        type: string
      application_name:
        description: Application name
        type: string
      developer_name:
        description: Developer name
        type: string
      developer_website:
        description: Developer website
        type: string
  ApplyLibraryItemRequest:
    type: object
    properties:
      email_uuid:
        description: Normal emails are applied to an existing email object, so when requesting a library item to be applied to an email, supply the email uuid.  This is only for normal emails.  Transactional emails do not have a uuid.
        type: string
      library_item_oid:
        description: Library item oid that you wish to apply to the given StoreFront
        type: integer
        format: int32
      postcard_uuid:
        description: The postcard uuid you wish to apply to a given StoreFront.
        type: string
      storefront_oid:
        description: StoreFront oid where content originates necessary for tracking down relative assets
        type: integer
        format: int32
  ApplyLibraryItemResponse:
    type: object
    properties:
      attributes:
        description: Attributes from the library item
        type: array
        items:
          $ref: '#/definitions/LibraryItemAttribute'
      cjson:
        description: Cjson from library item, only populated if this library item was a cjson snippet or marketing email (not transactional)
        type: string
      content_type:
        description: flow, campaign, cjson, upsell, postcard, transactional_email or email
        type: string
      email_template_vm_path:
        description: If a marketing email was applied, this is the path to the template encapsulating the cjson.  This is needed for the UltraCart UI.
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      storefront_oid:
        description: StoreFront oid where content originates necessary for tracking down relative assets
        type: integer
        format: int32
      success:
        description: Indicates if API call was successful
        type: boolean
      title:
        description: title of library item, usually the name of the flow or campaign, or description of cjson
        type: string
      uuid:
        description: UUID of marketing email or communication flow/campaign if this library item was an email, campaign or flow
        type: string
      warning:
        $ref: '#/definitions/Warning'
  AutoOrder:
    type: object
    properties:
      add_ons:
        description: Array of addon objects instructing which items to add to auto order and how many times they should be added.
        type: array
        items:
          $ref: '#/definitions/AutoOrderAddonItem'
      auto_order_code:
        description: Unique code assigned to this auto order
        type: string
      auto_order_oid:
        description: Auto order object identifier
        type: integer
        format: int32
      cancel_after_next_x_orders:
        description: Cancel this auto order after X additional rebills
        type: integer
        format: int32
      cancel_downgrade:
        description: True if the auto order was canceled because the customer purchased a downgrade item
        type: boolean
      cancel_reason:
        description: The reason this auto order was canceled by either merchant or customer
        type: string
      cancel_upgrade:
        description: True if the auto order was canceled because the customer purchased an upgrade item
        type: boolean
      canceled_by_user:
        description: The user that canceled the auto order
        type: string
      canceled_dts:
        description: The date/time that the auto order was canceled
        type: string
        format: dateTime
      completed:
        description: True if the auto order ran successfully to completion
        type: boolean
      credit_card_attempt:
        description: The number of credit card attempts that have taken place
        type: integer
        format: int32
      disabled_dts:
        description: The date/time the auto order was disabled due to failed rebills
        type: string
        format: dateTime
      enabled:
        description: True if this auto order is enabled
        type: boolean
      failure_reason:
        description: The reason this auto order failed during the last rebill attempt
        type: string
      items:
        description: The items that are setup to rebill
        type: array
        items:
          $ref: '#/definitions/AutoOrderItem'
      logs:
        description: Logs associated with this auto order
        type: array
        items:
          $ref: '#/definitions/AutoOrderLog'
      management:
        $ref: '#/definitions/AutoOrderManagement'
      merchant_id:
        description: UltraCart merchant ID owning this order
        type: string
      merged_dts:
        description: The date/time the auto order was merged into another auto order
        type: string
        format: dateTime
      merged_into_auto_order_oid:
        description: The auto order that this auto order was merged into
        type: integer
        format: int32
      next_attempt:
        description: The next time that the auto order will be attempted for processing
        type: string
        format: dateTime
      original_order:
        $ref: '#/definitions/Order'
      original_order_id:
        description: The original order id that this auto order is associated with.
        type: string
      override_affiliate_id:
        description: Override the affiliate id given credit for rebills of this auto order
        type: integer
        format: int32
      rebill_orders:
        description: Rebill orders that have taken place on this auto order
        type: array
        items:
          $ref: '#/definitions/Order'
      rotating_transaction_gateway_code:
        description: The RTG code associated with this order for future rebills
        type: string
      status:
        description: The status of the auto order
        type: string
        enum: [
          "active",
          "canceled",
          "disabled",
          "merged"
        ]
  AutoOrderAddonItem:
    type: object
    properties:
      arbitrary_unit_cost:
        type: number
      free_shipping:
        type: boolean
      item_id:
        type: string
      next_x_orders:
        type: integer
        format: int32
      options:
        description: Options associated with this item
        type: array
        items:
          $ref: '#/definitions/AutoOrderAddonItemOption'
      quantity:
        type: integer
        format: int32
  AutoOrderAddonItemOption:
    type: object
    properties:
      label:
        description: Label
        type: string
        maxLength: 50
      value:
        description: Value
        type: string
        maxLength: 1024
  AutoOrderConsolidate:
    type: object
    properties:
      source_auto_order_oids:
        type: array
        items:
          type: integer
  AutoOrderItem:
    type: object
    properties:
      arbitrary_item_id:
        description: Arbitrary item id that should be rebilled instead of the normal schedule
        type: string
      arbitrary_percentage_discount:
        description: An arbitrary percentage discount to provide on future rebills
        type: number
      arbitrary_quantity:
        description: Arbitrary quantity to rebill
        type: number
      arbitrary_schedule_days:
        description: The number of days to rebill if the frequency is set to an arbitrary number of days
        type: integer
        format: int32
      arbitrary_unit_cost:
        description: Arbitrary unit cost that rebills of this item should occur at
        type: number
      arbitrary_unit_cost_remaining_orders:
        description: The number of rebills to give the arbitrary unit cost on before reverting to normal pricing.
        type: integer
        format: int32
      auto_order_item_oid:
        description: Primary key of AutoOrderItem
        type: integer
        format: int32
      calculated_next_shipment_dts:
        description: Calculated Date/time that this item is scheduled to rebill.  Will be null if no more shipments are going to occur on this item
        type: string
        format: dateTime
      first_order_dts:
        description: Date/time of the first order of this item.  Null if item added to auto order and has not been rebilled yet.
        type: string
        format: dateTime
      frequency:
        description: Frequency of the rebill if not a fixed schedule
        type: string
        enum: [
          "Weekly",
          "Biweekly",
          "Every...",
          "Every 10 Days",
          "Every 24 Days",
          "Every 28 Days",
          "Monthly",
          "Every 45 Days",
          "Every 2 Months",
          "Every 3 Months",
          "Every 4 Months",
          "Every 5 Months",
          "Every 6 Months",
          "Yearly",
          "Every 4 Weeks",
          "Every 6 Weeks",
          "Every 8 Weeks"
        ]
      future_schedules:
        description: The future rebill schedule for this item up to the next ten rebills
        type: array
        items:
          $ref: '#/definitions/AutoOrderItemFutureSchedule'
      last_order_dts:
        description: Date/time of the last order of this item
        type: string
        format: dateTime
      life_time_value:
        description: The life time value of this item including the original purchase
        type: number
      next_item_id:
        description: Calculated next item id
        type: string
      next_preshipment_notice_dts:
        description: The date/time of when the next pre-shipment notice should be sent
        type: string
        format: dateTime
      next_shipment_dts:
        description: Date/time that this item is scheduled to rebill
        type: string
        format: dateTime
      no_order_after_dts:
        description: Date/time after which no additional rebills of this item should occur
        type: string
        format: dateTime
      number_of_rebills:
        description: The number of times this item has rebilled
        type: integer
        format: int32
      options:
        description: Options associated with this item
        type: array
        items:
          $ref: '#/definitions/AutoOrderItemOption'
      original_item_id:
        description: The original item id purchased.  This item controls scheduling.  If you wish to modify a schedule, for example, from monthly to yearly, change this item from your monthly item to your yearly item, and then change the next_shipment_dts to your desired date.
        type: string
      original_quantity:
        description: The original quantity purchased
        type: number
      paused:
        description: True if paused.  This field is an object instead of a primitive for backwards compatibility.
        type: boolean
      paypal_payer_id:
        description: The PayPal Payer ID tied to this item
        type: string
      paypal_recurring_payment_profile_id:
        description: The PayPal Profile ID tied to this item
        type: string
      preshipment_notice_sent:
        description: True if the preshipment notice associated with the next rebill has been sent
        type: boolean
      rebill_value:
        description: The value of the rebills of this item
        type: number
      remaining_repeat_count:
        description: The number of rebills remaining before this item is complete
        type: integer
        format: int32
      simple_schedule:
        $ref: '#/definitions/AutoOrderItemSimpleSchedule'
  AutoOrderItemFutureSchedule:
    type: object
    properties:
      item_id:
        description: Item ID that should rebill
        type: string
      rebill_count:
        description: The number of times this rebill represents
        type: integer
        format: int32
      shipment_dts:
        description: Date/time that this item is scheduled to rebill
        type: string
        format: dateTime
      unit_cost:
        description: The unit cost of the item rebilling
        type: number
  AutoOrderItemOption:
    type: object
    properties:
      label:
        description: Label
        type: string
        maxLength: 50
      value:
        description: Value
        type: string
        maxLength: 1024
  AutoOrderItemSimpleSchedule:
    type: object
    properties:
      frequency:
        description: Frequency of the rebill if not a fixed schedule
        type: string
        enum: [
          "Weekly",
          "Biweekly",
          "Every...",
          "Every 10 Days",
          "Every 24 Days",
          "Every 28 Days",
          "Monthly",
          "Every 45 Days",
          "Every 2 Months",
          "Every 3 Months",
          "Every 4 Months",
          "Every 5 Months",
          "Every 6 Months",
          "Yearly",
          "Every 4 Weeks",
          "Every 6 Weeks",
          "Every 8 Weeks"
        ]
      item_id:
        description: Item ID that should rebill
        type: string
      repeat_count:
        description: The number of times this simple schedule is configured for
        type: integer
        format: int32
  AutoOrderLog:
    type: object
    properties:
      log_dts:
        description: Date/time that the log message was added
        type: string
        format: dateTime
      log_message:
        description: Log message
        type: string
  AutoOrderManagement:
    type: object
    properties:
      update_billing_url:
        description: URL where the customer can go to update their billing information.
        type: string
  AutoOrderQuery:
    type: object
    properties:
      auto_order_code:
        description: Auto order code
        type: string
      card_type:
        description: Card type
        type: string
        maxLength: 100
      city:
        description: City
        type: string
      company:
        description: Company
        type: string
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      email:
        description: Email
        type: string
        maxLength: 100
      first_name:
        description: First name
        type: string
      item_id:
        description: Item ID.  Deprecated query field.  This incorrectly meant the original order contained this item id.
        type: string
      last_name:
        description: Last name
        type: string
      next_item_id:
        description: Next Item ID that is supposed to ship.  This is calculated based upon the schedule associated with the original item id.
        type: string
      next_shipment_date_begin:
        description: Next shipment date begin
        type: string
        format: dateTime
      next_shipment_date_end:
        description: Next shipment date end
        type: string
        format: dateTime
      original_item_id:
        description: Original Item ID purchased on auto order.
        type: string
      original_order_date_begin:
        description: Original order date begin
        type: string
        format: dateTime
      original_order_date_end:
        description: Original order date end
        type: string
        format: dateTime
      original_order_id:
        description: Original order ID
        type: string
      phone:
        description: Phone
        type: string
        maxLength: 25
      postal_code:
        description: Postal code
        type: string
      state:
        description: State
        type: string
      status:
        description: Status
        type: string
  AutoOrderQueryBatch:
    type: object
    properties:
      auto_order_oids:
        description: Auto order oids
        type: array
        items:
          type: integer
  AutoOrderResponse:
    type: object
    properties:
      auto_order:
        $ref: '#/definitions/AutoOrder'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AutoOrdersRequest:
    type: object
    properties:
      autoOrders:
        description: auto_orders
        type: array
        items:
          $ref: '#/definitions/AutoOrder'
  AutoOrdersResponse:
    type: object
    properties:
      auto_orders:
        type: array
        items:
          $ref: '#/definitions/AutoOrder'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  AvalaraConfig:
    type: object
    properties:
      account_id:
        description: Avalara account ID
        type: string
      active:
        description: True if Avalara is active for this merchant
        type: boolean
      avalara_oid:
        description: Unique identifier for this avalara config object
        type: integer
        format: int32
      company_id:
        description: Avalara company ID
        type: string
      enable_upc:
        description: True if this Avalara configuration is set to enable tax valuation by UPC
        type: boolean
      estimate_only:
        description: True if this Avalara configuration is to estimate taxes only and not report placed orders to Avalara
        type: boolean
      guest_customer_code:
        description: Optional customer code for customers without profiles, defaults to GuestCustomer
        type: string
      last_test_dts:
        description: Date/time of the connection test to Avalara
        type: string
        format: dateTime
      license_key:
        description: Avalara license key
        type: string
      sandbox:
        description: True if this Avalara instance is pointed at the Avalara Sandbox
        type: boolean
      send_test_orders:
        description: Send test orders through to Avalara.  The default is to not transmit test orders to Avalara.
        type: boolean
      service_url:
        description: Avalara service URL
        type: string
      test_results:
        description: Test results of the last connection test to Avalara
        type: string
  BaseResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Browser:
    type: object
    properties:
      device:
        $ref: '#/definitions/BrowserDevice'
      os:
        $ref: '#/definitions/BrowserOS'
      user_agent:
        $ref: '#/definitions/BrowserUserAgent'
  BrowserDevice:
    type: object
    properties:
      family:
        type: string
  BrowserOS:
    type: object
    properties:
      family:
        type: string
      major:
        type: string
      minor:
        type: string
      patch:
        type: string
      patch_minor:
        type: string
  BrowserUserAgent:
    type: object
    properties:
      family:
        type: string
      major:
        type: string
      minor:
        type: string
      patch:
        type: string
  Cart:
    type: object
    properties:
      affiliate:
        $ref: '#/definitions/CartAffiliate'
      affiliate_network_pixel_oid:
        description: The affiliate network pixel identifier associated with the cart
        type: integer
        format: int32
      base_currency_code:
        description: The ISO-4217 three letter base currency code of the account
        type: string
        maxLength: 3
      billing:
        $ref: '#/definitions/CartBilling'
      buysafe:
        $ref: '#/definitions/CartBuysafe'
      cart_id:
        description: Unique identifier for this cart
        type: string
      checkout:
        $ref: '#/definitions/CartCheckout'
      coupons:
        description: Coupons
        type: array
        items:
          $ref: '#/definitions/CartCoupon'
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      currency_conversion:
        $ref: '#/definitions/CartCurrencyConversion'
      customer_profile:
        $ref: '#/definitions/CartCustomerProfile'
      exchange_rate:
        description: The exchange rate if the customer is viewing a different currency than the base
        type: number
      gift:
        $ref: '#/definitions/CartGift'
      gift_certificate:
        $ref: '#/definitions/CartGiftCertificate'
      items:
        description: Items
        type: array
        items:
          $ref: '#/definitions/CartItem'
      language_iso_code:
        description: The ISO-631 three letter code the customer would like to checkout with
        type: string
        maxLength: 3
      logged_in:
        description: True if the customer is logged into their profile
        type: boolean
      marketing:
        $ref: '#/definitions/CartMarketing'
      merchant_id:
        description: Merchant ID this cart is associated with
        type: string
      payment:
        $ref: '#/definitions/CartPayment'
      properties:
        description: Properties associated with the cart
        type: array
        items:
          $ref: '#/definitions/CartProperty'
      settings:
        $ref: '#/definitions/CartSettings'
      shipping:
        $ref: '#/definitions/CartShipping'
      summary:
        $ref: '#/definitions/CartSummary'
      taxes:
        $ref: '#/definitions/CartTaxes'
      upsell_after:
        $ref: '#/definitions/CartUpsellAfter'
  CartAffiliate:
    type: object
    properties:
      affiliate_id:
        description: Affiliate id associated with the cart
        type: integer
        format: int32
      affiliate_sub_id:
        description: Affiliate sub id associated with the cart
        type: string
        maxLength: 50
  CartAffirmCheckoutResponse:
    type: object
    properties:
      checkout_json:
        description: Checkout JSON object
        type: string
      errors:
        description: Errors that should be displayed to the customer
        type: array
        items:
          type: string
  CartBilling:
    type: object
    properties:
      address1:
        description: Address line 1
        type: string
        maxLength: 50
      address2:
        description: Address line 2
        type: string
        maxLength: 50
      cc_emails:
        description: CC emails.  Multiple allowed, but total length of all emails can not exceed 100 characters.
        type: array
        items:
          type: string
      cell_phone:
        description: Cell phone
        type: string
        maxLength: 25
      cell_phone_e164:
        description: Cell phone (E164 format)
        type: string
        maxLength: 25
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      day_phone:
        description: Day phone
        type: string
        maxLength: 25
      email:
        description: Email
        type: string
        maxLength: 100
      email_confirm:
        description: Email entered for confirmation
        type: string
        maxLength: 100
      evening_phone:
        description: Evening phone
        type: string
        maxLength: 25
      first_name:
        description: First name
        type: string
        maxLength: 30
      last_name:
        description: Last name
        type: string
        maxLength: 30
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      state_region:
        description: State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      title:
        description: Title
        type: string
        maxLength: 50
  CartBuysafe:
    type: object
    properties:
      bond_available:
        description: True if buySAFE is willing to bond the order
        type: boolean
      bond_cost:
        $ref: '#/definitions/Currency'
      bond_free:
        description: True if the bond is free (merchant paying for it)
        type: boolean
      bond_wanted:
        description: True if the customer wants the bond
        type: boolean
      cart_display_text:
        description: Recommend text to display to the customer
        type: string
      cart_display_url:
        description: URL associated with the recommended text
        type: string
  CartCheckout:
    type: object
    properties:
      comments:
        description: Comments from the customer.  Rarely used on the single page checkout.
        type: string
        maxLength: 2000
      current_step:
        description: Current step of the checkout (read only)
        type: string
      custom_field1:
        description: Custom field 1
        type: string
        maxLength: 50
      custom_field10:
        description: Custom field 10
        type: string
        maxLength: 200
      custom_field2:
        description: Custom field 2
        type: string
        maxLength: 50
      custom_field3:
        description: Custom field 3
        type: string
        maxLength: 50
      custom_field4:
        description: Custom field 4
        type: string
        maxLength: 50
      custom_field5:
        description: Custom field 5
        type: string
        maxLength: 75
      custom_field6:
        description: Custom field 6
        type: string
        maxLength: 50
      custom_field7:
        description: Custom field 7
        type: string
        maxLength: 50
      custom_field8:
        description: Custom field 8
        type: string
        maxLength: 200
      custom_field9:
        description: Custom field 9
        type: string
        maxLength: 200
      ip_address:
        description: IP Address (read only unless non-browser key authenticated)
        type: string
      return_code:
        description: Return code assigned for send return email operation
        type: string
      return_url:
        description: The URL to redirect the customer to when they return from an abandon cart email.  Must be https protocol.
        type: string
        maxLength: 2048
      screen_branding_theme_code:
        description: Screen branding theme code
        type: string
        maxLength: 10
      storefront_host_name:
        description: StoreFront Host Name
        type: string
      user_agent:
        description: User agent of the browser
        type: string
  CartCoupon:
    type: object
    properties:
      coupon_code:
        description: Coupon code
        type: string
  CartCurrencyConversion:
    type: object
    properties:
      base_currency_Code:
        description: Base currency code for this merchant
        type: string
      currencies:
        description: Conversion information for 1 unit of base currency to target currencies
        type: array
        items:
          $ref: '#/definitions/Currency'
  CartCustomerProfile:
    type: object
    properties:
      allow_3rd_party_billing:
        description: True if profile is allowed to bill to their 3rd party shipping account
        type: boolean
      allow_cod:
        description: True if this profile is allowed to use a COD
        type: boolean
      allow_purchase_order:
        description: True if this profile is allowed to use a purchase order
        type: boolean
      billing_addresses:
        description: Billing addresses on file for this profile
        type: array
        items:
          $ref: '#/definitions/CartCustomerProfileAddress'
      credit_cards:
        description: Credit cards on file for this profile (masked)
        type: array
        items:
          $ref: '#/definitions/CartCustomerProfileCreditCard'
      customer_profile_oid:
        description: Unique identifier
        type: integer
        format: int32
      dhl_account_number:
        description: DHL account number on file
        type: string
      dhl_duty_account_number:
        description: DHL duty account number on file
        type: string
      email:
        description: Email
        type: string
      fedex_account_number:
        description: FedEx account number on file
        type: string
      free_shipping:
        description: True if this profile always qualifies for free shipping
        type: boolean
      free_shipping_minimum:
        description: The minimum amount that this profile has to purchase to qualify for free shipping
        type: number
      maximum_item_count:
        description: Maximum item count this profile can purchase
        type: integer
        format: int32
      minimum_item_count:
        description: Minimum item count this profile must purchase
        type: integer
        format: int32
      minimum_subtotal:
        description: Minimum subtotal this profile must purchase
        type: number
      no_coupons:
        description: True if this profile is prevented from using coupons
        type: boolean
      no_free_shipping:
        description: True if this profile is never given free shipping
        type: boolean
      no_realtime_charge:
        description: True if this customers orders are not charged in real-time
        type: boolean
      pricing_tiers:
        description: Pricing tier names this profile qualifies for
        type: array
        items:
          type: string
      shipping_addresses:
        description: Shipping addresses on file for this profile
        type: array
        items:
          $ref: '#/definitions/CartCustomerProfileAddress'
      signup_dts:
        description: Signup date
        type: string
      tax_exempt:
        description: True if this profile is exempt from sales tax
        type: boolean
      ups_account_number:
        description: UPS account number on file
        type: string
  CartCustomerProfileAddress:
    type: object
    properties:
      address1:
        description: Address 1
        type: string
      address2:
        description: Address 2
        type: string
      city:
        description: City
        type: string
      company:
        description: Company
        type: string
      country_code:
        description: ISO-3166 Country code
        type: string
      day_phone:
        description: Day phone
        type: string
      evening_phone:
        description: Evening phone
        type: string
      first_name:
        description: First name
        type: string
      last_name:
        description: Last name
        type: string
      oid:
        description: Unique identifier for this address
        type: integer
        format: int32
      postal_code:
        description: Postal code
        type: string
      state_region:
        description: State for United States otherwise region or province for other countries
        type: string
      tax_county:
        description: Tax county if a billing address
        type: string
      title:
        description: Title
        type: string
  CartCustomerProfileCreditCard:
    type: object
    properties:
      card_expiration_month:
        description: Card expiration month (1-12)
        type: integer
        format: int32
      card_expiration_year:
        description: Card expiration year (four digit)
        type: integer
        format: int32
      card_number:
        description: Card number (masked last 4 digits)
        type: string
      card_type:
        description: Card type
        type: string
        enum: [
          "AMEX",
          "Diners Club",
          "Discover",
          "MasterCard",
          "JCB",
          "VISA"
        ]
      customer_profile_credit_card_id:
        description: Unique identifier for this stored card
        type: integer
        format: int32
      last_used_date:
        description: Last used
        type: string
        format: dateTime
  CartFinalizeOrderRequest:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      options:
        $ref: '#/definitions/CartFinalizeOrderRequestOptions'
  CartFinalizeOrderRequestOptions:
    type: object
    properties:
      auto_approve_purchase_order:
        description: Automatically approve the purchase order
        type: boolean
      channel_partner_code:
        description: Channel partner code to associate this order with
        type: string
      channel_partner_oid:
        description: Channel partner oid to associate this order with
        type: integer
        format: int32
      channel_partner_order_id:
        description: Channel partner order id for reference
        type: string
      consider_recurring:
        description: Consider this order a recurring order for the purposes of payment gateway recurring flag
        type: boolean
      credit_card_authorization_amount:
        description: If the order was authorized outside of UltraCart, this is the amount of the authorization
        type: number
      credit_card_authorization_date:
        description: If the order was authorized outside of UltraCart, this is the date/time of the authorization
        type: string
        format: dateTime
      credit_card_authorization_reference_number:
        description: If the order was authorized outside of UltraCart, this is the authorization reference number
        type: string
        maxLength: 60
      no_realtime_payment_processing:
        description: Prevents normal real-time processing of the payment and sends the order to Accounts Receivable
        type: boolean
      setup_next_cart:
        description: True if the system should create another cart automatically if the current cart was logged into a profile
        type: boolean
      skip_payment_processing:
        description: Skip payment processing and move the order on to shipping (or completed if no shipping required)
        type: boolean
      store_completed:
        description: True the order in the completed stage
        type: boolean
      store_if_payment_declines:
        description: Store the order in accounts receivable if the payment declines
        type: boolean
  CartFinalizeOrderResponse:
    type: object
    properties:
      errors:
        description: Error messages if the order could not be completed
        type: array
        items:
          type: string
      next_cart:
        $ref: '#/definitions/Cart'
      order:
        $ref: '#/definitions/Order'
      order_id:
        description: Order ID assigned to the order
        type: string
      successful:
        description: True if the cart was converted successfully to an order
        type: boolean
  CartGift:
    type: object
    properties:
      gift:
        description: True if this order is a gift
        type: boolean
      gift_charge:
        $ref: '#/definitions/Currency'
      gift_email:
        description: Email address of the gift recipient
        type: string
        maxLength: 100
      gift_message:
        description: Message to the gift recipient
        type: string
        maxLength: 10000
      gift_wrap_cost:
        $ref: '#/definitions/Currency'
      gift_wrap_title:
        description: Title of the selected gift wrap
        type: string
        maxLength: 30
  CartGiftCertificate:
    type: object
    properties:
      gift_certificate_amount:
        $ref: '#/definitions/Currency'
      gift_certificate_code:
        description: Gift certificate code
        type: string
      gift_certificate_remaining_balance_after_order:
        $ref: '#/definitions/Currency'
  CartItem:
    type: object
    properties:
      arbitrary_unit_cost:
        $ref: '#/definitions/Currency'
      attributes:
        description: Attributes
        type: array
        items:
          $ref: '#/definitions/CartItemAttribute'
      auto_order_schedule:
        description: Auto order schedule the customer selected
        type: string
      default_image_url:
        description: URL to the default multimedia image
        type: string
      default_thumbnail_url:
        description: URL to the default multimedia thumbnail
        type: string
      description:
        description: Description of the item
        type: string
      discount:
        $ref: '#/definitions/Currency'
      extended_description:
        description: Extended description of the item
        type: string
      item_id:
        description: Item ID
        type: string
      item_oid:
        description: Item object identifier
        type: integer
        format: int32
      kit:
        description: True if this item is a kit
        type: boolean
      kit_component_options:
        description: Options associated with the kit components
        type: array
        items:
          $ref: '#/definitions/CartKitComponentOption'
      manufacturer_suggested_retail_price:
        $ref: '#/definitions/Currency'
      maximum_quantity:
        description: Maximum quantity the customer can purchase
        type: number
      minimum_quantity:
        description: Minimum quantity the customer can purchase
        type: number
      multimedia:
        description: Multimedia
        type: array
        items:
          $ref: '#/definitions/CartItemMultimedia'
      options:
        description: Options
        type: array
        items:
          $ref: '#/definitions/CartItemOption'
      phsyical:
        $ref: '#/definitions/CartItemPhysical'
      position:
        description: Position of the item in the cart
        type: integer
        format: int32
      preorder:
        description: True if this item is on pre-order
        type: boolean
      properties:
        description: Properties associated with the item
        type: array
        items:
          $ref: '#/definitions/CartItemProperty'
      quantity:
        description: quantity
        type: number
      schedules:
        description: Customer selectable auto order schedules
        type: array
        items:
          type: string
      total_cost:
        $ref: '#/definitions/Currency'
      total_cost_with_discount:
        $ref: '#/definitions/Currency'
      unit_cost:
        $ref: '#/definitions/Currency'
      unit_cost_with_discount:
        $ref: '#/definitions/Currency'
      upsell:
        description: True if this item was added to the cart as part of an upsell
        type: boolean
      variations:
        description: Variations
        type: array
        items:
          $ref: '#/definitions/CartItemVariationSelection'
      view_url:
        description: URL to view the product on the site
        type: string
  CartItemAttribute:
    type: object
    properties:
      name:
        description: Name of the attribute
        type: string
      type:
        description: Type of attribute
        type: string
      value:
        description: Value of the attribute
        type: string
  CartItemMultimedia:
    type: object
    properties:
      code:
        description: Code assigned to the multimedia
        type: string
      description:
        description: Description
        type: string
      exclude_from_gallery:
        description: True if the image should be excluded from galleries
        type: boolean
      image_height:
        description: Image height
        type: integer
        format: int32
      image_width:
        description: Image width
        type: integer
        format: int32
      is_default:
        description: True if the multimedia is the default for this type
        type: boolean
      thumbnails:
        description: Thumbnails of the images
        type: array
        items:
          $ref: '#/definitions/CartItemMultimediaThumbnail'
      type:
        description: Type of multimedia
        type: string
        enum: [
          "Image",
          "PDF",
          "Text",
          "Unknown",
          "Video"
        ]
      url:
        description: URL to view multimedia at
        type: string
  CartItemMultimediaThumbnail:
    type: object
    properties:
      height:
        description: Height in pixels
        type: integer
        format: int32
      png:
        description: True if thumbnail is a PNG, otherwise its a JPEG
        type: boolean
      square:
        description: True if the thumbnail is square
        type: boolean
      url:
        description: URL for the thumbnail
        type: string
      width:
        description: Width in pixels
        type: integer
        format: int32
  CartItemOption:
    type: object
    properties:
      cost_if_specified:
        $ref: '#/definitions/Currency'
      cost_per_letter:
        $ref: '#/definitions/Currency'
      cost_per_line:
        $ref: '#/definitions/Currency'
      ignore_if_default:
        description: True if the default answer is ignored
        type: boolean
      label:
        description: Display label for the option
        type: string
      name:
        description: Name of the option
        type: string
      one_time_fee:
        description: Charge the fee a single time instead of multiplying by the quantity
        type: boolean
      option_oid:
        description: Unique identifier for the option
        type: integer
        format: int32
      required:
        description: True if the customer is required to select a value
        type: boolean
      selected_value:
        description: The value of the option specified by the customer
        type: string
        maxLength: 1024
      type:
        description: Type of option
        type: string
        enum: [
          "single",
          "multiline",
          "dropdown",
          "hidden",
          "radio",
          "fixed"
        ]
      values:
        description: Values that the customer can select from for radio or select type options
        type: array
        items:
          $ref: '#/definitions/CartItemOptionValue'
  CartItemOptionValue:
    type: object
    properties:
      additional_cost:
        $ref: '#/definitions/Currency'
      additional_weight:
        $ref: '#/definitions/Weight'
      default_value:
        description: True if this is the default value
        type: boolean
      display_order:
        description: Display order of the option value
        type: integer
        format: int32
      value:
        description: Value of the option the customer can select
        type: string
  CartItemPhysical:
    type: object
    properties:
      height:
        $ref: '#/definitions/Distance'
      length:
        $ref: '#/definitions/Distance'
      weight:
        $ref: '#/definitions/Weight'
      width:
        $ref: '#/definitions/Distance'
  CartItemProperty:
    type: object
    properties:
      display:
        description: True if this property is displayed to the customer
        type: boolean
      expiration_dts:
        description: The date/time that the property expires and is deleted
        type: string
        format: dateTime
      name:
        description: Name
        type: string
        maxLength: 100
      value:
        description: Value
        type: string
        maxLength: 3800
  CartItemVariationSelection:
    type: object
    properties:
      variation_name:
        description: Variation name
        type: string
      variation_value:
        description: Variation value
        type: string
  CartKitComponentOption:
    type: object
    properties:
      cost_if_specified:
        $ref: '#/definitions/Currency'
      cost_per_letter:
        $ref: '#/definitions/Currency'
      cost_per_line:
        $ref: '#/definitions/Currency'
      ignore_if_default:
        description: True if the default answer is ignored
        type: boolean
      item_id:
        description: Kit component item id
        type: string
      item_oid:
        description: Unique identifier for the kit component item
        type: integer
        format: int32
      label:
        description: Display label for the option
        type: string
      name:
        description: Name of the option
        type: string
      one_time_fee:
        description: Charge the fee a single time instead of multiplying by the quantity
        type: boolean
      option_oid:
        description: Unique identifier for the option
        type: integer
        format: int32
      required:
        description: True if the customer is required to select a value
        type: boolean
      selected_value:
        description: The value of the option specified by the customer
        type: string
        maxLength: 1024
      type:
        description: Type of option
        type: string
        enum: [
          "single",
          "multiline",
          "dropdown",
          "hidden",
          "radio",
          "fixed"
        ]
      values:
        description: Values that the customer can select from for radio or select type options
        type: array
        items:
          $ref: '#/definitions/CartItemOptionValue'
  CartMarketing:
    type: object
    properties:
      advertising_source:
        description: The advertising source the customer indicated
        type: string
      cell_phone_opt_in:
        description: True if the customer agrees to receiving marketing SMS messages
        type: boolean
      mailing_list_opt_in:
        description: True if the customer agrees to receiving marketing emails
        type: boolean
  CartPayment:
    type: object
    properties:
      affirm:
        $ref: '#/definitions/CartPaymentAffirm'
      amazon:
        $ref: '#/definitions/CartPaymentAmazon'
      check:
        $ref: '#/definitions/CartPaymentCheck'
      credit_card:
        $ref: '#/definitions/CartPaymentCreditCard'
      health_benefit_card:
        $ref: '#/definitions/CartPaymentHealthBenefitCard'
      payment_method:
        description: Payment method
        type: string
      purchase_order:
        $ref: '#/definitions/CartPaymentPurchaseOrder'
      rtg_code:
        description: Rotating transaction gateway code
        type: string
  CartPaymentAffirm:
    type: object
    properties:
      affirm_checkout_token:
        description: Affirm checkout token
        type: string
  CartPaymentAmazon:
    type: object
    properties:
      amazon_order_reference_id:
        description: Amazon order reference id
        type: string
  CartPaymentCheck:
    type: object
    properties:
      check_number:
        description: Check number they are paying with
        type: integer
        format: int32
  CartPaymentCreditCard:
    type: object
    properties:
      card_expiration_month:
        description: Card expiration month (1-12)
        type: integer
        format: int32
      card_expiration_year:
        description: Card expiration year (four digit year)
        type: integer
        format: int32
      card_number:
        description: Card number (masked to the last 4)
        type: string
      card_number_token:
        description: Hosted field token for the card number
        type: string
      card_type:
        description: Card type
        type: string
      card_verification_number:
        description: Card verification number (masked)
        type: string
      card_verification_number_token:
        description: Hosted field token for the card verification number
        type: string
      customer_profile_credit_card_id:
        description: ID of the stored credit card to use
        type: integer
        format: int32
      store_credit_card:
        description: True if the customer wants to store the card on their profile for future re-use
        type: boolean
  CartPaymentHealthBenefitCard:
    type: object
    properties:
      health_benefit_card_expiration_month:
        description: Health benefit expiration month (1-12)
        type: integer
        format: int32
      health_benefit_card_expiration_year:
        description: Health benefit card expiration year (four digit year)
        type: integer
        format: int32
      health_benefit_card_number:
        description: Health benefit card number (masked to the last 4)
        type: string
      health_benefit_card_number_token:
        description: Hosted field token for the card number
        type: string
      health_benefit_card_verification_number:
        description: Health benefit card verification number (masked)
        type: string
      health_benefit_card_verification_number_token:
        description: Hosted field token for the health benefit card verification number
        type: string
  CartPaymentPurchaseOrder:
    type: object
    properties:
      purchase_order_number:
        description: Purchase order number
        type: string
  CartProfileLoginRequest:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      customer_profile_oid:
        description: Unique identifier for customer profile.  Can not be used with browser key authentication type.
        type: integer
        format: int32
      password:
        description: Password for the profile
        type: string
  CartProfileLoginResponse:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      errors:
        description: Errors to display to the customer if they failed any of the validations checked
        type: array
        items:
          type: string
  CartProfileRegisterRequest:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      password:
        description: Password for the profile
        type: string
  CartProfileRegisterResponse:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      errors:
        description: Errors to display to the customer if they failed any of the validations checked
        type: array
        items:
          type: string
  CartProperty:
    type: object
    properties:
      display:
        description: True if this property is displayed to the customer
        type: boolean
      expiration_dts:
        description: The date/time that the property expires and is deleted
        type: string
        format: dateTime
      name:
        description: Name
        type: string
        maxLength: 100
      value:
        description: Value
        type: string
        maxLength: 3800
  CartResponse:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      errors:
        description: Errors that should be displayed to the customer
        type: array
        items:
          type: string
  CartSettings:
    type: object
    properties:
      billing:
        $ref: '#/definitions/CartSettingsBilling'
      gift:
        $ref: '#/definitions/CartSettingsGift'
      payment:
        $ref: '#/definitions/CartSettingsPayment'
      shipping:
        $ref: '#/definitions/CartSettingsShipping'
      taxes:
        $ref: '#/definitions/CartSettingsTaxes'
      terms:
        $ref: '#/definitions/CartSettingsTerms'
  CartSettingsBilling:
    type: object
    properties:
      provinces:
        description: Provinces
        type: array
        items:
          $ref: '#/definitions/CartSettingsProvince'
  CartSettingsGift:
    type: object
    properties:
      allow_gifts:
        description: True if this checkout supports gift giving
        type: boolean
      gift_charge:
        $ref: '#/definitions/Currency'
      gift_wraps:
        description: The gift wraps available for the customer to select from
        type: array
        items:
          $ref: '#/definitions/CartSettingsGiftWrap'
      max_message_length:
        description: The maximum length of the gift message the giver can enter
        type: integer
        format: int32
  CartSettingsGiftWrap:
    type: object
    properties:
      cost:
        $ref: '#/definitions/Currency'
      title:
        description: Title of the gift wrap
        type: string
      url:
        description: URL for the sample of the gift wrap
        type: string
  CartSettingsPayment:
    type: object
    properties:
      amazon:
        $ref: '#/definitions/CartSettingsPaymentAmazon'
      credit_card:
        $ref: '#/definitions/CartSettingsPaymentCreditCard'
      need_payment:
        description: True if this card requires a payment from the customer
        type: boolean
      paypal:
        $ref: '#/definitions/CartSettingsPaymentPayPal'
      supports_amazon:
        description: True if Amazon payments are available on this order
        type: boolean
      supports_check:
        description: True if check payments are available on this order
        type: boolean
      supports_cod:
        description: True if COD payments are available on this order
        type: boolean
      supports_credit_card:
        description: True if credit card payments are available on this order
        type: boolean
      supports_money_order:
        description: True if money order payments are available on this order
        type: boolean
      supports_paypal:
        description: True if PayPal payments are available on this order
        type: boolean
      supports_purchase_order:
        description: True if purchase order payments are available on this order
        type: boolean
      supports_quote_request:
        description: True if quote requests payments are available on this order
        type: boolean
      supports_wire_transfer:
        description: True if wire transfer payments are available on this order
        type: boolean
  CartSettingsPaymentAmazon:
    type: object
    properties:
      amazon_button_url:
        description: Amazon button URL
        type: string
      amazon_merchant_id:
        description: Amazon merchant ID
        type: string
      amazon_widget_url:
        description: Amazon widget URL
        type: string
  CartSettingsPaymentCreditCard:
    type: object
    properties:
      collect_credit_card_verification_number:
        description: True if the credit card verification number should be collected
        type: boolean
      collect_credit_card_verification_number_minimum:
        description: If this field is null or the total is greater than or equal to this value then collect the CVV2.
        type: number
      credit_card_types:
        description: Available credit card types
        type: array
        items:
          type: string
        enum: [
          AMEX,
          Diners Club,
          Discover,
          MasterCard,
          JCB,
          VISA
        ]
      hosted_fields_shopping_cart_token:
        description: The shoppingCartToken needed for proper initialization of hosted fields collection
        type: string
  CartSettingsPaymentPayPal:
    type: object
    properties:
      paypal_button_alt_text:
        description: PayPal button alt text
        type: string
      paypal_button_url:
        description: PayPal button URL
        type: string
      paypal_credit_button_url:
        description: PayPal Credit button URL
        type: string
      paypal_credit_legal_image_url:
        description: PayPal Credit legal image URL
        type: string
      paypal_credit_legal_url:
        description: PayPal Credit legal URL
        type: string
  CartSettingsProvince:
    type: object
    properties:
      code:
        type: string
      province:
        type: string
  CartSettingsShipping:
    type: object
    properties:
      deliver_on_date:
        $ref: '#/definitions/CartSettingsShippingCalendar'
      estimates:
        description: Estimates for this cart
        type: array
        items:
          $ref: '#/definitions/CartSettingsShippingEstimate'
      need_shipping:
        description: True if this order needs shipping
        type: boolean
      provinces:
        description: Provinces
        type: array
        items:
          $ref: '#/definitions/CartSettingsProvince'
      ship_on_date:
        $ref: '#/definitions/CartSettingsShippingCalendar'
  CartSettingsShippingCalendar:
    type: object
    properties:
      blackouts:
        description: Specified dates that are blacked out on the calendar in ISO8601 format
        type: array
        items:
          type: string
      days_of_week:
        description: Days of week that should be enabled on the calendar (0 - Sunday through 6 - Saturday)
        type: array
        items:
          type: boolean
      earliest:
        description: The earliest date that can be selected on the calendar
        type: string
      require:
        description: True if the customer is required to select a date
        type: boolean
      show:
        description: True if this calendar should be shown to the customer
        type: boolean
  CartSettingsShippingEstimate:
    type: object
    properties:
      allow_3rd_party_billing:
        description: True if this method allows the customer to use their own shipper account number
        type: boolean
      comment:
        description: Comment to display to the customer about this method
        type: string
      cost:
        $ref: '#/definitions/Currency'
      cost_before_discount:
        $ref: '#/definitions/Currency'
      default_method:
        description: True if this is the default method
        type: boolean
      discount:
        $ref: '#/definitions/Currency'
      discounted:
        description: True if this method is discounted because of a coupon
        type: boolean
      display_name:
        description: The name to display to the customer
        type: string
      estimated_delivery:
        description: Date of the estimated delivery (or range)
        type: string
      lift_gate_option:
        description: True if a lift gate option for this method should be offered to the customer
        type: boolean
      name:
        description: Shipping method name
        type: string
      pickup:
        description: True if this shipping method requires customers to physically pickup product themselves
        type: boolean
      tax:
        $ref: '#/definitions/Currency'
      total_tax:
        $ref: '#/definitions/Currency'
  CartSettingsTaxes:
    type: object
    properties:
      counties:
        type: array
        items:
          type: string
  CartSettingsTerms:
    type: object
    properties:
      html:
        description: HTML version of the terms
        type: string
      text:
        description: Text version of the terms.
        type: string
  CartShipping:
    type: object
    properties:
      address1:
        description: Address line 1
        type: string
        maxLength: 50
      address2:
        description: Address line 2
        type: string
        maxLength: 50
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      day_phone:
        description: Day time phone
        type: string
        maxLength: 25
      delivery_date:
        description: Date the customer is requesting delivery on. Typically used for perishable product delivery.
        type: string
        format: dateTime
      evening_phone:
        description: Evening phone
        type: string
        maxLength: 25
      first_name:
        description: First name
        type: string
        maxLength: 30
      last_name:
        description: Last name
        type: string
        maxLength: 30
      lift_gate:
        description: Lift gate requested (LTL shipping methods only)
        type: boolean
      postal_code:
        description: Postal code
        type: string
        maxLength: 25
      ship_on_date:
        description: Date the customer is requesting that the order ship on.  Typically used for perishable product delivery.
        type: string
        format: dateTime
      ship_to_residential:
        description: True if the shipping adress is residential.  Effects the methods that are available to the customer as well as the price of the shipping method.
        type: boolean
      shipping_3rd_party_account_number:
        description: 3rd party account number to ship against for UPS or FedEx
        type: string
        maxLength: 20
      shipping_method:
        description: Shipping method
        type: string
        maxLength: 40
      special_instructions:
        description: Special instructions from the customer regarding shipping
        type: string
        maxLength: 10000
      state_region:
        description: State/Region
        type: string
        maxLength: 32
      title:
        description: Title
        type: string
        maxLength: 50
  CartSummary:
    type: object
    properties:
      arbitrary_shipping_handling_total:
        $ref: '#/definitions/Currency'
      arbitrary_tax:
        $ref: '#/definitions/Currency'
      arbitrary_tax_rate:
        $ref: '#/definitions/Currency'
      arbitrary_taxable_subtotal:
        $ref: '#/definitions/Currency'
      health_benefit_card_amount:
        $ref: '#/definitions/Currency'
      health_benefit_card_balance:
        $ref: '#/definitions/Currency'
      health_benefit_card_requirements:
        description: Health benefit card requirements
        type: string
      internal_gift_certificate_amount:
        $ref: '#/definitions/Currency'
      shipping_handling:
        $ref: '#/definitions/Currency'
      shipping_handling_discount:
        $ref: '#/definitions/Currency'
      shipping_handling_with_discount:
        $ref: '#/definitions/Currency'
      subtotal:
        $ref: '#/definitions/Currency'
      subtotal_discount:
        $ref: '#/definitions/Currency'
      subtotal_with_discount:
        $ref: '#/definitions/Currency'
      surcharge:
        $ref: '#/definitions/Currency'
      tax:
        $ref: '#/definitions/Currency'
      taxable_subtotal:
        $ref: '#/definitions/Currency'
      taxable_subtotal_discount:
        $ref: '#/definitions/Currency'
      taxable_subtotal_with_discount:
        $ref: '#/definitions/Currency'
      total:
        $ref: '#/definitions/Currency'
  CartTaxes:
    type: object
    properties:
      county:
        description: Tax county if the state requires it.
        type: string
        maxLength: 32
      exempt:
        description: True if tax exempt
        type: boolean
      rate:
        description: Tax rate
        type: number
  CartUpsellAfter:
    type: object
    properties:
      finalize_after_dts:
        description: The date/time after which the cart will finalize into an order.
        type: string
        format: dateTime
      finalize_after_minutes:
        description: The amount of inactivity in minutes after which the cart should be finalized into an order.  This will calculate the finalize_after_dts field.
        type: integer
        format: int32
      upsell_path_code:
        description: Upsell path code (this is for legacy upsells only)
        type: string
        maxLength: 5
      upsell_path_name:
        description: Upsell path name to start on (StoreFront Upsells).  Will only be respected on a handoff API call.
        type: string
      upsell_path_variation:
        description: Upsell path variation to start on (StoreFront Upsells).   Will only be respected on a handoff API call.
        type: string
  CartValidationRequest:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      checks:
        description: Checks to perform
        type: array
        items:
          type: string
        enum: [
          All,
          Advertising Source Provided,
          Billing Address Provided,
          Billing Destination Restriction,
          Billing Phone Numbers Provided,
          Billing State Abbreviation Valid,
          Billing Validate City State Zip,
          Coupon Zip Code Restriction,
          Credit Card Shipping Method Conflict,
          Customer Profile Does Not Exist.,
          CVV2 Not Required,
          Electronic Check Confirm Account Number,
          Email confirmed,
          Email provided if required,
          Gift Message Length,
          Item Quantity Valid,
          Item Restrictions,
          Items Present,
          Merchant Specific Item Relationships,
          One per customer violations,
          Options Provided,
          Payment Information Validate,
          Payment Method Provided,
          Payment Method Restriction,
          Pricing Tier Limits,
          Quantity requirements met,
          Referral Code Provided,
          Shipping Address Provided,
          Shipping Destination Restriction,
          Shipping Method Provided,
          Shipping Needs Recalculation,
          Shipping State Abbreviation Valid,
          Shipping Validate City State Zip,
          Special Instructions Length,
          Tax County Specified,
          Valid Delivery Date,
          Valid Ship On Date,
          Auth Test Credit Card
        ]
  CartValidationResponse:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      errors:
        description: Errors to display to the customer if they failed any of the validations checked
        type: array
        items:
          type: string
  ChanelPartnerReasonCodesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      item_level_refund_reason_required:
        description: True if the item level refund reason is required
        type: boolean
      item_level_refund_reasons:
        description: Reason codes available at the item level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      item_level_return_reasons:
        description: Return codes available at the item level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      order_level_refund_reason_required:
        description: True if the order level refund reason is required
        type: boolean
      order_level_refund_reasons:
        description: Reason codes available at the order level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      order_level_reject_reason_required:
        description: True if the order level reject reason is required
        type: boolean
      order_level_reject_reasons:
        description: Reject codes available at the order level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartner:
    type: object
    properties:
      channel_partner_oid:
        description: Channel partner object id
        type: integer
        format: int32
      code:
        description: Code associated with the channel partner
        type: string
      communication_method:
        description: Communication method of the channel partner
        type: string
      dont_hold_shipment:
        description: True if shipments should immediately process for this channel partner.
        type: boolean
      inactive:
        description: True if the channel partner is inactive
        type: boolean
      merchant_id:
        description: Merchant ID of the channel partner
        type: string
      name:
        description: Name of the channel partner
        type: string
      skip_customer_emails:
        description: True if emails to the customer are skipped for this channel partner.
        type: boolean
  ChannelPartnerCancelResponse:
    type: object
    properties:
      cancel_errors:
        description: Array of errors if errors occurred
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartnerEstimateShippingResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      estimates:
        description: An array of shipping methods and their costs
        type: array
        items:
          $ref: '#/definitions/ChannelPartnerShippingEstimate'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartnerEstimateTaxResponse:
    type: object
    properties:
      arbitrary_tax:
        type: number
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartnerImportResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      import_errors:
        description: Array of errors if errors occurred
        type: array
        items:
          type: string
      import_warnings:
        description: Array of warnings if warnings occurred
        type: array
        items:
          type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      order_id:
        description: The order id of the newly imported order if successful
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartnerOrder:
    type: object
    properties:
      advertisingSource:
        description: advertising_source
        type: string
      affiliate_id:
        description: Affiliate Id
        type: string
      affiliate_sub_id:
        description: Affiliate Sub Id
        type: string
      arbitrary_shipping_handling_total:
        description: Arbitrary shipping handling total
        type: number
      arbitrary_tax:
        description: Arbitrary tax for overriding calculated taxes
        type: number
      arbitrary_tax_rate:
        description: Arbitrary tax rate
        type: number
      arbitrary_taxable_subtotal:
        description: Arbitrary taxable subtotal
        type: number
      associate_with_customer_profile_if_present:
        description: If true any matching customer profile based on email is associated with this order
        type: boolean
      auto_approve_purchase_order:
        description: If true any purchase orders are automatically approved
        type: boolean
      billto_address1:
        description: Billing Address line 1
        type: string
        maxLength: 50
      billto_address2:
        description: Billing Address line 2
        type: string
        maxLength: 50
      billto_city:
        description: Billing City
        type: string
        maxLength: 32
      billto_company:
        description: Billing Company
        type: string
        maxLength: 50
      billto_country_code:
        description: Billing ISO-3166 two letter country code
        type: string
        maxLength: 2
      billto_day_phone:
        description: Billing Day phone
        type: string
        maxLength: 25
      billto_evening_phone:
        description: Billing Evening phone
        type: string
        maxLength: 25
      billto_first_name:
        description: Billing First name
        type: string
        maxLength: 30
      billto_last_name:
        description: Billing Last name
        type: string
        maxLength: 30
      billto_postal_code:
        description: Billing Postal code
        type: string
        maxLength: 20
      billto_state_region:
        description: Billing State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      billto_title:
        description: Billing Title
        type: string
        maxLength: 50
      cc_email:
        description: CC email.
        type: string
        maxLength: 100
      channel_partner_order_id:
        description: The id for this order within the channel partner system.
        type: string
      consider_recurring:
        description: If true this order is marked as an auto order (recurring)
        type: boolean
      coupons:
        description: Array of coupon codes
        type: array
        items:
          type: string
      credit_card_authorization_amount:
        description: The amount authorized externally
        type: number
      credit_card_authorization_dts:
        description: Date/Time of credit card authorization in ISO8601 format
        type: string
        format: dateTime
      credit_card_authorization_number:
        description: The reference number provided by an externally processed transaction
        type: string
      credit_card_expiration_month:
        description: Credit card expiration month
        type: integer
        format: int32
      credit_card_expiration_year:
        description: Credit card expiration year
        type: integer
        format: int32
      credit_card_type:
        description: Credit card type
        type: string
      custom_field1:
        description: Custom field 1
        type: string
        maxLength: 50
      custom_field2:
        description: Custom field 2
        type: string
        maxLength: 50
      custom_field3:
        description: Custom field 3
        type: string
        maxLength: 50
      custom_field4:
        description: Custom field 4
        type: string
        maxLength: 50
      custom_field5:
        description: Custom field 5
        type: string
        maxLength: 75
      custom_field6:
        description: Custom field 6
        type: string
        maxLength: 50
      custom_field7:
        description: Custom field 7
        type: string
        maxLength: 50
      delivery_date:
        description: Date the customer is requesting delivery on. Typically used for perishable product delivery.
        type: string
        format: dateTime
      echeck_bank_aba_code:
        description: eCheck bank ABA code
        type: string
      echeck_bank_account_name:
        description: eCheck bank account name
        type: string
      echeck_bank_account_number:
        description: eCheck bank account number
        type: string
      echeck_bank_account_type:
        description: eCheck bank account type
        type: string
        enum: [
          "Checking",
          "Savings"
        ]
      echeck_bank_name:
        description: eCheck bank name
        type: string
      echeck_bank_owner_type:
        description: eCheck bank owner type
        type: string
        enum: [
          "Business",
          "Personal"
        ]
      echeck_customer_tax_id:
        description: eCheck customer tax id
        type: string
      echeck_drivers_license_dob:
        description: eCheck drivers license dob
        type: string
      echeck_drivers_license_number:
        description: eCheck drivers license number
        type: string
      echeck_drivers_license_state:
        description: eCheck drivers license state
        type: string
      email:
        description: Email
        type: string
        maxLength: 100
      gift:
        description: True if this order is a gift
        type: boolean
      gift_email:
        description: Email address of the gift recipient
        type: string
        maxLength: 100
      gift_message:
        description: Message to the gift recipient
        type: string
        maxLength: 10000
      hosted_fields_card_token:
        description: The token provided by UltraCart hosted fields when a credit card number is uploaded into the system.  This is the only way to provide a credit card number.
        type: string
      hosted_fields_cvv_token:
        description: The token provided by UltraCart hosted fields when a credit card cvv is uploaded into the system.  This is the only way to provide a cvv number.
        type: string
      insurance_application_id:
        description: Insurance application id
        type: string
      insurance_claim_id:
        description: Insurance claim id
        type: string
      ip_address:
        description: IP Address of the customer
        type: string
      items:
        description: Items
        type: array
        items:
          $ref: '#/definitions/ChannelPartnerOrderItem'
      least_cost_route:
        description: If true the least expensive shipping method is automatically chosen during the order import
        type: boolean
      least_cost_route_shipping_methods:
        description: An optional array of shipping methods to restict choices if least_cost_route is true
        type: array
        items:
          type: string
      mailing_list_opt_in:
        description: If true the customer is subscribed to any configured mailing lists
        type: boolean
      no_realtime_payment_processing:
        description: If true no payment processing is done and the order is placed into Accounts Receivable
        type: boolean
      payment_method:
        description: Payment method
        type: string
        enum: [
          "Affirm",
          "Amazon",
          "Check",
          "COD",
          "Credit Card",
          "eCheck",
          "LoanHero",
          "Money Order",
          "PayPal",
          "Purchase Order",
          "Quote Request",
          "Wire Transfer",
          "PayPal Fastlane"
        ]
      purchase_order_number:
        description: Purchase order number
        type: string
      rotating_transaction_gateway_code:
        description: The rotating transaction gateway code for the gateway used to charge this order
        type: string
      sales_rep_code:
        description: Sales rep code
        type: string
      screen_branding_theme_code:
        description: Screen branding theme code
        type: string
        maxLength: 10
      ship_on_date:
        description: Date the customer is requesting that the order ship on.  Typically used for perishable product delivery.
        type: string
        format: dateTime
      ship_to_residential:
        description: True if the shipping adress is residential.  Effects the methods that are available to the customer as well as the price of the shipping method.
        type: boolean
      shipping_method:
        description: Shipping method
        type: string
      shipto_address1:
        description: Shipping Address line 1
        type: string
        maxLength: 50
      shipto_address2:
        description: Shipping Address line 2
        type: string
        maxLength: 50
      shipto_city:
        description: Shipping City
        type: string
        maxLength: 32
      shipto_company:
        description: Shipping Company
        type: string
        maxLength: 50
      shipto_country_code:
        description: Shipping ISO-3166 two letter country code
        type: string
        maxLength: 2
      shipto_day_phone:
        description: Shipping Day phone
        type: string
        maxLength: 25
      shipto_evening_phone:
        description: Shipping Evening phone
        type: string
        maxLength: 25
      shipto_first_name:
        description: Shipping First name
        type: string
        maxLength: 30
      shipto_last_name:
        description: Shipping Last name
        type: string
        maxLength: 30
      shipto_postal_code:
        description: Shipping Postal code
        type: string
        maxLength: 20
      shipto_state_region:
        description: Shipping State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      shipto_title:
        description: Shipping Title
        type: string
        maxLength: 50
      skip_payment_processing:
        description: If true the order is placed directly into the shipping department
        type: boolean
      special_instructions:
        description: Special instructions from the customer regarding shipping
        type: string
        maxLength: 10000
      store_completed:
        description: If true the order bypasses shipping and is marked completed
        type: boolean
      store_if_payment_declines:
        description: If true any failed payments are placed into Accounts Receivable.  If false any failed payments result in a rejected order resulting in errors thrown during the insert routine
        type: boolean
      storefront_host_name:
        description: StoreFront host name associated with the order
        type: string
      tax_county:
        description: The optional shipping county used to determine exact taxes
        type: string
      tax_exempt:
        description: If true this order is marked as being tax exempt
        type: boolean
      transaction:
        $ref: '#/definitions/ChannelPartnerOrderTransaction'
      treat_warnings_as_errors:
        description: If true all warnings are considered errors, this is true by default
        type: boolean
      use_prior_payment_information_from_order_id:
        description: An Order Id from a prior purchase of this customer which is used to retrieve vaulted payment information in order to pay for this current order.
        type: string
  ChannelPartnerOrderItem:
    type: object
    properties:
      arbitrary_unit_cost:
        description: Arbitrary unit cost for this item that differs from the listed price
        type: number
      auto_order_last_rebill_dts:
        description: Optional date/time of the last rebill if this item is part of an auto (recurring) order
        type: string
        format: dateTime
      auto_order_schedule:
        description: The frequency schedule for this item if this item is part of an auto (recurring) order
        type: string
        enum: [
          "Weekly",
          "Every 10 Days",
          "Biweekly",
          "Every 24 Days",
          "Every 28 Days",
          "Monthly",
          "Every 45 Days",
          "Every 2 Months",
          "Every 3 Months",
          "Every 4 Months",
          "Every 5 Months",
          "Every 6 Months",
          "Yearly",
          "Every 4 Weeks",
          "Every 6 Weeks",
          "Every 8 Weeks"
        ]
      merchant_item_id:
        description: Item ID
        type: string
        maxLength: 20
      options:
        description: Item options
        type: array
        items:
          $ref: '#/definitions/ChannelPartnerOrderItemOption'
      properties:
        description: Properties
        type: array
        items:
          $ref: '#/definitions/ChannelPartnerOrderItemProperty'
      quantity:
        description: Quantity
        type: number
      upsell:
        description: True if this item was an upsell item.
        type: boolean
  ChannelPartnerOrderItemOption:
    type: object
    properties:
      name:
        description: The name of the item option.
        type: string
      value:
        description: The value of the item option.
        type: string
  ChannelPartnerOrderItemProperty:
    type: object
    properties:
      display:
        description: True if this property is displayed to the customer
        type: boolean
      expiration_dts:
        description: The date/time that the property expires and is deleted
        type: string
        format: dateTime
      name:
        description: Name
        type: string
        maxLength: 100
      value:
        description: Value
        type: string
        maxLength: 3800
  ChannelPartnerOrderTransaction:
    type: object
    properties:
      details:
        description: Transaction gateway details
        type: array
        items:
          $ref: '#/definitions/ChannelPartnerOrderTransactionDetail'
      successful:
        description: True if the transaction was successfully charged
        type: boolean
  ChannelPartnerOrderTransactionDetail:
    type: object
    properties:
      name:
        description: The name of the item option.
        type: string
      value:
        description: The value of the item option.
        type: string
  ChannelPartnerShippingEstimate:
    type: object
    properties:
      shipping_handling_total:
        description: The total estimate for this shipping method based on the provided order.
        type: number
      shipping_method:
        description: The name of the shipping method
        type: string
  ChannelPartnerShipToPreference:
    type: object
    properties:
      additional_kit_component_item_ids:
        description: Additional item ids to add as kit components to the order with a zero price.
        type: array
        items:
          type: string
      channel_partner_oid:
        description: The channel partner object identifier this preference is associated with
        type: integer
        format: int32
      channel_partner_ship_to_preference_oid:
        description: Object identifier for the ship to preference
        type: integer
        format: int32
      description:
        description: A description that is meaningful to the merchant.
        type: string
        maxLength: 100
      merchant_id:
        description: The merchant id that owns the channel partner
        type: string
      return_policy:
        description: Alternate return policy to print on the packing slip.
        type: string
      ship_to_edi_code:
        description: The ship to EDI code that the preferences are for
        type: string
  ChannelPartnerShipToPreferenceResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      ship_to_preference:
        $ref: '#/definitions/ChannelPartnerShipToPreference'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartnerShipToPreferencesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      shipToPreferences:
        description: ship_to_preferences
        type: array
        items:
          $ref: '#/definitions/ChannelPartnerShipToPreference'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ChannelPartnersResponse:
    type: object
    properties:
      channelPartners:
        description: channel_partners
        type: array
        items:
          $ref: '#/definitions/ChannelPartner'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CheckoutAllowedCountriesResponse:
    type: object
    properties:
      countries:
        type: array
        items:
          $ref: '#/definitions/Country'
  CheckoutHandoffRequest:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      error_parameter_name:
        description: If any error happen during the processing on the UltraCart side, the browser will be redirected to your error_return_url with the error passed in this parameter name.
        type: string
      error_return_url:
        description: The URL to return the browser to if there are processing errors on the UltraCart side.
        type: string
      operation:
        description: The type of handoff operation to perform
        type: string
        enum: [
          "checkout",
          "payPal",
          "payPalCredit",
          "view",
          "affirm",
          "sezzle"
        ]
      paypal_maximum_upsell_revenue:
        description: The maximum amount of revenue that you think the customer could add during a custom upsell after sequence on your checkout.
        type: number
      paypal_return_url:
        description: The URl to return the customers browser to after they have completed the PayPal process.
        type: string
      secure_host_name:
        description: The desired secure host name to perform the handoff on.  This should match the desired StoreFront.
        type: string
      ucacid:
        description: The UltraCart Analytics cookie value.  Populate this if you're handing off from a different domain than the checkout.
        type: string
  CheckoutHandoffResponse:
    type: object
    properties:
      cart:
        $ref: '#/definitions/Cart'
      errors:
        description: Errors that occurred which are preventing the handoff operation.  Display these to the customer.
        type: array
        items:
          type: string
      redirect_to_url:
        description: The URL that you should redirect the customers browser to
        type: string
  CheckoutSetupBrowserKeyRequest:
    type: object
    properties:
      allowed_referrers:
        description: Allowed referrers.  If URLs are specified, automatic translation will convert them to proper allowed referrer maskes.
        type: array
        items:
          type: string
  CheckoutSetupBrowserKeyResponse:
    type: object
    properties:
      browser_key:
        description: Browser key that is used to authenticate against the new linked application.
        type: string
  CheckoutStateProvinceResponse:
    type: object
    properties:
      stateProvinces:
        type: array
        items:
          $ref: '#/definitions/StateProvince'
  CityStateZip:
    type: object
    properties:
      city:
        type: string
      error:
        type: string
      state:
        type: string
      validZip:
        type: boolean
      zip:
        type: string
  Conversation:
    type: object
    properties:
      base_language_iso_code:
        description: The base language iso code for the StoreFront that everything is translated into
        type: string
      closed:
        type: boolean
      conversation_arn:
        type: string
      conversation_uuid:
        type: string
      customer_first_message_unresponded_to_dts:
        description: Date/time of the first customer message that is unresponded to.
        type: string
        format: dateTime
      last_conversation_message_body:
        type: string
      last_conversation_participant_arn:
        type: string
      last_conversation_participant_name:
        type: string
      last_interactive_message_dts:
        description: Last interactive message date/time
        type: string
        format: dateTime
      last_message_dts:
        description: Last message date/time
        type: string
        format: dateTime
      medium:
        description: The communication medium of the customer.
        type: string
        enum: [
          "sms",
          "websocket"
        ]
      merchant_id:
        type: string
      message_count:
        type: integer
        format: int32
      messages:
        type: array
        items:
          $ref: '#/definitions/ConversationMessage'
      participants:
        type: array
        items:
          $ref: '#/definitions/ConversationParticipant'
      sentiment:
        $ref: '#/definitions/ConversationSentiment'
      start_dts:
        description: Start of the conversation date/time
        type: string
        format: dateTime
      unread_messages:
        type: boolean
      virtual_agent:
        description: True if a virtual agent answered the conversation
        type: boolean
      virtual_agent_cost:
        description: The cost of this conversation performed by the virtual agent
        type: number
      visible:
        type: boolean
  ConversationAgentAuth:
    type: object
    properties:
      conversation_participant_arn:
        type: string
      conversation_participant_name:
        type: string
      group_ids:
        description: UltraCart Groups this user belongs to
        type: array
        items:
          type: integer
      jwt:
        type: string
      merchant_id:
        type: string
      pbx_admin:
        type: boolean
      pbx_jwt:
        type: string
      pbx_supervisor:
        type: boolean
      pbx_user:
        type: boolean
      pbx_voice_identity:
        type: string
      pbx_voice_token:
        type: string
      pbx_worker_token:
        type: string
      twilio_accounts:
        type: array
        items:
          $ref: '#/definitions/ConversationTwilioAccount'
      user_id:
        description: UltraCart User ID
        type: integer
        format: int32
      websocket_url:
        type: string
  ConversationAgentAuthResponse:
    type: object
    properties:
      agent_auth:
        $ref: '#/definitions/ConversationAgentAuth'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationAgentProfile:
    type: object
    properties:
      ai:
        description: AI powered chat bot
        type: boolean
      ai_chat_instructions:
        description: Additional instructions for this AI when handle web chats
        type: string
      ai_persona:
        description: Persona of this AI agent
        type: string
      ai_sms_instructions:
        description: Additional instructions for this AI when handle SMS messages
        type: string
      chat_limit:
        description: The number of engagement chats that can be pushed on them at any given time.
        type: integer
        format: int32
      default_language_iso_code:
        description: The default language the agent is chatting in
        type: string
      default_status:
        description: Default status when the agent loads conversations app.
        type: string
        enum: [
          "available",
          "busy",
          "unavailable"
        ]
      display_name:
        description: An alternate name that the agent wants to use in chat.
        type: string
      name:
        description: Their actual user name for profile settings display as placeholder test
        type: string
      profile_image_upload_key:
        description: An upload key used to update the profile image.
        type: string
      profile_image_url:
        description: Their current profile image URL
        type: string
      user_id:
        description: User ID associated with the agent.  Populated by getAgentProfiles call only.
        type: integer
        format: int32
  ConversationAgentProfileResponse:
    type: object
    properties:
      agent_profile:
        $ref: '#/definitions/ConversationAgentProfile'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationAgentProfilesResponse:
    type: object
    properties:
      agent_profiles:
        type: array
        items:
          $ref: '#/definitions/ConversationAgentProfile'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationAutocompleteRequest:
    type: object
    properties:
      field:
        type: string
      term:
        type: string
  ConversationAutocompleteResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      field:
        type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      results:
        type: array
        items:
          $ref: '#/definitions/ConversationAutocompleteValue'
      success:
        description: Indicates if API call was successful
        type: boolean
      term:
        type: string
      warning:
        $ref: '#/definitions/Warning'
  ConversationAutocompleteValue:
    type: object
    properties:
      description:
        type: string
      value:
        type: string
  ConversationCannedMessage:
    type: object
    properties:
      canned_message:
        type: string
      conversation_canned_message_oid:
        type: integer
        format: int32
      conversation_department_oids:
        type: array
        items:
          type: integer
      short_code:
        type: string
  ConversationCannedMessageResponse:
    type: object
    properties:
      conversation_canned_message:
        $ref: '#/definitions/ConversationCannedMessage'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationCannedMessagesResponse:
    type: object
    properties:
      conversation_canned_messages:
        type: array
        items:
          $ref: '#/definitions/ConversationCannedMessage'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationCannedMessagesSearch:
    type: object
    properties:
      max_results:
        type: integer
        format: int32
      short_code:
        type: string
  ConversationDeleteKnowledgeBaseDocumentResponse:
    type: object
    properties:
      document_id:
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationDepartment:
    type: object
    properties:
      conversation_department_oid:
        type: integer
        format: int32
      department_name:
        type: string
      members:
        type: array
        items:
          $ref: '#/definitions/ConversationDepartmentMember'
      merchant_id:
        type: string
      settings:
        $ref: '#/definitions/ConversationDepartmentSettings'
  ConversationDepartmentMember:
    type: object
    properties:
      member:
        type: boolean
      name:
        type: string
      user_id:
        type: integer
        format: int32
  ConversationDepartmentMembersResponse:
    type: object
    properties:
      conversation_department_members:
        type: array
        items:
          $ref: '#/definitions/ConversationDepartmentMember'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationDepartmentResponse:
    type: object
    properties:
      conversation_department:
        $ref: '#/definitions/ConversationDepartment'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationDepartmentSettings:
    type: object
  ConversationDepartmentsResponse:
    type: object
    properties:
      conversation_departments:
        type: array
        items:
          $ref: '#/definitions/ConversationDepartment'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationEngagement:
    type: object
    properties:
      active:
        type: boolean
      conversation_engagement_oid:
        type: integer
        format: int32
      customer_greeting:
        type: string
      customer_initiated:
        type: boolean
      department_oids:
        type: array
        items:
          type: integer
      engagement_name:
        type: string
      equation:
        $ref: '#/definitions/ConversationEngagementEquation'
      time_on_page:
        type: integer
        format: int32
      visitor_type:
        description: The type of visitor
        type: string
        enum: [
          "all",
          "first time",
          "returning"
        ]
  ConversationEngagementEquation:
    type: object
    properties:
      groups:
        type: array
        items:
          $ref: '#/definitions/ConversationEngagementEquationGroup'
  ConversationEngagementEquationFunction:
    type: object
    properties:
      any_page_url_logic:
        description: Logic operation to perform on an any page url function type
        type: string
        enum: [
          "contains",
          "does not contain",
          "is exactly",
          "is not"
        ]
      any_page_url_value:
        type: string
      current_page_url_logic:
        description: Logic operation to perform on a current page url function type
        type: string
        enum: [
          "contains",
          "does not contain",
          "is exactly",
          "is not"
        ]
      current_page_url_value:
        type: string
      customers_browsing_time_logic:
        description: Logic operation to perform on a customer's browsing time function type
        type: string
        enum: [
          "is at least",
          "is more than",
          "is less than",
          "is at most"
        ]
      customers_browsing_time_seconds:
        type: integer
        format: int32
      customers_location_country:
        type: string
      customers_location_logic:
        description: Logic operation to perform on a customer's location function type
        type: string
        enum: [
          "is",
          "is not"
        ]
      customers_location_state:
        type: string
      number_of_viewed_pages_logic:
        description: Logic operation to perform on a customer's browsing time function type
        type: string
        enum: [
          "is at least",
          "is more than",
          "is less than",
          "is at most"
        ]
      number_of_viewed_pages_value:
        type: integer
        format: int32
      referring_website_logic:
        description: Logic operation to perform on a referring website function type
        type: string
        enum: [
          "contains",
          "does not contain",
          "is exactly",
          "is not"
        ]
      referring_website_value:
        type: string
      type:
        description: Type of function
        type: string
        enum: [
          "current page url",
          "customers location",
          "customers browsing time",
          "number of viewed pages",
          "referring website address",
          "any page from session"
        ]
  ConversationEngagementEquationGroup:
    type: object
    properties:
      functions:
        type: array
        items:
          $ref: '#/definitions/ConversationEngagementEquationFunction'
  ConversationEngagementResponse:
    type: object
    properties:
      conversation_engagement:
        $ref: '#/definitions/ConversationEngagement'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationEngagementsResponse:
    type: object
    properties:
      conversation_engagements:
        type: array
        items:
          $ref: '#/definitions/ConversationEngagement'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationEventAddCoupon:
    type: object
    properties:
      agent_arn:
        type: string
      agent_name:
        type: string
      coupon_code:
        type: string
  ConversationEventAddItem:
    type: object
    properties:
      agent_arn:
        type: string
      agent_name:
        type: string
      items:
        type: array
        items:
          $ref: '#/definitions/CartItem'
  ConversationEventQueuePosition:
    type: object
    properties:
      available:
        description: True if agents are logged into the queue
        type: boolean
      position:
        description: Position in the queue.  Value will be -1 if they cant be found in the queue.
        type: integer
        format: int32
  ConversationEventReadMessage:
    type: object
    properties:
      conversation_message_uuid:
        type: string
      message_dts:
        description: Message date/time
        type: string
        format: dateTime
      message_epoch:
        type: integer
        format: int64
  ConversationEventRRWeb:
    type: object
    properties:
      data:
        type: string
      data_part:
        type: integer
        format: int32
      data_sha256:
        type: string
      data_total_parts:
        type: integer
        format: int32
      data_total_sha256:
        type: string
      event_index:
        type: integer
        format: int32
      type:
        description: Type of event
        type: string
        enum: [
          "init",
          "events"
        ]
  ConversationEventTyping:
    type: object
    properties:
      author_conversation_participant_arn:
        type: string
      author_conversation_participant_name:
        type: string
      value:
        type: string
  ConversationEventWebchatContext:
    type: object
    properties:
      cart_id:
        type: string
      ucacid:
        type: string
      url:
        type: string
  ConversationInsertKnowledgeBaseDocumentRequest:
    type: object
    properties:
      presigned_url:
        type: string
  ConversationInsertKnowledgeBaseDocumentResponse:
    type: object
    properties:
      document_uuid:
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      s3_key:
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      vector_keys:
        type: array
        items:
          type: string
      warning:
        $ref: '#/definitions/Warning'
  ConversationJoinRequest:
    type: object
    properties:
      participant_language_iso_code:
        type: string
  ConversationKnowledgeBaseDocument:
    type: object
    properties:
      chunk_count:
        type: integer
        format: int32
      description:
        type: string
      document_id:
        description: Human readable identifier.  Filename is recommended.
        type: string
      document_uuid:
        type: string
      metadata:
        type: string
      mime_type:
        type: string
      s3_key:
        type: string
  ConversationKnowledgeBaseDocumentsResponse:
    type: object
    properties:
      documents:
        description: documents
        type: array
        items:
          $ref: '#/definitions/ConversationKnowledgeBaseDocument'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationKnowledgeBaseDocumentUploadUrl:
    type: object
    properties:
      key:
        type: string
      url:
        type: string
  ConversationKnowledgeBaseDocumentUploadUrlResponse:
    type: object
    properties:
      conversation_pbx_audio_upload_url:
        $ref: '#/definitions/ConversationKnowledgeBaseDocumentUploadUrl'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationLocationCountry:
    type: object
    properties:
      iso2:
        type: string
      name:
        type: string
      state_provinces:
        type: array
        items:
          $ref: '#/definitions/ConversationLocationStateProvince'
  ConversationLocationsResponse:
    type: object
    properties:
      countries:
        type: array
        items:
          $ref: '#/definitions/ConversationLocationCountry'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationLocationStateProvince:
    type: object
    properties:
      abbreviation:
        type: string
      name:
        type: string
  ConversationMessage:
    type: object
    properties:
      author_conversation_participant_arn:
        type: string
      author_conversation_participant_name:
        type: string
      body:
        type: string
      client_message_id:
        type: string
      conversation_message_uuid:
        type: string
      delay_until_dts:
        description: Delay message transmission until date/time
        type: string
        format: dateTime
      language_iso_code:
        type: string
      media_urls:
        type: array
        items:
          type: string
      merchant_id:
        type: string
      message_dts:
        description: Message date/time
        type: string
        format: dateTime
      message_epoch:
        description: Message epoch milliseconds
        type: integer
        format: int64
      translations:
        type: array
        items:
          $ref: '#/definitions/ConversationMessageTranslation'
      transport_statuses:
        type: array
        items:
          $ref: '#/definitions/ConversationMessageTransportStatus'
      type:
        description: Message type
        type: string
        enum: [
          "message",
          "notice",
          "engagement prompt"
        ]
      upload_keys:
        type: array
        items:
          type: string
  ConversationMessagesResponse:
    type: object
    properties:
      conversation_messages:
        type: array
        items:
          $ref: '#/definitions/ConversationMessage'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationMessageTranslation:
    type: object
    properties:
      body:
        type: string
      language_iso_code:
        type: string
  ConversationMessageTransportStatus:
    type: object
    properties:
      conversation_participant_arn:
        type: string
      status:
        description: The status of the message transport
        type: string
        enum: [
          "accepted",
          "scheduled",
          "queued",
          "sending",
          "sent",
          "read",
          "TWILIO_CREDENTIALS_MISSING",
          "SENT_TO_TWILIO",
          "TWILIO_ERROR",
          "SENT_TO_PINPOINT",
          "PINPOINT_ERROR"
        ]
  ConversationMultimediaUploadUrl:
    type: object
    properties:
      key:
        type: string
      url:
        type: string
  ConversationMultimediaUploadUrlResponse:
    type: object
    properties:
      conversation_multimedia_upload_url:
        $ref: '#/definitions/ConversationMultimediaUploadUrl'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationParticipant:
    type: object
    properties:
      conversation_participant_arn:
        type: string
      conversation_participant_name:
        type: string
      conversation_participant_uuid:
        type: string
      email:
        type: string
      joined_dts:
        description: Joined conversation date/time
        type: string
        format: dateTime
      language_iso_code:
        type: string
      last_message_dts:
        description: Last message date/time
        type: string
        format: dateTime
      left_dts:
        description: Left conversation date/time
        type: string
        format: dateTime
      profile_image_url:
        type: string
      sms_phone_number:
        type: string
      status:
        type: string
      timezone:
        type: string
      unread_messages:
        type: integer
        format: int32
  ConversationPbxAgent:
    type: object
    properties:
      cellphone:
        description: Cellphone number of agent in E.164 format
        type: string
        maxLength: 50
      conversation_pbx_agent_uuid:
        description: Conversation Pbx Agent unique identifier
        type: string
      extension:
        description: Extension
        type: integer
        format: int32
      forward_calls_to_cellphone:
        description: True if calls to this agent should be forwarded to their cellphone
        type: boolean
      full_name:
        description: Full name
        type: string
      login:
        description: Agent login
        type: string
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      personal_conversation_pbx_voicemail_mailbox_uuid:
        description: Personal Conversation Pbx Voicemail Mailbox UUID
        type: string
        maxLength: 50
      record_outgoing_automatically:
        description: True if outgoing calls should be automatically recorded
        type: boolean
      shared_conversation_pbx_voicemail_mailbox_uuid:
        description: Shared Conversation Pbx Voicemail Mailbox UUID
        type: string
        maxLength: 50
      twilio_taskrouter_worker_id:
        description: Twilio taskrouter worker Id
        type: string
        maxLength: 100
      unavailable_play_audio_uuid:
        description: Unavailable play audio UUID
        type: string
        maxLength: 50
      unavailable_say:
        description: Unavailable say
        type: string
      unavailable_say_voice:
        description: Unavailable say voice
        type: string
        maxLength: 50
      user_id:
        description: User Id
        type: integer
        format: int32
      voicemail:
        description: True if this agent has voicemail configured
        type: boolean
  ConversationPbxAgentResponse:
    type: object
    properties:
      agent:
        $ref: '#/definitions/ConversationPbxAgent'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxAgentsResponse:
    type: object
    properties:
      agents:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxAgent'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxAudio:
    type: object
    properties:
      audio_s3_listing_key:
        description: Audio S3 Listing Key
        type: string
        maxLength: 250
      conversation_pbx_audio_uuid:
        description: Conversation Pbx Audio UUID
        type: string
        maxLength: 50
      default_hold_music:
        description: If true, this will be the default hold music
        type: boolean
      description:
        description: Description of this audio
        type: string
        maxLength: 100
      filename:
        description: Filename
        type: string
        maxLength: 100
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      mime_type:
        description: Mime Type
        type: string
        maxLength: 100
      url:
        description: URL
        type: string
      user_id:
        description: User Id
        type: integer
        format: int32
      version:
        description: Version
        type: integer
        format: int32
  ConversationPbxAudioResponse:
    type: object
    properties:
      audio:
        $ref: '#/definitions/ConversationPbxAudio'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxAudiosResponse:
    type: object
    properties:
      audios:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxAudio'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxAudioUploadUrl:
    type: object
    properties:
      key:
        type: string
      url:
        type: string
  ConversationPbxAudioUploadUrlResponse:
    type: object
    properties:
      conversation_pbx_audio_upload_url:
        $ref: '#/definitions/ConversationPbxAudioUploadUrl'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxAudioUsageResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      menus:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxMenu'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      queues:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxQueue'
      success:
        description: Indicates if API call was successful
        type: boolean
      voicemail_mailboxes:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxVoicemailMailbox'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxCustomerSnapshotRequest:
    type: object
    properties:
      auto_order_expand:
        type: string
      customer_expand:
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      order_expand:
        type: string
      phone_number:
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxCustomerSnapshotResponse:
    type: object
    properties:
      auto_orders:
        type: array
        items:
          $ref: '#/definitions/AutoOrder'
      customers:
        type: array
        items:
          $ref: '#/definitions/Customer'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      orders:
        type: array
        items:
          $ref: '#/definitions/Order'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxMenu:
    type: object
    properties:
      allow_direct_extensions:
        description: If true, the customer is allowed to input direct extensions within this menu
        type: boolean
      conversation_pbx_menu_uuid:
        description: Conversation Pbx Menu UUID
        type: string
        maxLength: 50
      default_action:
        description: The default action for this menu
        type: string
        maxLength: 30
      default_action_target:
        description: The default action target for this menu
        type: string
        maxLength: 50
      mappings:
        description: Action mappings for this menu
        type: array
        items:
          $ref: '#/definitions/ConversationPbxMenuMapping'
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      name:
        description: Menu name
        type: string
        maxLength: 50
      play_audio_uuid:
        description: An optional audio clip that plays when a customer enters this menu
        type: string
        maxLength: 50
      say:
        description: An optional saying that plays when a customer enters this menu
        type: string
      say_voice:
        description: say voice
        type: string
        maxLength: 50
        enum: [
          "man",
          "woman"
        ]
      timeout:
        description: The idle seconds before this menu times out
        type: integer
        format: int32
  ConversationPbxMenuMapping:
    type: object
    properties:
      action:
        description: Action
        type: string
        maxLength: 30
        enum: [
          "time based",
          "menu",
          "queue",
          "voicemail",
          "agent"
        ]
      action_target:
        description: Action target.  This is the UUID associated with the configuration object of that particular type.
        type: string
        maxLength: 50
      digits:
        description: Digits
        type: integer
        format: int32
      speech:
        description: Speech
        type: string
  ConversationPbxMenuResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      menu:
        $ref: '#/definitions/ConversationPbxMenu'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxMenusResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      menus:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxMenu'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxPhoneNumber:
    type: object
    properties:
      action:
        description: Action
        type: string
        maxLength: 30
        enum: [
          "time based",
          "menu",
          "queue",
          "voicemail",
          "agent"
        ]
      action_target:
        description: Action target.  This is the UUID associated with the configuration object of that particular type.
        type: string
        maxLength: 50
      conversation_pbx_phone_number_uuid:
        description: Conversation Pbx Phone Number UUID
        type: string
        maxLength: 50
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      phone_number:
        description: Phone number
        type: string
        maxLength: 50
  ConversationPbxPhoneNumberResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      phone_number:
        $ref: '#/definitions/ConversationPbxPhoneNumber'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxPhoneNumbersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      phone_numbers:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxPhoneNumber'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxQueue:
    type: object
    properties:
      announce_queue_position:
        description: If true, the customer is told their queue position upon entering the queue
        type: boolean
      conversation_pbx_queue_uuid:
        description: Conversation Pbx Queue unique identifier
        type: string
      conversation_voicemail_mailbox_uuid:
        description: The voicemail mailbox associated with this queue
        type: string
        maxLength: 50
      hold_conversation_pbx_audio_uuid:
        description: The audio to play while holding in a queue
        type: string
        maxLength: 50
      max_hold_seconds:
        description: The maximum number of seconds for a customer to hold in a queue
        type: integer
        format: int32
      members:
        $ref: '#/definitions/ConversationPbxQueueMembers'
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      name:
        description: Name of queue
        type: string
        maxLength: 50
      no_agent_available_play_audio_uuid:
        description: When no agent is available after the max_hold_seconds, say this
        type: string
        maxLength: 50
      no_agent_available_say:
        description: When no agent is available after the max_hold_seconds, say this
        type: string
      no_agent_available_say_voice:
        description: The type of voice used to say text when no agent is available
        type: string
        maxLength: 50
      play_audio_uuid:
        description: Audio played when customer enters a queue
        type: string
        maxLength: 50
      record_call:
        description: If true, any calls in this queue are recorded
        type: boolean
      say:
        description: Say text when a customer enters queue
        type: string
      say_voice:
        description: The type of voice to use when say text is spoken
        type: string
        maxLength: 50
      twilio_taskrouter_workflow_sid:
        description: Twilio taskrouter workflow sid
        type: string
        maxLength: 100
      twilio_workspace_queue_sid:
        description: Twilio workspace queue sid
        type: string
        maxLength: 50
      voicemail:
        description: If true, this queue has a voicemail associated with it
        type: boolean
      wait_critical_seconds:
        description: Wait time in seconds before critical
        type: integer
        format: int32
      wait_warning_seconds:
        description: Wait time in seconds before warning
        type: integer
        format: int32
      wrap_up_seconds:
        description: Wrap up time in seconds
        type: integer
        format: int32
  ConversationPbxQueueMembers:
    type: object
    properties:
      groups:
        type: array
        items:
          type: integer
      users:
        type: array
        items:
          type: integer
  ConversationPbxQueueResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      queue:
        $ref: '#/definitions/ConversationPbxQueue'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxQueuesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      queues:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxQueue'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxTimeBased:
    type: object
    properties:
      conversation_pbx_time_based_uuid:
        type: string
      mapping_config:
        $ref: '#/definitions/ConversationPbxTimeBasedMappingConfig'
      merchant_id:
        type: string
      time_based_name:
        type: string
  ConversationPbxTimeBasedMapping:
    type: object
    properties:
      action:
        description: Action
        type: string
        maxLength: 30
        enum: [
          "time based",
          "menu",
          "queue",
          "voicemail",
          "agent"
        ]
      action_target:
        description: Action target.  This is the UUID associated with the configuration object of that particular type.
        type: string
        maxLength: 50
      name:
        description: Name
        type: string
        maxLength: 50
      time_range_uuid:
        description: Time range UUID
        type: string
        maxLength: 50
  ConversationPbxTimeBasedMappingConfig:
    type: object
    properties:
      default_mapping:
        $ref: '#/definitions/ConversationPbxTimeBasedMapping'
      mappings:
        description: Mappings
        type: array
        items:
          $ref: '#/definitions/ConversationPbxTimeBasedMapping'
  ConversationPbxTimeBasedResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      time_based:
        $ref: '#/definitions/ConversationPbxTimeBased'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxTimeBasedsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      time_baseds:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxTimeBased'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxTimeRange:
    type: object
    properties:
      configs:
        description: Configurations for all ranges in this time range
        type: array
        items:
          $ref: '#/definitions/ConversationPbxTimeRangeConfig'
      conversation_pbx_time_range_uuid:
        description: Conversation Pbx Time Range UUID
        type: string
        maxLength: 50
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      time_range_name:
        description: Time range name
        type: string
        maxLength: 50
      timezone:
        description: Timezone
        type: string
        maxLength: 100
  ConversationPbxTimeRangeConfig:
    type: object
    properties:
      end_date:
        description: End date
        type: string
        format: dateTime
      end_day_of_week:
        description: End day of week
        type: integer
        format: int32
      end_time:
        description: End time
        type: string
      start_date:
        description: Start date
        type: string
        format: dateTime
      start_day_of_week:
        description: Start day of week
        type: integer
        format: int32
      start_time:
        description: Start time
        type: string
  ConversationPbxTimeRangeResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      time_range:
        $ref: '#/definitions/ConversationPbxTimeRange'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxTimeRangesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      time_ranges:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxTimeRange'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxVoicemailMailbox:
    type: object
    properties:
      conversation_pbx_voicemail_mailbox_uuid:
        description: Conversation Pbx Voicemail Mailbox UUID
        type: string
        maxLength: 50
      merchant_id:
        description: Merchant Id
        type: string
        maxLength: 5
      send_notices_to_email:
        description: Send notices to email
        type: string
        maxLength: 250
      user_id:
        description: User Id
        type: integer
        format: int32
      voicemail_followup_play_audio_uuid:
        description: Voicemail follow play audio UUID
        type: string
        maxLength: 50
      voicemail_followup_say:
        description: Voicemail followup say
        type: string
      voicemail_followup_say_voice:
        description: Voicemail followup say voice
        type: string
        maxLength: 50
        enum: [
          "man",
          "woman"
        ]
      voicemail_mailbox_id:
        description: Voicemail mailbox id
        type: string
        maxLength: 50
      voicemail_mailbox_type:
        description: Voicemail mailbox type
        type: string
        maxLength: 50
        enum: [
          "agent",
          "shared"
        ]
      voicemail_prompt_play_audio_uuid:
        description: Voicemail prompt play audio UUID
        type: string
        maxLength: 50
      voicemail_prompt_say:
        description: Voicemail prompt say
        type: string
      voicemail_prompt_say_voice:
        description: Voicemail prompt say voice
        type: string
        maxLength: 50
        enum: [
          "man",
          "woman"
        ]
  ConversationPbxVoicemailMailboxesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      voicemail_mailboxes:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxVoicemailMailbox'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxVoicemailMailboxResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      voicemail_mailbox:
        $ref: '#/definitions/ConversationPbxVoicemailMailbox'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxVoicemailMessage:
    type: object
    properties:
      call_sid:
        description: Call SID
        type: string
      duration:
        description: Duration in seconds
        type: integer
        format: int32
      from:
        description: From phone number in E.164
        type: string
      from_caller_id:
        description: From caller id (if available)
        type: string
      listened:
        description: True if the voicemail has been listened to in the user interface
        type: boolean
      merchant_id:
        description: Merchant ID
        type: string
      recording_sid:
        description: Recording SID
        type: string
      recording_size_bytes:
        description: Recording size in bytes
        type: integer
        format: int32
      recording_status:
        description: Recording Status
        type: string
        enum: [
          "completed"
        ]
      recording_url:
        description: Recording URL (expires in 4 hours)
        type: string
      transcript_json:
        description: JSON version of the transcript
        type: string
        format: dateTime
      transcript_text:
        description: Formatted text of the transcript
        type: string
      voicemail_dts:
        description: Voicemail date/time
        type: string
        format: dateTime
  ConversationPbxVoicemailMessageResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      voicemail_message:
        $ref: '#/definitions/ConversationPbxVoicemailMessage'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxVoicemailMessageSummariesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      voicemail_message_summaries:
        type: array
        items:
          $ref: '#/definitions/ConversationPbxVoicemailMessageSummary'
      warning:
        $ref: '#/definitions/Warning'
  ConversationPbxVoicemailMessageSummary:
    type: object
    properties:
      call_sid:
        description: Call SID
        type: string
      duration:
        description: Duration in seconds
        type: integer
        format: int32
      from:
        description: From phone number in E.164
        type: string
      from_caller_id:
        description: From caller id (if available)
        type: string
      listened:
        description: True if the voicemail has been listened to in the user interface
        type: boolean
      merchant_id:
        description: Merchant ID
        type: string
      recording_sid:
        description: Recording SID
        type: string
      recording_size_bytes:
        description: Recording size in bytes
        type: integer
        format: int32
      recording_status:
        description: Recording Status
        type: string
        enum: [
          "completed"
        ]
      voicemail_dts:
        description: Voicemail date/time
        type: string
        format: dateTime
  ConversationPermissions:
    type: object
    properties:
      edit_settings:
        type: boolean
  ConversationPermissionsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      permissions:
        $ref: '#/definitions/ConversationPermissions'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationResponse:
    type: object
    properties:
      conversation:
        $ref: '#/definitions/Conversation'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationSearchRequest:
    type: object
    properties:
      date_end:
        description: End of the range
        type: string
        format: dateTime
      date_start:
        description: Start of the range
        type: string
        format: dateTime
      email_filter:
        type: string
      language_filter:
        type: string
      medium_filter:
        type: string
      order_by_newest:
        type: boolean
      order_by_oldest:
        type: boolean
      range_begin:
        type: integer
        format: int32
      range_end:
        type: integer
        format: int32
      sms_phone_number_filter:
        type: string
      text_search:
        type: string
      visible_filter:
        type: boolean
  ConversationSearchResponse:
    type: object
    properties:
      range_begin:
        type: integer
        format: int32
      range_end:
        type: integer
        format: int32
      records:
        type: array
        items:
          $ref: '#/definitions/ConversationSummary'
      total:
        type: integer
        format: int32
  ConversationSentiment:
    type: object
    properties:
      last_detect_sentiment:
        description: The last time the detect sentiment was run on this conversation
        type: string
        format: dateTime
      mixed:
        description: The mixed score
        type: number
      negative:
        description: The negative score
        type: number
      neutral:
        description: The neutral score
        type: number
      positive:
        description: The positive score
        type: number
      sentiment:
        description: The overall sentiment
        type: string
        enum: [
          "POSITIVE",
          "NEUTRAL",
          "NEGATIVE",
          "MIXED"
        ]
  ConversationsResponse:
    type: object
    properties:
      conversations:
        type: array
        items:
          $ref: '#/definitions/ConversationSummary'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationStartRequest:
    type: object
    properties:
      add_conversation_participant_arns:
        type: array
        items:
          type: string
      conversation_arn:
        type: string
      conversation_webchat_queue_uuid:
        type: string
  ConversationStartResponse:
    type: object
    properties:
      conversation:
        $ref: '#/definitions/Conversation'
  ConversationSummary:
    type: object
    properties:
      closed:
        type: boolean
      conversation_arn:
        type: string
      conversation_uuid:
        type: string
      customer_first_message_unresponded_to_dts:
        description: Date/time of the first customer message that is unresponded to.
        type: string
        format: dateTime
      last_conversation_message_body:
        type: string
      last_conversation_participant_arn:
        type: string
      last_conversation_participant_name:
        type: string
      last_interactive_message_dts:
        description: Last interactive message date/time
        type: string
        format: dateTime
      last_message_dts:
        description: Last message date/time
        type: string
        format: dateTime
      medium:
        description: The communication medium of the customer.
        type: string
        enum: [
          "sms",
          "websocket"
        ]
      merchant_id:
        type: string
      message_count:
        type: integer
        format: int32
      participants:
        type: array
        items:
          $ref: '#/definitions/ConversationParticipant'
      sentiment:
        $ref: '#/definitions/ConversationSentiment'
      start_dts:
        description: Start of the conversation date/time
        type: string
        format: dateTime
      unread_messages:
        type: boolean
      visible:
        type: boolean
  ConversationTwilioAccount:
    type: object
    properties:
      merchant_id:
        type: string
      twilio_phone_numbers:
        type: array
        items:
          type: string
  ConversationVirtualAgentBudget:
    type: object
    properties:
      budget_daily:
        type: number
      budget_monthly:
        type: number
      used_daily:
        type: number
      used_monthly:
        type: number
  ConversationVirtualAgentBudgetResponse:
    type: object
    properties:
      budget:
        $ref: '#/definitions/ConversationVirtualAgentBudget'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationVirtualAgentCapabilities:
    type: object
    properties:
      cancel_subscription:
        type: boolean
      delay_subscription:
        type: boolean
      lookup_order_information:
        type: boolean
      lookup_subscription_information:
        type: boolean
      open_support_ticket:
        type: boolean
      open_support_ticket_channel:
        description: Channel to use to open the support ticket
        type: string
        enum: [
          "none",
          "email",
          "ultracart_task",
          "zoho_desk_ticket"
        ]
      open_support_ticket_channel_email:
        description: Email to send support ticket to
        type: string
      open_support_ticket_zoho_desk_department_id:
        description: Department ID to open a Zoho Desk ticket for
        type: string
      pause_subscription:
        type: boolean
      resume_subscription:
        type: boolean
      transfer_chat_to_live_agent:
        type: boolean
      update_subscription_credit_card:
        type: boolean
      zoho_desk_available:
        description: True if Zoho Desk is connected to UltraCart
        type: boolean
      zoho_desk_departments:
        description: Array of Zoho Desk Department if zoho desk is connected to UltraCart
        type: array
        items:
          $ref: '#/definitions/ConversationVirtualAgentCapabilityZohoDeskDepartment'
  ConversationVirtualAgentCapabilitiesResponse:
    type: object
    properties:
      capabilities:
        $ref: '#/definitions/ConversationVirtualAgentCapabilities'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationVirtualAgentCapabilityZohoDeskDepartment:
    type: object
    properties:
      department_id:
        type: string
      department_name:
        type: string
  ConversationWebchatContext:
    type: object
    properties:
      auto_orders:
        type: array
        items:
          $ref: '#/definitions/AutoOrder'
      cart:
        $ref: '#/definitions/Cart'
      current_url:
        type: string
      orders:
        type: array
        items:
          $ref: '#/definitions/Order'
      page_view:
        type: array
        items:
          $ref: '#/definitions/HitPageView'
      session_start:
        $ref: '#/definitions/HitSessionStart'
      session_start_dts:
        description: Date/time that the session was started (if known)
        type: string
        format: dateTime
      session_utm:
        $ref: '#/definitions/HitSessionUtm'
  ConversationWebchatQueueStatus:
    type: object
    properties:
      agent_available_count:
        type: integer
        format: int32
      agent_busy_count:
        type: integer
        format: int32
      agent_count:
        type: integer
        format: int32
      agent_unavailable_count:
        type: integer
        format: int32
      agents:
        type: array
        items:
          $ref: '#/definitions/ConversationWebchatQueueStatusAgent'
      customer_abandon_count:
        type: integer
        format: int32
      customer_active_count:
        type: integer
        format: int32
      customer_average_abandon_time_seconds:
        type: integer
        format: int32
      customer_average_chat_time_seconds:
        type: integer
        format: int32
      customer_average_hold_time_seconds:
        type: integer
        format: int32
      customer_chat_count:
        type: integer
        format: int32
      customer_waiting_count:
        type: integer
        format: int32
      customer_waiting_join_dts:
        description: Date/time that the oldest person joined the queue
        type: string
        format: dateTime
      queue_entries:
        type: array
        items:
          $ref: '#/definitions/ConversationWebchatQueueStatusQueueEntry'
      queue_name:
        type: string
  ConversationWebchatQueueStatusAgent:
    type: object
    properties:
      agent_status:
        description: Status of the agent
        type: string
        enum: [
          "available",
          "busy",
          "unavailable"
        ]
      conversation_participant_arn:
        type: string
      conversation_participant_name:
        type: string
      last_chat_dts:
        description: Date/time that this agent took their last chat
        type: string
        format: dateTime
      next_round_robin:
        type: boolean
      profile_image_url:
        description: Profile image URL
        type: string
  ConversationWebchatQueueStatusesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      queue_statuses:
        type: array
        items:
          $ref: '#/definitions/ConversationWebchatQueueStatus'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ConversationWebchatQueueStatusQueueEntry:
    type: object
    properties:
      conversation_participant_arn:
        type: string
      conversation_participant_name:
        type: string
      conversation_webchat_queue_uuid:
        type: string
      email:
        type: string
      join_dts:
        description: Date/time the customer joined the queue
        type: string
        format: dateTime
      participant_language_iso_code:
        type: string
      question:
        type: string
      queue_name:
        type: string
  ConversationWebchatQueueStatusUpdateRequest:
    type: object
    properties:
      agent_status:
        description: Status of the agent
        type: string
        enum: [
          "available",
          "busy",
          "unavailable"
        ]
  ConversationWebsocketMessage:
    type: object
    properties:
      conversation_arn:
        description: Conversation ARN
        type: string
      conversation_uuid:
        description: Conversation UUID if the websocket message is tied to a specific conversation
        type: string
      event_add_coupon:
        $ref: '#/definitions/ConversationEventAddCoupon'
      event_add_item:
        $ref: '#/definitions/ConversationEventAddItem'
      event_conversation_closed:
        $ref: '#/definitions/ConversationSummary'
      event_engage_customer:
        $ref: '#/definitions/ConversationWebchatQueueStatusQueueEntry'
      event_new_conversation:
        $ref: '#/definitions/ConversationSummary'
      event_new_message:
        $ref: '#/definitions/ConversationSummary'
      event_participant_join:
        $ref: '#/definitions/ConversationSummary'
      event_participant_join_participant:
        $ref: '#/definitions/ConversationParticipant'
      event_participant_left:
        $ref: '#/definitions/ConversationSummary'
      event_participant_left_participant:
        $ref: '#/definitions/ConversationParticipant'
      event_participant_update:
        $ref: '#/definitions/ConversationSummary'
      event_queue_new_member:
        $ref: '#/definitions/ConversationWebchatQueueStatusQueueEntry'
      event_queue_position:
        $ref: '#/definitions/ConversationEventQueuePosition'
      event_queue_status_update:
        $ref: '#/definitions/ConversationWebchatQueueStatus'
      event_read_message:
        $ref: '#/definitions/ConversationEventReadMessage'
      event_rrweb:
        $ref: '#/definitions/ConversationEventRRWeb'
      event_type:
        description: Type of event
        type: string
        enum: [
          "queue position",
          "webchat start conversation",
          "conversation closed",
          "new conversation",
          "new message",
          "updated message",
          "queue status update",
          "rrweb",
          "participant update",
          "participant join",
          "participant left",
          "read message",
          "typing",
          "add coupon",
          "add item",
          "webchat context",
          "engage customer",
          "queue new member"
        ]
      event_typing:
        $ref: '#/definitions/ConversationEventTyping'
      event_updated_message:
        $ref: '#/definitions/ConversationMessage'
      event_webchat_context:
        $ref: '#/definitions/ConversationEventWebchatContext'
      message:
        $ref: '#/definitions/ConversationMessage'
      type:
        description: Type of message
        type: string
        enum: [
          "message",
          "event",
          "ping",
          "check queue position"
        ]
  CountriesResponse:
    type: object
    properties:
      countries:
        type: array
        items:
          $ref: '#/definitions/Country'
  Country:
    type: object
    properties:
      iso_2_code:
        description: iso_2_code
        type: string
        maxLength: 2
      name:
        description: name
        type: string
        maxLength: 50
  Coupon:
    type: object
    properties:
      affiliate_oid:
        description: Associates an order with an affiliate when this value is set.
        type: integer
        format: int32
      allow_multiple_one_time_codes:
        description: True if multiple one time codes for this coupon can be used on a cart at the same time.
        type: boolean
      amount_off_items:
        $ref: '#/definitions/CouponAmountOffItems'
      amount_off_shipping:
        $ref: '#/definitions/CouponAmountOffShipping'
      amount_off_shipping_with_items_purchase:
        $ref: '#/definitions/CouponAmountOffShippingWithItemsPurchase'
      amount_off_subtotal:
        $ref: '#/definitions/CouponAmountOffSubtotal'
      amount_off_subtotal_and_free_shipping:
        $ref: '#/definitions/CouponAmountOffSubtotalFreeShippingWithPurchase'
      amount_off_subtotal_and_shipping:
        $ref: '#/definitions/CouponAmountOffSubtotalAndShipping'
      amount_off_subtotal_with_block_purchase:
        $ref: '#/definitions/CouponAmountOffSubtotalWithBlockPurchase'
      amount_off_subtotal_with_items_purchase:
        $ref: '#/definitions/CouponAmountOffSubtotalWithItemsPurchase'
      amount_off_subtotal_with_purchase:
        $ref: '#/definitions/CouponAmountOffSubtotalWithPurchase'
      amount_shipping_with_subtotal:
        $ref: '#/definitions/CouponAmountShippingWithSubtotal'
      automatically_apply_coupon_codes:
        $ref: '#/definitions/CouponAutomaticallyApplyCouponCodes'
      buy_one_get_one:
        $ref: '#/definitions/CouponBuyOneGetOneLimit'
      calculated_description:
        description: Calculated description displayed to the customer if no description is specified.
        type: string
      can_be_used_with_other_coupons:
        description: True if this coupon can be used with other coupons in a single order.
        type: boolean
      coupon_oid:
        description: Coupon oid.
        type: integer
        format: int32
      coupon_type:
        description: Coupon type.
        type: string
        maxLength: 65
      description:
        description: Description of the coupon up to 50 characters.
        type: string
        maxLength: 50
      discount_item_with_item_purchase:
        $ref: '#/definitions/CouponDiscountItemWithItemPurchase'
      discount_items:
        $ref: '#/definitions/CouponDiscountItems'
      expiration_dts:
        description: Date/time when coupon expires
        type: string
        format: dateTime
      free_item_and_shipping_with_subtotal:
        $ref: '#/definitions/CouponFreeItemAndShippingWithSubtotal'
      free_item_with_item_purchase:
        $ref: '#/definitions/CouponFreeItemWithItemPurchase'
      free_item_with_item_purchase_and_free_shipping:
        $ref: '#/definitions/CouponFreeItemWithItemPurchaseAndFreeShipping'
      free_item_with_subtotal:
        $ref: '#/definitions/CouponFreeItemWithSubtotal'
      free_items_with_item_purchase:
        $ref: '#/definitions/CouponFreeItemsWithItemPurchase'
      free_items_with_mixmatch_purchase:
        $ref: '#/definitions/CouponFreeItemsWithMixMatchPurchase'
      free_shipping:
        $ref: '#/definitions/CouponFreeShipping'
      free_shipping_specific_items:
        $ref: '#/definitions/CouponFreeShippingSpecificItems'
      free_shipping_with_items_purchase:
        $ref: '#/definitions/CouponFreeShippingWithItemsPurchase'
      free_shipping_with_subtotal:
        $ref: '#/definitions/CouponFreeShippingWithSubtotal'
      hide_from_customer:
        description: Hide coupon from customer during checkout.  Often used when coupons are automatic discounting mechanisms.
        type: boolean
      merchant_code:
        description: Merchant code of coupon up to 20 characters.
        type: string
        maxLength: 20
      merchant_notes:
        description: Internal notes about this coupon.  These are not visible to customer.
        type: string
        maxLength: 250
      more_loyalty_cashback:
        $ref: '#/definitions/CouponMoreLoyaltyCashback'
      more_loyalty_points:
        $ref: '#/definitions/CouponMoreLoyaltyPoints'
      multiple_amounts_off_items:
        $ref: '#/definitions/CouponMultipleAmountsOffItems'
      no_discount:
        $ref: '#/definitions/CouponNoDiscount'
      percent_more_loyalty_cashback:
        $ref: '#/definitions/CouponPercentMoreLoyaltyCashback'
      percent_more_loyalty_points:
        $ref: '#/definitions/CouponPercentMoreLoyaltyPoints'
      percent_off_item_with_items_quantity_purchase:
        $ref: '#/definitions/CouponPercentOffItemWithItemsQuantityPurchase'
      percent_off_items:
        $ref: '#/definitions/CouponPercentOffItems'
      percent_off_items_and_free_shipping:
        $ref: '#/definitions/CouponPercentOffItemsAndFreeShipping'
      percent_off_items_with_items_purchase:
        $ref: '#/definitions/CouponPercentOffItemsWithItemsPurchase'
      percent_off_msrp_items:
        $ref: '#/definitions/CouponPercentOffMsrpItems'
      percent_off_retail_price_items:
        $ref: '#/definitions/CouponPercentOffRetailPriceItems'
      percent_off_shipping:
        $ref: '#/definitions/CouponPercentOffShipping'
      percent_off_subtotal:
        $ref: '#/definitions/CouponPercentOffSubtotal'
      percent_off_subtotal_and_free_shipping:
        $ref: '#/definitions/CouponPercentOffSubtotalAndFreeShipping'
      percent_off_subtotal_limit:
        $ref: '#/definitions/CouponPercentOffSubtotalLimit'
      percent_off_subtotal_with_items_purchase:
        $ref: '#/definitions/CouponPercentOffSubtotalWithItemsPurchase'
      percent_off_subtotal_with_subtotal:
        $ref: '#/definitions/CouponPercentOffSubtotalWithSubtotal'
      quickbooks_code:
        description: Quickbooks accounting code.
        type: string
        maxLength: 20
      restrict_by_postal_codes:
        description: Optional list of postal codes which restrict a coupon to within these postal codes.
        type: array
        items:
          type: string
      restrict_by_screen_branding_theme_codes:
        description: Optional list of legacy screen branding theme codes to limit coupon use to only those themes.
        type: array
        items:
          $ref: '#/definitions/CouponRestriction'
      restrict_by_storefronts:
        description: Optional list of storefronts to limit coupon use to only those storefronts.
        type: array
        items:
          $ref: '#/definitions/CouponRestriction'
      skip_on_rebill:
        description: Skip this coupon when it is on a rebill of an auto order.
        type: boolean
      start_dts:
        description: Date/time when coupon is valid
        type: string
        format: dateTime
      super_coupon:
        description: If true, this coupon can be used with ANY other coupon regardless of the other coupons configuration
        type: boolean
      tiered_amount_off_items:
        $ref: '#/definitions/CouponTieredAmountOffItems'
      tiered_amount_off_subtotal:
        $ref: '#/definitions/CouponTieredAmountOffSubtotal'
      tiered_percent_off_items:
        $ref: '#/definitions/CouponTieredPercentOffItems'
      tiered_percent_off_shipping:
        $ref: '#/definitions/CouponTieredPercentOffShipping'
      tiered_percent_off_subtotal:
        $ref: '#/definitions/CouponTieredPercentOffSubtotal'
      tiered_percent_off_subtotal_based_on_msrp:
        $ref: '#/definitions/CouponTieredPercentOffSubtotalBasedOnMSRP'
      usable_by:
        description: Who may use this coupon.
        type: string
        maxLength: 50
        enum: [
          "Anyone",
          "UniqueCode",
          "OncePerCustomer",
          "OncePerNewCustomer",
          "OncePerNewCustomerForItem"
        ]
  CouponAmountOffItems:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of shipping discount
        type: number
        maxLength: 3
      item_tags:
        description: An optional list of item tags which will receive a discount.
        type: array
        items:
          type: string
      items:
        description: A list of items which are eligible for the discount amount.
        type: array
        items:
          type: string
      limit:
        description: The limit of items which are eligible for the discount amount.
        type: integer
        format: int32
  CouponAmountOffShipping:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of subtotal discount
        type: number
      shipping_methods:
        description: One or more shipping methods that may be used with this coupon
        type: array
        items:
          type: string
  CouponAmountOffShippingWithItemsPurchase:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of shipping discount
        type: number
        maxLength: 3
      items:
        description: A list of items of which at least one must be purchased for coupon to be valid.
        type: array
        items:
          type: string
      shipping_methods:
        description: One or more shipping methods that may receive this discount
        type: array
        items:
          type: string
  CouponAmountOffSubtotal:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of subtotal discount
        type: number
  CouponAmountOffSubtotalAndShipping:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of subtotal discount
        type: number
  CouponAmountOffSubtotalFreeShippingWithPurchase:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of subtotal discount
        type: number
      purchase_amount:
        description: The purchase amount to qualify for subtotal discount and free shipping
        type: number
      shipping_methods:
        description: One or more shipping methods that may be free
        type: array
        items:
          type: string
  CouponAmountOffSubtotalWithBlockPurchase:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of subtotal discount
        type: number
      required_purchase_item:
        description: Required item that must be purchased for coupon to be valid
        type: string
      required_purchase_quantity:
        description: Discount amount is multiplied by the number of blocks.  A block is this many quantity of the required item.
        type: integer
        format: int32
  CouponAmountOffSubtotalWithItemsPurchase:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of shipping discount
        type: number
        maxLength: 3
      items:
        description: A list of items of which a quantity of one or many must be purchased for coupon to be valid.
        type: array
        items:
          type: string
      required_purchase_quantity:
        description: The quantity of items that must be purchased for the discount to be applied.
        type: integer
        format: int32
  CouponAmountOffSubtotalWithPurchase:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_amount:
        description: The amount of subtotal discount
        type: number
      purchase_amount:
        description: The purchase amount to qualify for subtotal discount and free shipping
        type: number
  CouponAmountShippingWithSubtotal:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      purchase_amount:
        description: The purchase amount to qualify for subtotal discount and free shipping
        type: number
      shipping_amount:
        description: The amount of the shipping cost (this is not a discount, this is the actual cost of shipping)
        type: number
      shipping_methods:
        description: One or more shipping methods that may be used with this coupon
        type: array
        items:
          type: string
  CouponAutoApplyCondition:
    type: object
    properties:
      coupon_code:
        type: string
      minimum_subtotal:
        description: The minimum subtotal that must be purchased to receive this coupon. Item and subtotal are exclusive.  Only one can be populated.
        type: number
      required_item_id:
        description: The item that must be purchased to receive this coupon. Item and subtotal are exclusive.  Only one can be populated.
        type: string
  CouponAutoApplyConditions:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      required_items:
        type: array
        items:
          $ref: '#/definitions/CouponAutoApplyCondition'
      subtotal_levels:
        type: array
        items:
          $ref: '#/definitions/CouponAutoApplyCondition'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponAutomaticallyApplyCouponCodes:
    type: object
    properties:
      coupon_codes:
        description: The coupon codes to automatically apply if this coupon is applied
        type: array
        items:
          type: string
  CouponBuyOneGetOneLimit:
    type: object
    properties:
      item_tags:
        description: An optional list of item tags which will receive a discount.
        type: array
        items:
          type: string
      items:
        description: An optional list of items of which one must be purchased to receive free quantity of the same item.
        type: array
        items:
          type: string
      limit:
        description: The limit of free items that may be received when purchasing multiple items
        type: integer
        format: int32
  CouponCodesRequest:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      expiration_dts:
        description: Expiration Date
        type: string
      expiration_seconds:
        description: Expiration seconds
        type: integer
        format: int32
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      quantity:
        description: Quantity
        type: integer
        format: int32
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponCodesResponse:
    type: object
    properties:
      coupon_codes:
        description: Coupon codes
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      expiration_dts:
        description: Expiration date
        type: string
        format: dateTime
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponDeletesRequest:
    type: object
    properties:
      coupon_codes:
        description: Coupon codes
        type: array
        items:
          type: string
      coupon_oids:
        description: Coupon oids
        type: array
        items:
          type: integer
  CouponDiscountItems:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_price:
        description: The price (unit cost) of the discounted item
        type: number
        maxLength: 3
      items:
        description: A list of items that are eligible for this discount_price.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
  CouponDiscountItemWithItemPurchase:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_item:
        description: The item that will be sold at the discount_price when required_purchase_item is purchased.
        type: string
      discount_item_tags:
        description: An optional list of item tags which will receive a discount of one of the required purchased items is purchased.
        type: array
        items:
          type: string
      discount_price:
        description: The price (unit cost) of the discounted item
        type: number
        maxLength: 3
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
      required_purchase_item:
        description: The item that must be purchased for the discount to be applied to the discount item.
        type: string
      required_purchase_items_tags:
        description: An optional list of item tags which are required to be purchased.
        type: array
        items:
          type: string
  CouponEditorValues:
    type: object
    properties:
      affiliates:
        description: affiliates
        type: array
        items:
          $ref: '#/definitions/SimpleValue'
      coupon_types:
        description: coupon_types
        type: array
        items:
          type: string
      coupon_types_for_display:
        description: coupon_types_for_display
        type: array
        items:
          $ref: '#/definitions/CouponType'
      currency_codes:
        description: currency_codes
        type: array
        items:
          type: string
      deprecated_themes:
        description: deprecated_themes
        type: array
        items:
          $ref: '#/definitions/SimpleValue'
      item_tags:
        description: Item tags
        type: array
        items:
          type: string
      mix_and_match_names:
        description: mix_and_match_names
        type: array
        items:
          type: string
      shipping_methods:
        description: shipping_methods
        type: array
        items:
          type: string
      storefronts:
        description: storefronts
        type: array
        items:
          $ref: '#/definitions/SimpleValue'
      usable_by:
        description: usable_by
        type: array
        items:
          $ref: '#/definitions/SimpleValue'
      valid_with_other_coupons:
        description: valid_with_other_coupons
        type: array
        items:
          type: string
  CouponExistsResponse:
    type: object
    properties:
      coupon_code:
        description: Coupon Code
        type: string
      error:
        $ref: '#/definitions/Error'
      exists:
        description: Exists
        type: boolean
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponFreeItemAndShippingWithSubtotal:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      items:
        description: A list of items that are eligible for this discount_price.
        type: array
        items:
          type: string
      limit:
        description: The limit of free items that may be received when purchasing multiple items
        type: integer
        format: int32
      shipping_methods:
        description: One or more shipping methods that may be free
        type: array
        items:
          type: string
      subtotal_amount:
        description: The amount of subtotal required to receive the discount percent
        type: number
  CouponFreeItemsWithItemPurchase:
    type: object
    properties:
      free_item:
        description: The item id of the free item that will be received when the required mix and match group quantity is purchased.
        type: string
      free_quantity:
        description: The quantity of free item that will be received.
        type: integer
        format: int32
      limit:
        description: The limit of free items that may be received when purchasing multiple items
        type: integer
        format: int32
      required_purchase_item:
        description: Required item that must be purchased for coupon to be valid
        type: string
      required_purchase_quantity:
        description: Required quantity of mix and match group items that must be purchased for coupon to be valid
        type: integer
        format: int32
  CouponFreeItemsWithMixMatchPurchase:
    type: object
    properties:
      free_item:
        description: The item id of the free item that will be received when the required mix and match group quantity is purchased.
        type: string
      free_quantity:
        description: The quantity of free item that will be received.
        type: integer
        format: int32
      limit:
        description: The limit of free items that may be received when purchasing multiple mix and match group items
        type: integer
        format: int32
      required_purchase_mix_and_match_group:
        description: Required mix and match group that must be purchased for coupon to be valid
        type: string
      required_purchase_quantity:
        description: Required quantity of mix and match group items that must be purchased for coupon to be valid
        type: integer
        format: int32
  CouponFreeItemWithItemPurchase:
    type: object
    properties:
      item_tags:
        description: An optional list of item tags which will receive a discount of one of the required purchased items is purchased.
        type: array
        items:
          type: string
      items:
        description: A list of free items which will receive a discount if one of the required purchase items is purchased.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
      match_required_purchase_item_to_free_item:
        description: If true then the free item is matched 1:1 with the free item in the list.
        type: boolean
      required_purchase_items:
        description: Required items (at least one from the list) that must be purchased for coupon to be valid
        type: array
        items:
          type: string
      required_purchase_items_tags:
        description: An optional list of item tags which are required to be purchased.
        type: array
        items:
          type: string
  CouponFreeItemWithItemPurchaseAndFreeShipping:
    type: object
    properties:
      items:
        description: A list of free items which will receive a discount if one of the required purchase items is purchased.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.  Free shipping will apply to all units of the free item ids though.
        type: integer
        format: int32
      match_required_purchase_item_to_free_item:
        description: If true then the free item is matched 1:1 with the free item in the list.
        type: boolean
      required_purchase_items:
        description: Required items (at least one from the list) that must be purchased for coupon to be valid
        type: array
        items:
          type: string
  CouponFreeItemWithSubtotal:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      items:
        description: A list of items that are eligible for this discount_price.
        type: array
        items:
          type: string
      limit:
        description: The limit of free items that may be received when purchasing multiple items
        type: integer
        format: int32
      subtotal_amount:
        description: The amount of subtotal required to receive the discount percent
        type: number
  CouponFreeShipping:
    type: object
    properties:
      shipping_methods:
        description: One or more shipping methods that may be used with this coupon
        type: array
        items:
          type: string
  CouponFreeShippingSpecificItems:
    type: object
    properties:
      items:
        description: A list of items of which at least one must be purchased for coupon to be valid.
        type: array
        items:
          type: string
  CouponFreeShippingWithItemsPurchase:
    type: object
    properties:
      items:
        description: A list of items of which at least one must be purchased for coupon to be valid.
        type: array
        items:
          type: string
      shipping_methods:
        description: One or more shipping methods that may receive this discount
        type: array
        items:
          type: string
  CouponFreeShippingWithSubtotal:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      purchase_amount:
        description: The purchase amount to qualify for subtotal discount and free shipping
        type: number
      shipping_methods:
        description: One or more shipping methods that may be used with this coupon
        type: array
        items:
          type: string
  CouponItemSearchResult:
    type: object
    properties:
      cost:
        description: The cost of this item.
        type: string
      description:
        description: A human readable description of this item.
        type: string
      manufacturer_name:
        description: The manufacturer of this item.
        type: string
      manufacturer_sku:
        description: The manufacturer sku of this item.
        type: string
      merchant_item_id:
        description: The merchant item identifier, which is unique for this merchant, but not across all of UltraCart.
        type: string
      merchant_item_oid:
        description: The unique internal identifier used by UltraCart to manage this item.
        type: integer
        format: int32
      score:
        description: The search score of this item.  Larger scores mean more accurate matches against the search term.
        type: string
      thumbnail_url:
        description: A url for displaying a thumbnail of this item
        type: string
  CouponItemSearchResultsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      search_results:
        description: search_results
        type: array
        items:
          $ref: '#/definitions/CouponItemSearchResult'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponMoreLoyaltyCashback:
    type: object
    properties:
      loyalty_cashback:
        description: The additional loyalty cashback
        type: number
  CouponMoreLoyaltyPoints:
    type: object
    properties:
      loyalty_points:
        description: The additional loyalty points
        type: number
  CouponMultipleAmountsOffItems:
    type: object
    properties:
      discounts:
        description: A list of item discounts.
        type: array
        items:
          $ref: '#/definitions/CouponTierItemDiscount'
      limit:
        description: The (optional) maximum quantity of items that may receive a discount.
        type: integer
        format: int32
  CouponNoDiscount:
    type: object
    properties:
      ignore_this_property:
        description: This property does nothing but is included in this object to ensure the object is generated by our sdk builders.
        type: boolean
  CouponPercentMoreLoyaltyCashback:
    type: object
    properties:
      percent_more_loyalty_cashback:
        description: The percentage of additional loyalty cashback
        type: number
  CouponPercentMoreLoyaltyPoints:
    type: object
    properties:
      percent_more_loyalty_points:
        description: The percentage of additional loyalty points
        type: number
  CouponPercentOffItems:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      excluded_item_tags:
        description: A list of item tags which cannot be discounted.
        type: array
        items:
          type: string
      excluded_items:
        description: A list of items which cannot be discounted.
        type: array
        items:
          type: string
      item_tags:
        description: An optional list of item tags which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
      items:
        description: An optional list of items which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
  CouponPercentOffItemsAndFreeShipping:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      excluded_item_tags:
        description: A list of item tags which cannot be discounted.
        type: array
        items:
          type: string
      excluded_items:
        description: A list of items which cannot be discounted.
        type: array
        items:
          type: string
      item_tags:
        description: An optional list of item tags which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
      items:
        description: An optional list of items which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
  CouponPercentOffItemsWithItemsPurchase:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      item_tags:
        description: An optional list of item tags which will receive a discount of one of the required purchased items is purchased.
        type: array
        items:
          type: string
      items:
        description: A list of items which will receive a discount if one of the required purchase items is purchased.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
      required_purchase_items:
        description: Required items (at least one from the list) that must be purchased for coupon to be valid
        type: array
        items:
          type: string
      required_purchase_items_tags:
        description: An optional list of item tags which are required to be purchased.
        type: array
        items:
          type: string
  CouponPercentOffItemWithItemsQuantityPurchase:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      item_tags:
        description: An optional list of item tags which will receive a discount if one of the required purchased items is purchased.
        type: array
        items:
          type: string
      items:
        description: A list of items which will receive a discount if one of the required purchase items is purchased.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
      required_purchase_items:
        description: Required items (at least one from the list) that must be purchased for coupon to be valid
        type: array
        items:
          type: string
      required_purchase_items_tags:
        description: Required item tags (at least one from the list) that must be purchase for coupon to be valid.
        type: array
        items:
          type: string
      required_purchase_quantity:
        description: The quantity of items that must be purchased for the discount to be applied.
        type: integer
        format: int32
  CouponPercentOffMsrpItems:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      excluded_items:
        description: A list of items which cannot be discounted.
        type: array
        items:
          type: string
      items:
        description: An list of items which will receive a discount.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
      minimum_cumulative_msrp:
        description: The (optional) minimum cumulative msrp of qualifying items.
        type: number
      minimum_subtotal:
        description: The (optional) minimum subtotal of qualifying items.
        type: number
  CouponPercentOffRetailPriceItems:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      excluded_items:
        description: A list of items which cannot be discounted.
        type: array
        items:
          type: string
      items:
        description: An optional list of items which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: integer
        format: int32
  CouponPercentOffShipping:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      shipping_methods:
        description: One or more shipping methods that may be used with this coupon
        type: array
        items:
          type: string
  CouponPercentOffSubtotal:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
  CouponPercentOffSubtotalAndFreeShipping:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      shipping_methods:
        description: One or more shipping methods that may be free
        type: array
        items:
          type: string
  CouponPercentOffSubtotalLimit:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      limit:
        description: The maximum amount of subtotal used to determine discount.
        type: number
  CouponPercentOffSubtotalWithItemsPurchase:
    type: object
    properties:
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      items:
        description: A list of items of which at least one must be purchased for coupon to be valid.
        type: array
        items:
          type: string
  CouponPercentOffSubtotalWithSubtotal:
    type: object
    properties:
      currency_code:
        description: The ISO-4217 three letter currency code the customer is viewing prices in
        type: string
        maxLength: 3
      discount_percent:
        description: The percentage of subtotal discount
        type: number
      subtotal_amount:
        description: The amount of subtotal required to receive the discount percent
        type: number
  CouponQuery:
    type: object
    properties:
      affiliate_oid:
        description: Affiliate oid
        type: integer
        format: int32
      coupon_type:
        description: The type of coupon.
        type: string
      description:
        description: Description of this coupon
        type: string
      exclude_expired:
        description: Exclude expired coupons if true
        type: boolean
      expiration_dts_begin:
        description: Expiration date begin
        type: string
        format: dateTime
      expiration_dts_end:
        description: Expiration date begin
        type: string
        format: dateTime
      merchant_code:
        description: Merchant code is a unique character string for this coupon.
        type: string
      merchant_code_or_description:
        description: Merchant code description used for searching
        type: string
      start_dts_begin:
        description: Start date begin
        type: string
        format: dateTime
      start_dts_end:
        description: Start date end
        type: string
        format: dateTime
  CouponResponse:
    type: object
    properties:
      coupon:
        $ref: '#/definitions/Coupon'
      error:
        $ref: '#/definitions/Error'
      items_invalid_for_coupons:
        description: Items invalid for coupons.  These will display as warnings within the UI.
        type: array
        items:
          type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponRestriction:
    type: object
    properties:
      invalidForThis:
        type: boolean
      name:
        type: string
      validForThis:
        type: boolean
      validOnlyForThis:
        type: boolean
  CouponsRequest:
    type: object
    properties:
      coupons:
        description: coupons
        type: array
        items:
          $ref: '#/definitions/Coupon'
  CouponsResponse:
    type: object
    properties:
      coupons:
        type: array
        items:
          $ref: '#/definitions/Coupon'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CouponTierAmount:
    type: object
    properties:
      discount_amount:
        description: The amount of subtotal discount
        type: number
      quickbooks_code:
        description: Quickbooks accounting code.
        type: string
        maxLength: 20
      subtotal_amount:
        description: The amount of subtotal required to receive the discount amount
        type: number
  CouponTieredAmountOffItems:
    type: object
    properties:
      item_tags:
        description: An optional list of item tags which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
      items:
        description: The items being discounted by this coupon.
        type: array
        items:
          type: string
      limit:
        description: The maximum number of discounted items.
        type: number
      tiers:
        description: A list of discount tiers.
        type: array
        items:
          $ref: '#/definitions/CouponTierQuantityAmount'
  CouponTieredAmountOffSubtotal:
    type: object
    properties:
      items:
        description: An optional list of items of which a quantity of one or many must be purchased for coupon to be valid.  If empty, all items apply toward subtotal amount.
        type: array
        items:
          type: string
      tiers:
        description: A list of discount tiers.
        type: array
        items:
          $ref: '#/definitions/CouponTierAmount'
  CouponTieredPercentOffItems:
    type: object
    properties:
      item_tags:
        description: An optional list of item tags which will receive a discount.  If blank, discount applies to all items except excluded items.
        type: array
        items:
          type: string
      items:
        description: A list of items of which at least one must be purchased for coupon to be valid.
        type: array
        items:
          type: string
      limit:
        description: The (optional) maximum quantity of discounted items.
        type: number
      tiers:
        description: A list of discount tiers.
        type: array
        items:
          $ref: '#/definitions/CouponTierQuantityPercent'
  CouponTieredPercentOffShipping:
    type: object
    properties:
      quickbooks_code:
        description: Quickbooks accounting code.
        type: string
        maxLength: 20
      shipping_methods:
        description: One or more shipping methods that may receive this discount
        type: array
        items:
          type: string
      tiers:
        description: A list of discount tiers.
        type: array
        items:
          $ref: '#/definitions/CouponTierPercent'
  CouponTieredPercentOffSubtotal:
    type: object
    properties:
      items:
        description: An optional list of items of which a quantity of one or many must be purchased for coupon to be valid.  If empty, all items apply toward subtotal amount.
        type: array
        items:
          type: string
      tiers:
        description: A list of discount tiers.
        type: array
        items:
          $ref: '#/definitions/CouponTierPercent'
  CouponTieredPercentOffSubtotalBasedOnMSRP:
    type: object
    properties:
      items:
        description: An optional list of items of which a quantity of one or many must be purchased for coupon to be valid.  If empty, all items apply toward subtotal amount.
        type: array
        items:
          type: string
      tiers:
        description: A list of discount tiers.
        type: array
        items:
          $ref: '#/definitions/CouponTierPercent'
  CouponTierItemDiscount:
    type: object
    properties:
      discount_amount:
        description: The amount of subtotal discount
        type: number
      items:
        description: A list of items which will receive this discount.
        type: array
        items:
          type: string
  CouponTierPercent:
    type: object
    properties:
      discount_percent:
        description: The percent of subtotal discount
        type: number
      quickbooks_code:
        description: Quickbooks accounting code.
        type: string
        maxLength: 20
      subtotal_amount:
        description: The amount of subtotal required to receive the discount percent
        type: number
  CouponTierQuantityAmount:
    type: object
    properties:
      discount_amount:
        description: The amount of discount per item.
        type: number
      item_quantity:
        description: The quantity of item purchased (in units)
        type: integer
        format: int32
      quickbooks_code:
        description: Quickbooks accounting code.
        type: string
        maxLength: 20
  CouponTierQuantityPercent:
    type: object
    properties:
      discount_percent:
        description: The percent of discount per item.
        type: number
      item_quantity:
        description: The quantity of item purchased (in units)
        type: integer
        format: int32
      quickbooks_code:
        description: Quickbooks accounting code.
        type: string
        maxLength: 20
  CouponType:
    type: object
    properties:
      localized:
        description: A friendly display of the coupon type suitable for human reading
        type: string
      name:
        description: The name of the coupon type
        type: string
  Currency:
    type: object
    properties:
      currency_code:
        description: Currency code of the localized value
        type: string
      exchange_rate:
        description: Exchange rate used to localize
        type: number
      localized:
        description: Value localized to the customer
        type: number
      localized_formatted:
        description: Value localized and formatted for the customer
        type: string
      value:
        description: Value in base currency
        type: number
  CustomDashboard:
    type: object
    properties:
      data_warehouse_custom_dashboard_oid:
        type: integer
        format: int32
      merchant_id:
        type: string
      name:
        type: string
      pages:
        type: array
        items:
          $ref: '#/definitions/CustomDashboardPage'
      parameters:
        type: array
        items:
          $ref: '#/definitions/CustomDashboardExecutionParameter'
  CustomDashboardExecutionParameter:
    type: object
    properties:
      name:
        type: string
      quick_pick_key:
        type: string
      type:
        type: string
      value:
        type: string
  CustomDashboardPage:
    type: object
    properties:
      page_height_inches:
        type: number
      page_width_inches:
        type: number
      reports:
        type: array
        items:
          $ref: '#/definitions/CustomDashboardPageReport'
  CustomDashboardPageReport:
    type: object
    properties:
      data_warehouse_report_config_oid:
        type: integer
        format: int32
      grid_height:
        type: integer
        format: int32
      grid_width:
        type: integer
        format: int32
      grid_x:
        type: integer
        format: int32
      grid_y:
        type: integer
        format: int32
  CustomDashboardResponse:
    type: object
    properties:
      dashboard:
        $ref: '#/definitions/CustomDashboard'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomDashboardSchedule:
    type: object
    properties:
      cron_trigger_expression:
        type: string
      data_warehouse_custom_dashboard_oid:
        type: integer
        format: int32
      data_warehouse_custom_dashboard_schedule_oid:
        type: integer
        format: int32
      emails:
        type: array
        items:
          type: string
      next_send_dts:
        description: Date/time that the next send will occur.
        type: string
        format: dateTime
  CustomDashboardScheduleResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      schedule:
        $ref: '#/definitions/CustomDashboardSchedule'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomDashboardSchedulesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      schedules:
        description: schedules
        type: array
        items:
          $ref: '#/definitions/CustomDashboardSchedule'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomDashboardsResponse:
    type: object
    properties:
      dashboards:
        description: reports
        type: array
        items:
          $ref: '#/definitions/CustomDashboard'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Customer:
    type: object
    properties:
      activity:
        $ref: '#/definitions/CustomerActivity'
      affiliate_oid:
        description: Affiliate oid
        type: integer
        format: int32
      allow_3rd_party_billing:
        description: Allow 3rd party billing
        type: boolean
      allow_cod:
        description: Allow COD
        type: boolean
      allow_drop_shipping:
        description: Allow Drop Shipping
        type: boolean
      allow_purchase_order:
        description: Allow purchase orders by this customer
        type: boolean
      allow_quote_request:
        description: Allow quote request
        type: boolean
      allow_selection_of_address_type:
        description: Allow selection of residential or business address type 
        type: boolean
      attachments:
        description: Attachments
        type: array
        items:
          $ref: '#/definitions/CustomerAttachment'
      auto_approve_cod:
        description: Auto approve COD
        type: boolean
      auto_approve_purchase_order:
        description: Auto approve purchase orders by this customer
        type: boolean
      automatic_merchant_notes:
        description: Automatic merchant notes are added to every order placed
        type: string
      billing:
        description: Billing addresses for this customer
        type: array
        items:
          $ref: '#/definitions/CustomerBilling'
      business_notes:
        description: Business notes (internally visible only)
        type: string
        maxLength: 2000
      cards:
        description: Credit Cards for this customer
        type: array
        items:
          $ref: '#/definitions/CustomerCard'
      cc_emails:
        description: Additional emails to CC notification
        type: array
        items:
          $ref: '#/definitions/CustomerEmail'
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      dhl_account_number:
        description: DHL account number
        type: string
        maxLength: 20
      dhl_duty_account_number:
        description: DHL duty account number
        type: string
        maxLength: 20
      do_not_send_mail:
        description: Do not send mail (null will not update)
        type: boolean
      edi:
        $ref: '#/definitions/CustomerEDI'
      email:
        description: Email address of this customer profile
        type: string
      exempt_shipping_handling_charge:
        description: Exempt shipping handling charge
        type: boolean
      fax:
        description: Fax Number
        type: string
        maxLength: 32
      fedex_account_number:
        description: FedEx account number
        type: string
        maxLength: 20
      free_shipping:
        description: This customer always receives free shipping
        type: boolean
      free_shipping_minimum:
        description: If free_shipping is true, this is the minimum subtotal required for free shipping
        type: number
      last_modified_by:
        description: Last modified by
        type: string
        maxLength: 100
      last_modified_dts:
        description: Last modified date
        type: string
        format: dateTime
      loyalty:
        $ref: '#/definitions/CustomerLoyalty'
      maximum_item_count:
        description: Maximum item count
        type: integer
        format: int32
      merchant_id:
        description: Merchant ID
        type: string
      minimum_item_count:
        description: Minimum item count
        type: integer
        format: int32
      minimum_subtotal:
        description: Minimum subtotal
        type: number
      no_coupons:
        description: No coupons
        type: boolean
      no_free_shipping:
        description: No free shipping regardless of coupons or item level settings
        type: boolean
      no_realtime_charge:
        description: No realtime charge
        type: boolean
      orders:
        description: Orders associated with this customer profile
        type: array
        items:
          $ref: '#/definitions/Order'
      orders_summary:
        $ref: '#/definitions/CustomerOrdersSummary'
      password:
        description: Password (may only be set, never read)
        type: string
        maxLength: 30
      pricing_tiers:
        description: Pricing tiers for this customer
        type: array
        items:
          $ref: '#/definitions/CustomerPricingTier'
      privacy:
        $ref: '#/definitions/CustomerPrivacy'
      properties:
        description: Properties for this customer
        type: array
        items:
          $ref: '#/definitions/CustomerProperty'
      qb_class:
        description: QuickBooks class to import this customer as
        type: string
      qb_code:
        description: QuickBooks name to import this customer as 
        type: string
      qb_tax_exemption_reason_code:
        description: QuickBooks tax exemption reason code
        type: integer
        format: int32
      quotes:
        description: Quotes associated with this customer profile
        type: array
        items:
          $ref: '#/definitions/Order'
      quotes_summary:
        $ref: '#/definitions/CustomerQuotesSummary'
      referral_source:
        description: Referral Source
        type: string
        maxLength: 50
      reviewer:
        $ref: '#/definitions/CustomerReviewer'
      sales_rep_code:
        description: Sales rep code
        type: string
        maxLength: 10
      send_signup_notification:
        description: Send signup notification, if true during customer creation, will send a notification.
        type: boolean
      shipping:
        description: Shipping addresses for this customer
        type: array
        items:
          $ref: '#/definitions/CustomerShipping'
      signup_dts:
        description: Signup date
        type: string
      software_entitlements:
        description: Software entitlements owned by this customer
        type: array
        items:
          $ref: '#/definitions/CustomerSoftwareEntitlement'
      suppress_buysafe:
        description: Suppress buySAFE (deprecated)
        type: boolean
      tags:
        description: Tags for this customer
        type: array
        items:
          $ref: '#/definitions/CustomerTag'
      tax_codes:
        $ref: '#/definitions/CustomerTaxCodes'
      tax_exempt:
        description: True if the customer is tax exempt
        type: boolean
      tax_id:
        description: Tax ID
        type: string
        maxLength: 15
      terms:
        description: Terms for this customer
        type: string
      track_separately:
        description: True if the customer should be tracked separately in QuickBooks
        type: boolean
      unapproved:
        description: Unapproved
        type: boolean
      ups_account_number:
        description: UPS account number
        type: string
        maxLength: 20
      website_url:
        description: Website url
        type: string
        maxLength: 100
  CustomerActivity:
    type: object
    properties:
      activities:
        type: array
        items:
          $ref: '#/definitions/Activity'
      global_unsubscribed:
        type: boolean
      global_unsubscribed_dts:
        type: string
      memberships:
        type: array
        items:
          $ref: '#/definitions/ListSegmentMembership'
      metrics:
        type: array
        items:
          $ref: '#/definitions/Metric'
      properties_list:
        type: array
        items:
          $ref: '#/definitions/Property'
      spam_complaint:
        type: boolean
      spam_complaint_dts:
        type: string
  CustomerAffiliate:
    type: object
    properties:
      affiliate_oid:
        description: Affiliate object identifier
        type: integer
        format: int32
      email:
        description: email
        type: string
      first_name:
        description: First name
        type: string
      last_name:
        description: Last name
        type: string
  CustomerAttachment:
    type: object
    properties:
      customer_profile_attachment_oid:
        description: Attachment identifier
        type: integer
        format: int32
      description:
        description: Description
        type: string
      file_name:
        description: File name
        type: string
      mime_type:
        description: Mime type
        type: string
      upload_dts:
        description: Upload date/time
        type: string
        format: dateTime
  CustomerBilling:
    type: object
    properties:
      address1:
        description: Address line 1
        type: string
        maxLength: 50
      address2:
        description: Address line 2
        type: string
        maxLength: 50
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      customer_billing_oid:
        description: Customer profile billing object identifier
        type: integer
        format: int32
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      day_phone:
        description: Day phone
        type: string
        maxLength: 25
      default_billing:
        description: Default billing
        type: boolean
      evening_phone:
        description: Evening phone
        type: string
        maxLength: 25
      first_name:
        description: First name
        type: string
        maxLength: 30
      last_name:
        description: Last name
        type: string
        maxLength: 30
      last_used_dts:
        description: Last used date
        type: string
        format: dateTime
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      state_region:
        description: State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      tax_county:
        description: Tax County
        type: string
        maxLength: 32
      title:
        description: Title
        type: string
        maxLength: 50
  CustomerCard:
    type: object
    properties:
      card_expiration_month:
        description: Card expiration month (1-12)
        type: integer
        format: int32
      card_expiration_year:
        description: Card expiration year (four digit year)
        type: integer
        format: int32
      card_number:
        description: Card number (masked to the last 4)
        type: string
      card_number_token:
        description: Hosted field token for the card number
        type: string
      card_type:
        description: Card type
        type: string
      customer_profile_credit_card_id:
        description: ID of the stored credit card to use
        type: integer
        format: int32
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      last_used_dts:
        description: Last used date
        type: string
        format: dateTime
  CustomerEDI:
    type: object
    properties:
      channel_partner_oid:
        description: EDI channel partner this customer profile is associated with
        type: integer
        format: int32
      distribution_center_number:
        description: The EDI distribution center number associated with this customer profile.
        type: string
      store_number:
        description: The EDI store number associated with this customer profile.
        type: string
  CustomerEditorValues:
    type: object
    properties:
      affiliates:
        description: affiliates
        type: array
        items:
          $ref: '#/definitions/CustomerAffiliate'
      card_exp_months:
        description: card_exp_months
        type: array
        items:
          type: string
      card_exp_years:
        description: card_exp_years
        type: array
        items:
          type: string
      card_types:
        description: card_types
        type: array
        items:
          type: string
      countries:
        description: countries
        type: array
        items:
          $ref: '#/definitions/Country'
      edi_channel_partners:
        description: EDI channel partners
        type: array
        items:
          $ref: '#/definitions/ChannelPartner'
      loyalty_ledger_descriptions:
        description: loyalty_ledger_descriptions
        type: array
        items:
          type: string
      loyalty_program_type:
        description: loyalty_program_type
        type: string
      qb_classes:
        description: qb_classes
        type: array
        items:
          type: string
      sales_rep_codes:
        description: sales_rep_codes
        type: array
        items:
          type: string
      state_optional_countries:
        description: state_optional_countries
        type: array
        items:
          $ref: '#/definitions/Country'
      terms:
        description: terms
        type: array
        items:
          type: string
  CustomerEmail:
    type: object
    properties:
      customer_profile_email_oid:
        description: ID of the email
        type: integer
        format: int32
      email:
        description: Email
        type: string
        maxLength: 100
      label:
        description: Label
        type: string
        maxLength: 100
      receipt_notification:
        description: CC this email on receipt notifications
        type: boolean
      refund_notification:
        description: CC this email on refund notifications
        type: boolean
      shipment_notification:
        description: CC this email on shipment notifications
        type: boolean
  CustomerEmailListChanges:
    type: object
    properties:
      add_to_lists:
        description: Add this customer to these email lists
        type: array
        items:
          type: string
      remove_from_lists:
        description: Remove this customer from these email lists
        type: array
        items:
          type: string
  CustomerLoyalty:
    type: object
    properties:
      current_points:
        description: Current points
        type: integer
        format: int32
      internal_gift_certificate:
        $ref: '#/definitions/GiftCertificate'
      internal_gift_certificate_balance:
        description: Loyalty Cashback / Store credit balance (internal gift certificate balance)
        type: string
      internal_gift_certificate_oid:
        description: Internal gift certificate oid used to tracking loyalty cashback / store credit.
        type: integer
        format: int32
      ledger_entries:
        description: Ledger entries
        type: array
        items:
          $ref: '#/definitions/CustomerLoyaltyLedger'
      pending_points:
        description: Pending Points
        type: integer
        format: int32
      redemptions:
        description: Redemptions
        type: array
        items:
          $ref: '#/definitions/CustomerLoyaltyRedemption'
  CustomerLoyaltyLedger:
    type: object
    properties:
      created_by:
        description: Created By
        type: string
      created_dts:
        description: Created date
        type: string
        format: dateTime
      description:
        description: Description
        type: string
      email:
        description: Email
        type: string
      item_id:
        description: Item Id
        type: string
      item_index:
        description: Item Index
        type: integer
        format: int32
      ledger_dts:
        description: Ledger date
        type: string
        format: dateTime
      loyalty_campaign_oid:
        description: Loyalty campaign oid
        type: integer
        format: int32
      loyalty_ledger_oid:
        description: Loyalty ledger oid
        type: integer
        format: int32
      loyalty_points:
        description: Loyalty points
        type: integer
        format: int32
      modified_by:
        description: Modified By
        type: string
      modified_dts:
        description: Modified date
        type: string
        format: dateTime
      order_id:
        description: Order Id
        type: string
      quantity:
        description: Quantity
        type: integer
        format: int32
      vesting_dts:
        description: Vesting date
        type: string
        format: dateTime
  CustomerLoyaltyRedemption:
    type: object
    properties:
      coupon_code:
        description: Coupon code
        type: string
      coupon_code_oid:
        description: Coupon code OID
        type: integer
        format: int32
      coupon_used:
        description: Coupon used
        type: boolean
      description_for_customer:
        description: Description for customer
        type: string
      expiration_dts:
        description: Expiration date
        type: string
        format: dateTime
      gift_certificate_code:
        description: Gift certificate code
        type: string
      gift_certificate_oid:
        description: Gift certificate oid
        type: integer
        format: int32
      loyalty_ledger_oid:
        description: Loyalty ledger OID
        type: integer
        format: int32
      loyalty_points:
        description: Loyalty points
        type: integer
        format: int32
      loyalty_redemption_oid:
        description: Loyalty redemption OID
        type: integer
        format: int32
      order_id:
        description: Order id
        type: string
      redemption_dts:
        description: Redemption date
        type: string
        format: dateTime
      remaining_balance:
        description: Remaining balance
        type: number
  CustomerMagicLinkResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      url:
        description: URL
        type: string
      warning:
        $ref: '#/definitions/Warning'
  CustomerMergeRequest:
    type: object
    properties:
      customer_profile_oid:
        description: Customer profile oid to merge
        type: integer
        format: int32
      email:
        description: Email of the customer profile to merge
        type: string
  CustomerOrdersSummary:
    type: object
    properties:
      first_order_dts:
        description: First order date
        type: string
        format: dateTime
      last_order_dts:
        description: Last order date
        type: string
        format: dateTime
      order_count:
        description: Total number of orders
        type: integer
        format: int32
      total:
        description: Total amount associated with the orders
        type: number
  CustomerPricingTier:
    type: object
    properties:
      name:
        description: Name
        type: string
        maxLength: 50
      pricing_tier_oid:
        description: Pricing Tier Oid
        type: integer
        format: int32
        maxLength: 50
  CustomerPrivacy:
    type: object
    properties:
      last_update_dts:
        description: Last update date
        type: string
        format: dateTime
      marketing:
        description: The customer has opted in to marketing
        type: boolean
      preference:
        description: The customer has opted in to preference tracking
        type: boolean
      statistics:
        description: The customer has opted in to statistics collection
        type: boolean
  CustomerProperty:
    type: object
    properties:
      customer_profile_property_oid:
        description: Customer profile property oid
        type: integer
        format: int32
      expiration_dts:
        description: The date/time that the property expires and is deleted
        type: string
        format: dateTime
      name:
        description: Name
        type: string
        maxLength: 100
      value:
        description: Value
        type: string
        maxLength: 1500
  CustomerQuery:
    type: object
    properties:
      all_tags:
        description: All tags the customer must have
        type: array
        items:
          type: string
      any_tags:
        description: Any of these tags the customer must have
        type: array
        items:
          type: string
      billing_city:
        description: Billing city
        type: string
        maxLength: 32
      billing_company:
        description: Billing company
        type: string
        maxLength: 50
      billing_country_code:
        description: Billing country code
        type: string
        maxLength: 2
      billing_day_phone:
        description: Billing day phone
        type: string
        maxLength: 25
      billing_evening_phone:
        description: Billing evening phone
        type: string
        maxLength: 25
      billing_first_name:
        description: Billing first name
        type: string
        maxLength: 30
      billing_last_name:
        description: Billing last name
        type: string
        maxLength: 30
      billing_postal_code:
        description: Billing postal code
        type: string
        maxLength: 20
      billing_state:
        description: Billing state
        type: string
        maxLength: 32
      email:
        description: Email address of this customer profile
        type: string
      emails:
        description: Emails allows for searching on multiple email addresses and work with our without the single email variable.  You may specify a single email address here or use the email property.
        type: array
        items:
          type: string
      last_modified_dts_end:
        description: Last modified date end
        type: string
        format: dateTime
      last_modified_dts_start:
        description: Last modified date start
        type: string
        format: dateTime
      pricing_tier_name:
        description: Pricing tier name
        type: string
        maxLength: 50
      pricing_tier_oid:
        description: Pricing tier oid
        type: integer
        format: int32
        maxLength: 50
      qb_class:
        description: QuickBooks class to import this customer as
        type: string
      quickbooks_code:
        description: QuickBooks name to import this customer as 
        type: string
      shipping_city:
        description: Billing city
        type: string
        maxLength: 32
      shipping_company:
        description: Billing company
        type: string
        maxLength: 50
      shipping_country_code:
        description: Billing country code
        type: string
        maxLength: 2
      shipping_day_phone:
        description: Billing day phone
        type: string
        maxLength: 25
      shipping_evening_phone:
        description: Billing evening phone
        type: string
        maxLength: 25
      shipping_first_name:
        description: Billing first name
        type: string
        maxLength: 30
      shipping_last_name:
        description: Billing last name
        type: string
        maxLength: 30
      shipping_postal_code:
        description: Billing postal code
        type: string
        maxLength: 20
      shipping_state:
        description: Billing state
        type: string
        maxLength: 32
      signup_dts_end:
        description: Signup date end
        type: string
        format: dateTime
      signup_dts_start:
        description: Signup date start
        type: string
        format: dateTime
  CustomerQuotesSummary:
    type: object
    properties:
      first_quote_dts:
        description: First quote date
        type: string
        format: dateTime
      last_quote_dts:
        description: Last quote date
        type: string
        format: dateTime
      quote_count:
        description: Total number of quote
        type: integer
        format: int32
      total:
        description: Total amount associated with the quotes
        type: number
  CustomerResponse:
    type: object
    properties:
      customer:
        $ref: '#/definitions/Customer'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomerReviewer:
    type: object
    properties:
      auto_approve:
        description: True if reviewes from this customer profile should automatically be approved
        type: boolean
      average_overall_rating:
        description: Average overall rating of items reviewed
        type: number
      expert:
        description: True if the customer is an expert
        type: boolean
      first_review:
        description: First review
        type: string
        format: dateTime
      last_review:
        description: Last review
        type: string
        format: dateTime
      location:
        description: Location of the reviewer
        type: string
      nickname:
        description: Nickname of the reviewer
        type: string
      number_helpful_review_votes:
        description: Number of helpful review votes
        type: integer
        format: int32
      rank:
        description: Rank of this reviewer
        type: integer
        format: int32
      reviews_contributed:
        description: Number of reviews contributed
        type: integer
        format: int32
  CustomerShipping:
    type: object
    properties:
      address1:
        description: Address line 1
        type: string
        maxLength: 50
      address2:
        description: Address line 2
        type: string
        maxLength: 50
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      customer_shipping_oid:
        description: Customer profile shipping object identifier
        type: integer
        format: int32
      day_phone:
        description: Day phone
        type: string
        maxLength: 25
      default_shipping:
        description: Default shipping
        type: boolean
      evening_phone:
        description: Evening phone
        type: string
        maxLength: 25
      first_name:
        description: First name
        type: string
        maxLength: 30
      last_name:
        description: Last name
        type: string
        maxLength: 30
      last_used_dts:
        description: Last used date
        type: string
        format: dateTime
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      state_region:
        description: State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      tax_county:
        description: Tax County
        type: string
        maxLength: 32
      title:
        description: Title
        type: string
        maxLength: 50
  CustomerSoftwareEntitlement:
    type: object
    properties:
      activation_code:
        description: Activation Code Associated with the software
        type: string
        maxLength: 50
      activation_dts:
        description: Date/time when the activation code was created
        type: string
        format: dateTime
      customer_software_entitlement_oid:
        description: Customer profile software entitlement object identifier
        type: integer
        format: int32
      expiration_dts:
        description: Date/time when the activation code will expire
        type: string
        format: dateTime
      purchased_via_item_description:
        description: Item description used to purchase this software.
        type: string
        maxLength: 512
      purchased_via_item_id:
        description: Item ID used to purchase this software.
        type: string
        maxLength: 20
      purchased_via_order_id:
        description: Order ID used to purchase this software.
        type: string
        maxLength: 30
      software_sku:
        description: SKU of the software
        type: string
        maxLength: 30
  CustomersResponse:
    type: object
    properties:
      customers:
        type: array
        items:
          $ref: '#/definitions/Customer'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomerStoreCredit:
    type: object
    properties:
      available:
        description: Available store credit which is defined as unused and vested
        type: number
      expiring:
        description: Amount of store credit expiring within 30 days
        type: number
      future_ledgers:
        description: Array of future ledger entries including expiring entries
        type: array
        items:
          $ref: '#/definitions/CustomerStoreCreditLedgerEntry'
      past_ledgers:
        description: Array of past ledger entries including accrual, usage, and expiring entries
        type: array
        items:
          $ref: '#/definitions/CustomerStoreCreditLedgerEntry'
      total:
        description: Total lifetime store credit for this customer.
        type: number
      vesting:
        description: Amount of store credit vesting
        type: number
  CustomerStoreCreditAddRequest:
    type: object
    properties:
      amount:
        description: Amount of store credit
        type: number
      description:
        description: Description or reason for the store credit
        type: string
      expiration_days:
        description: Optional days for store credit to expire or zero for no expiration
        type: integer
        format: int32
      vesting_days:
        description: Optional days for store credit to vesting or zero for immediately available
        type: integer
        format: int32
  CustomerStoreCreditLedgerEntry:
    type: object
    properties:
      action:
        description: Identifies the state of this ledger entry whether the entry is Vesting or Expiring
        type: string
      amount:
        description: The amount of the activity.
        type: number
      description:
        description: Description of what this ledger entry is used.
        type: string
        maxLength: 50
      entry_dts:
        description: Date time of this ledger activity.
        type: string
      gift_certificate_ledger_oid:
        description: Gift certificate ledger oid is a primary key for this object, used internally.
        type: integer
        format: int32
      gift_certificate_oid:
        description: Gift certificate oid.
        type: integer
        format: int32
      reference_order_id:
        description: The order id if this gift certificate was used as part of the payment.
        type: string
  CustomerStoreCreditResponse:
    type: object
    properties:
      customer_store_credit:
        $ref: '#/definitions/CustomerStoreCredit'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomerTag:
    type: object
    properties:
      tag_value:
        description: Tag Value
        type: string
        maxLength: 250
  CustomerTaxCodes:
    type: object
    properties:
      avalara_customer_code:
        description: Avalara customer code
        type: string
      avalara_entity_use_code:
        description: Avalara entity use code
        type: string
      sovos_customer_code:
        description: Sovos customer code
        type: string
      taxjar_customer_id:
        description: TaxJar customer id
        type: string
      taxjar_exemption_type:
        description: TaxJar exemption type
        type: string
  CustomerWishListItem:
    type: object
    properties:
      add_dts:
        description: Add date
        type: string
        format: dateTime
      comments:
        description: Comments
        type: string
        maxLength: 1024
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      customer_wishlist_item_oid:
        description: Customer wishlist item object identifier
        type: integer
        format: int32
      merchant_item_oid:
        description: Merchant item object identifier
        type: integer
        format: int32
      position:
        description: Position in wishlist
        type: integer
        format: int32
      priority:
        description: Priority of wishlist item, 3 being low priority and 5 is high priority.
        type: integer
        format: int32
  CustomerWishListItemResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      wishlist_item:
        $ref: '#/definitions/CustomerWishListItem'
  CustomerWishListItemsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      wishlist_items:
        type: array
        items:
          $ref: '#/definitions/CustomerWishListItem'
  CustomReport:
    type: object
    properties:
      business_analysis_prompt:
        type: string
      chart_javascript:
        type: string
      chart_javascript_url:
        type: string
      data_warehouse_report_config_oid:
        type: integer
        format: int32
      dataset_security_level:
        type: string
      group_name:
        type: string
      merchant_id:
        type: string
      name:
        type: string
      parameters:
        type: array
        items:
          $ref: '#/definitions/CustomReportParameter'
      queries:
        type: array
        items:
          $ref: '#/definitions/CustomReportQuery'
      tooltips:
        type: array
        items:
          $ref: '#/definitions/CustomReportTooltip'
  CustomReportAccountConfig:
    type: object
    properties:
      ai_budget:
        type: number
      ai_usage:
        description: Current AI usage creating reports
        type: number
      ai_usage_breakdowns:
        type: array
        items:
          $ref: '#/definitions/CustomReportUsageBreakdown'
      merchant_id:
        description: Current BigQuery SQL usage running reports
        type: string
      novice_sql_comments:
        type: boolean
      opt_in:
        description: True if they have opted into custom reports
        type: boolean
      opt_in_by_user:
        description: User that opted into custom reporting
        type: string
      opt_in_date:
        description: Date/time that custom reporting was opted in to
        type: string
        format: dateTime
      read_only:
        type: boolean
      sql_budget:
        type: number
      sql_usage:
        type: number
  CustomReportAccountConfigResponse:
    type: object
    properties:
      account_config:
        $ref: '#/definitions/CustomReportAccountConfig'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportAnalysisRequest:
    type: object
    properties:
      png_url:
        type: string
      result_url:
        type: string
  CustomReportAnalysisResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      html:
        type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportChartPngUploadResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      signed_download_url:
        type: string
      signed_upload_url:
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportExecutionParameter:
    type: object
    properties:
      name:
        type: string
      quick_pick_key:
        type: string
      type:
        type: string
      value:
        type: string
  CustomReportExecutionRequest:
    type: object
    properties:
      parameters:
        type: array
        items:
          $ref: '#/definitions/CustomReportExecutionParameter'
  CustomReportExecutionResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      parameters:
        type: array
        items:
          $ref: '#/definitions/CustomReportExecutionParameter'
      report:
        $ref: '#/definitions/CustomReport'
      result_schema_json:
        type: string
      result_url:
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportParameter:
    type: object
    properties:
      display_name:
        type: string
      meta:
        type: string
      name:
        type: string
      options:
        type: array
        items:
          $ref: '#/definitions/CustomReportParameterOption'
      required:
        type: boolean
      type:
        type: string
  CustomReportParameterOption:
    type: object
    properties:
      description:
        type: string
      value:
        type: string
  CustomReportQuery:
    type: object
    properties:
      conditional_formatting_start_column:
        type: integer
        format: int32
      freeze_columns:
        type: integer
        format: int32
      pii_columns:
        type: array
        items:
          type: string
      query:
        type: string
      sheet_name:
        type: string
      title:
        type: string
  CustomReportResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      report:
        $ref: '#/definitions/CustomReport'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportsExecutionReportData:
    type: object
    properties:
      data_warehouse_report_config_oid:
        type: integer
        format: int32
      error_message:
        type: string
      result_url:
        type: string
  CustomReportsExecutionRequest:
    type: object
    properties:
      data_warehouse_report_config_oids:
        type: array
        items:
          type: integer
      parameters:
        type: array
        items:
          $ref: '#/definitions/CustomReportExecutionParameter'
  CustomReportsExecutionResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      parameters:
        type: array
        items:
          $ref: '#/definitions/CustomReportExecutionParameter'
      reports:
        type: array
        items:
          $ref: '#/definitions/CustomReportsExecutionReportData'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      reports:
        description: reports
        type: array
        items:
          $ref: '#/definitions/CustomReport'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  CustomReportTooltip:
    type: object
    properties:
      column_name:
        type: string
      tooltip:
        type: string
  CustomReportUsageBreakdown:
    type: object
    properties:
      usage:
        type: number
      usage_date:
        description: Date/time that usage occurred
        type: string
        format: dateTime
  DataTablesServerSideResponse:
    type: object
    properties:
      data:
        type: array
        items:
          $ref: '#/definitions/Customer'
      draw:
        type: integer
        format: int32
      recordsFiltered:
        type: integer
        format: int32
      recordsTotal:
        type: integer
        format: int32
  Distance:
    type: object
    properties:
      uom:
        description: Unit of measure
        type: string
        enum: [
          "IN",
          "CM"
        ]
      value:
        description: The distance measured in UOM
        type: number
  DistributionCenter:
    type: object
    properties:
      address1:
        description: Address line 1 of the distribution center
        type: string
      address2:
        description: Address line 2 of the distribution center
        type: string
      city:
        description: City of the distribution center
        type: string
      code:
        description: Unique code for this distribution center
        type: string
      country_code:
        description: Country code of the distribution center
        type: string
      default_center:
        description: True if this is the default distribution center on the account
        type: boolean
      default_handles_all_items:
        description: True if this distribution center handles all new items by default
        type: boolean
      distribution_center_oid:
        description: Distribution center object identifier
        type: integer
        format: int32
      duns:
        description: DUNS number assigned to this distribution center (EDI)
        type: string
      estimate_from_distribution_center_oid:
        description: Estimate shipments for this distribution center as if they came from the other distribution center
        type: integer
        format: int32
      ftp_password:
        description: Password associated with the virtual FTP
        type: string
      hold_before_shipment_minutes:
        description: The number of minutes to hold a shipment
        type: integer
        format: int32
      hold_before_transmission:
        description: True if the shipment should be held before transmission and require a manual release
        type: boolean
      holdAutoOrderBeforeShipmentMinutes:
        type: integer
        format: int32
      latitude:
        description: Latitude where the distribution center is located
        type: number
      longitude:
        description: Longitude where the distribution center is located
        type: number
      name:
        description: Name of this distribution center
        type: string
      no_customer_direct_shipments:
        description: True if this distribution center does not handle customer direct shipments
        type: boolean
      no_split_shipment:
        description: True if this distribution center is not allowed to participate in a split shipment.
        type: boolean
      pickup_cutoff_time_friday:
        description: The time (EST) after which pickups will not be available on Friday
        type: string
      pickup_cutoff_time_monday:
        description: The time (EST) after which pickups will not be available on Monday
        type: string
      pickup_cutoff_time_saturday:
        description: The time (EST) after which pickups will not be available on Saturday
        type: string
      pickup_cutoff_time_sunday:
        description: The time (EST) after which pickups will not be available on Sunday
        type: string
      pickup_cutoff_time_thursday:
        description: The time (EST) after which pickups will not be available on Thursday
        type: string
      pickup_cutoff_time_tuesday:
        description: The time (EST) after which pickups will not be available on Tuesday
        type: string
      pickup_cutoff_time_wednesday:
        description: The time (EST) after which pickups will not be available on Wednesday
        type: string
      pickup_start_time_friday:
        description: The time (EST) after which pickups are available on Friday
        type: string
      pickup_start_time_monday:
        description: The time (EST) after which pickups are available on Monday
        type: string
      pickup_start_time_saturday:
        description: The time (EST) after which pickups are available on Saturday
        type: string
      pickup_start_time_sunday:
        description: The time (EST) after which pickups are available on Sunday
        type: string
      pickup_start_time_thursday:
        description: The time (EST) after which pickups are available on Thursday
        type: string
      pickup_start_time_tuesday:
        description: The time (EST) after which pickups are available on Tuesday
        type: string
      pickup_start_time_wednesday:
        description: The time (EST) after which pickups are available on Wednesday
        type: string
      pickup_tz:
        description: The IANA timezone for all pickup times
        type: string
      postal_code:
        description: Postal code of the distribution center
        type: string
      process_days:
        description: The number of processing days required before an order ships
        type: integer
        format: int32
      process_inventory_start_time:
        description: The time (EST) after which inventory updates will be processed
        type: string
      process_inventory_stop_time:
        description: The time (EST) before which inventory updates will be processed
        type: string
      require_asn:
        description: True if ASNs are required for this distribution center (EDI)
        type: boolean
      send_kit_instead_of_components:
        description: True if we should send the kit instead of the components
        type: boolean
      shipment_cutoff_time_friday:
        description: The time (EST) after which shipments will not be processed on Friday
        type: string
      shipment_cutoff_time_monday:
        description: The time (EST) after which shipments will not be processed on Monday
        type: string
      shipment_cutoff_time_saturday:
        description: The time (EST) after which shipments will not be processed on Saturday
        type: string
      shipment_cutoff_time_sunday:
        description: The time (EST) after which shipments will not be processed on Sunday
        type: string
      shipment_cutoff_time_thursday:
        description: The time (EST) after which shipments will not be processed on Thursday
        type: string
      shipment_cutoff_time_tuesday:
        description: The time (EST) after which shipments will not be processed on Tuesday
        type: string
      shipment_cutoff_time_wednesday:
        description: The time (EST) after which shipments will not be processed on Wednesday
        type: string
      state:
        description: State of the distribution center
        type: string
      transmit_blank_costs:
        description: True if monetary amounts should be zeroed before transmission
        type: boolean
      transport:
        description: Transport mechanism for this distribution center
        type: string
  DistributionCentersResponse:
    type: object
    properties:
      distribution_centers:
        type: array
        items:
          $ref: '#/definitions/DistributionCenter'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailBaseTemplateListResponse:
    type: object
    properties:
      templatePaths:
        type: array
        items:
          type: string
  EmailCampaign:
    type: object
    properties:
      click_rate_formatted:
        description: Click rate of emails
        type: string
      created_dts:
        description: Created date
        type: string
        format: dateTime
      deleted:
        description: True if this campaign was deleted
        type: boolean
      email_campaign_uuid:
        description: Email campaign UUID
        type: string
      email_communication_sequence_uuid:
        description: Email communication sequence UUID
        type: string
      end_once_customer_purchases:
        description: True if the customer should end the flow once they purchase from this campaign
        type: boolean
      end_once_customer_purchases_anywhere:
        description: True if the customer should end the flow once they purchase from anywhere
        type: boolean
      esp_campaign_folder_uuid:
        description: Campaign folder UUID.  Null for uncategorized
        type: string
      esp_domain_user:
        description: User of the sending address
        type: string
      esp_domain_uuid:
        description: UUID of the sending domain
        type: string
      esp_friendly_name:
        description: Friendly name of the sending email
        type: string
      library_item_oid:
        description: If this item was ever added to the Code Library, this is the oid for that library item, or 0 if never added before.  This value is used to determine if a library item should be inserted or updated.
        type: integer
        format: int32
      memberships:
        description: List and segment memberships
        type: array
        items:
          $ref: '#/definitions/EmailListSegmentMembership'
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email campaign
        type: string
        maxLength: 250
      open_rate_formatted:
        description: Open rate of emails
        type: string
      prevent_sending_due_to_spam:
        description: True if this campaign is prevented from sending at this time due to spam complaints.
        type: boolean
      repeat_monthly:
        description: True if the campaign should repeat on a monthly basis
        type: boolean
      repeat_weekly:
        description: True if the campaign should repeat on a weekly basis
        type: boolean
      revenue_formatted:
        description: Revenue associated with campaign
        type: string
      revenue_per_customer_formatted:
        description: Revenue per customer associated with campaign
        type: string
      scheduled_dts:
        description: Scheduled date
        type: string
        format: dateTime
      screenshot_large_full_url:
        description: URL to a large full length screenshot
        type: string
      sms_esp_twilio_uuid:
        description: Twilio Account UUID.  Null for none
        type: string
      sms_phone_number:
        description: Twilio SMS Phone Number.  Null for none
        type: string
      status:
        description: Status of the campaign of draft, archived, and sent
        type: string
      status_dts:
        description: Timestamp when the last status change happened
        type: string
        format: dateTime
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
  EmailCampaignFolder:
    type: object
    properties:
      esp_campaign_folder_uuid:
        description: Email campaign folder UUID
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email campaign folder
        type: string
        maxLength: 250
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      system_generated:
        description: System generated folder
        type: boolean
  EmailCampaignFolderResponse:
    type: object
    properties:
      campaign_folder:
        $ref: '#/definitions/EmailCampaignFolder'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCampaignFoldersResponse:
    type: object
    properties:
      campaign_folders:
        type: array
        items:
          $ref: '#/definitions/EmailCampaignFolder'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCampaignResponse:
    type: object
    properties:
      campaign:
        $ref: '#/definitions/EmailCampaign'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCampaignsResponse:
    type: object
    properties:
      campaigns:
        type: array
        items:
          $ref: '#/definitions/EmailCampaign'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailClick:
    type: object
    properties:
      click_count:
        description: Click Count
        type: integer
        format: int32
      url:
        description: url
        type: string
  EmailClicksResponse:
    type: object
    properties:
      clicks:
        type: array
        items:
          $ref: '#/definitions/EmailClick'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseq:
    type: object
    properties:
      email_communication_sequence_steps:
        description: Array of steps
        type: array
        items:
          $ref: '#/definitions/EmailCommseqStep'
      email_communication_sequence_uuid:
        description: Email commseq UUID
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
  EmailCommseqEmail:
    type: object
    properties:
      deleted:
        description: Deleted
        type: boolean
      edited_by_user:
        description: Edited by user
        type: string
      email_communication_sequence_email_uuid:
        description: Email communication sequence email uuid
        type: string
      email_communication_sequence_uuid:
        description: Email commseq UUID
        type: string
      email_container_cjson:
        description: Email container cjson
        type: string
      email_container_cjson_last_modified_dts:
        description: Timestamp the last time the container was modified.
        type: string
        format: dateTime
      email_template_vm_path:
        description: Email template virtual path
        type: string
      external_generation:
        type: boolean
      external_generation_authentication:
        type: string
      external_generation_basic_password:
        type: string
      external_generation_basic_username:
        type: string
      external_generation_header_name:
        type: string
      external_generation_header_value:
        type: string
      external_generation_id:
        type: string
      external_generation_url:
        type: string
      filter_profile_equation_json:
        description: Filter profile equation json
        type: string
      individually_render:
        description: Individually render
        type: boolean
      library_item_oid:
        description: If this item was ever added to the Code Library, this is the oid for that library item, or 0 if never added before.  This value is used to determine if a library item should be inserted or updated.
        type: integer
        format: int32
      magic_link:
        description: True if email links should contain magic link tokens to log the customer in automatically
        type: boolean
      merchant_id:
        description: Merchant ID
        type: string
      pending_review:
        description: True if the content of this email is pending review by UltraCart
        type: boolean
      preview_text:
        description: Preview text
        type: string
      rejected:
        description: True if the content of this email was rejected during review by UltraCart
        type: boolean
      requires_review:
        description: True if the content of this email is requires review by UltraCart
        type: boolean
      screenshot_large_full_url:
        description: URL to screenshot in large form factor full page
        type: string
      screenshot_large_viewport_url:
        description: URL to screenshot in large form factor viewport
        type: string
      screenshot_small_full_url:
        description: URL to screenshot in small form factor full page
        type: string
      screenshot_small_viewport_url:
        description: URL to screenshot in small form factor viewport
        type: string
      smart_sending:
        description: Smart sending
        type: boolean
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      subject:
        description: Subject
        type: string
      suspended_for_spam:
        description: True if the email was suspended for too high of a spam rate.
        type: boolean
      transactional_email:
        description: Transactional email
        type: boolean
      version:
        description: Version
        type: integer
        format: int32
  EmailCommseqEmailResponse:
    type: object
    properties:
      email:
        $ref: '#/definitions/EmailCommseqEmail'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqEmailSendTestRequest:
    type: object
    properties:
      cart_id:
        type: string
      cart_item_ids:
        type: array
        items:
          type: string
      esp_commseq_email_uuid:
        type: string
      esp_commseq_step_uuid:
        type: string
      esp_commseq_uuid:
        type: string
      name:
        type: string
      order_id:
        type: string
      please_review:
        type: boolean
      send_to_additional_emails:
        type: array
        items:
          type: string
      send_to_logged_in_user:
        type: boolean
  EmailCommseqEmailSendTestResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqEmailsRequest:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      esp_commseq_email_uuids:
        type: array
        items:
          type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqEmailsResponse:
    type: object
    properties:
      emails:
        type: array
        items:
          $ref: '#/definitions/EmailCommseqEmail'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqPostcard:
    type: object
    properties:
      deleted:
        description: Deleted
        type: boolean
      edited_by_user:
        description: Edited by user
        type: string
      email_communication_sequence_postcard_uuid:
        description: communication sequence postcard uuid
        type: string
      filter_profile_equation_json:
        description: Filter profile equation json
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      postcard_back_container_cjson:
        description: Postcard back container cjson
        type: string
      postcard_back_container_uuid:
        description: Postcard back container uuid
        type: string
      postcard_container_cjson_last_modified_dts:
        description: Timestamp the last time the container was modified.
        type: string
        format: dateTime
      postcard_front_container_cjson:
        description: Postcard front container cjson
        type: string
      postcard_front_container_uuid:
        description: Postcard front container uuid
        type: string
      screenshot_back_url:
        description: URL to screenshot of the back of the postcard
        type: string
      screenshot_front_url:
        description: URL to screenshot of the front of the postcard
        type: string
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
  EmailCommseqPostcardResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      postcard:
        $ref: '#/definitions/EmailCommseqPostcard'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqPostcardSendTestRequest:
    type: object
    properties:
      address_1:
        type: string
      address_2:
        type: string
      cart_id:
        type: string
      cart_item_ids:
        type: array
        items:
          type: string
      city:
        type: string
      esp_commseq_postcard_uuid:
        type: string
      esp_commseq_step_uuid:
        type: string
      esp_commseq_uuid:
        type: string
      mail_card:
        type: boolean
      name:
        type: string
      order_id:
        type: string
      postal_code:
        type: string
      state:
        type: string
  EmailCommseqPostcardSendTestResponse:
    type: object
    properties:
      backThumbnail:
        type: string
      error:
        $ref: '#/definitions/Error'
      frontThumbnail:
        type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      renderedPdf:
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqPostcardsRequest:
    type: object
    properties:
      esp_commseq_postcard_uuids:
        type: array
        items:
          type: string
  EmailCommseqPostcardsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      postcards:
        type: array
        items:
          $ref: '#/definitions/EmailCommseqPostcard'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqResponse:
    type: object
    properties:
      communication_sequence:
        $ref: '#/definitions/EmailCommseq'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqSequenceTestRequest:
    type: object
    properties:
      address_1:
        type: string
      address_2:
        type: string
      cart_id:
        type: string
      cart_item_ids:
        type: array
        items:
          type: string
      city:
        type: string
      esp_commseq_uuid:
        type: string
      mail_card:
        type: boolean
      name:
        type: string
      order_id:
        type: string
      please_review:
        type: boolean
      postal_code:
        type: string
      send_to_cellphone_e164:
        type: string
      send_to_email:
        type: string
      send_to_logged_in_user:
        type: boolean
      state:
        type: string
  EmailCommseqSequenceTestResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqSmsSendTestRequest:
    type: object
    properties:
      esp_commseq_step_uuid:
        type: string
      esp_commseq_uuid:
        type: string
      send_to_cellphone_e164:
        type: string
  EmailCommseqSmsSendTestResponse:
    type: object
    properties:
      body:
        type: string
      error:
        $ref: '#/definitions/Error'
      media_urls:
        type: array
        items:
          type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqsResponse:
    type: object
    properties:
      communication_sequences:
        type: array
        items:
          $ref: '#/definitions/EmailCommseq'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqStat:
    type: object
    properties:
      click_count:
        description: Count of clicked emails
        type: integer
        format: int32
      click_count_formatted:
        description: Count of clicked emails, formatted
        type: string
      conversion_count:
        description: Count of conversion
        type: integer
        format: int32
      conversion_count_formatted:
        description: Count of conversions, formatted
        type: string
      delivered_count:
        description: Count of delivered emails
        type: integer
        format: int32
      delivered_count_formatted:
        description: Count of delivered emails, formatted
        type: string
      email_communication_sequence_uuid:
        description: UUID associated with the communication sequence
        type: string
      finished_count:
        description: Count of customers that finished the sequence
        type: integer
        format: int32
      finished_count_formatted:
        description: Count of customers that finished the sequence, formatted
        type: string
      in_progress_count:
        description: Count of customers in progress
        type: integer
        format: int32
      in_progress_count_formatted:
        description: Count of customers in progress, formatted
        type: string
      kickbox_count:
        description: Count of emails kicked
        type: integer
        format: int32
      kickbox_count_formatted:
        description: Count of emails kicked, formatted
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      open_count:
        description: Count of opened emails
        type: integer
        format: int32
      open_count_formatted:
        description: Count of opened emails, formatted
        type: string
      order_count:
        description: Count of orders
        type: integer
        format: int32
      order_count_formatted:
        description: Count of orders, formatted
        type: string
      permanent_bounce_count:
        description: Count of emails permanently bounced
        type: integer
        format: int32
      permanent_bounce_count_formatted:
        description: Count of emails permanently bounced, formatted
        type: string
      profit:
        description: Profit
        type: number
      profit_formatted:
        description: Profit, formatted
        type: string
      revenue:
        description: Revenue
        type: number
      revenue_formatted:
        description: Revenue, formatted
        type: string
      send_count:
        description: Count of emails sent
        type: integer
        format: int32
      send_count_formatted:
        description: Count of emails sent, formatted
        type: string
      skipped_count:
        description: Count of skipped emails
        type: integer
        format: int32
      skipped_count_formatted:
        description: Count of skipped emails, formatted
        type: string
      spam_count:
        description: Count of emails classified as spam
        type: integer
        format: int32
      spam_count_formatted:
        description: Count of emails classified as spam, formatted
        type: string
      started_count:
        description: Count of customers that started the sequence
        type: integer
        format: int32
      started_count_formatted:
        description: Count of customers that started the sequence, formatted
        type: string
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      unsubscribe_count:
        description: Count of unsubscribes caused
        type: integer
        format: int32
      unsubscribe_count_formatted:
        description: Count of unsubscribes caused, formatted
        type: string
      view_count:
        description: Count of views
        type: integer
        format: int32
      view_count_formatted:
        description: Count of views, formatted
        type: string
  EmailCommseqStatResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      stats:
        $ref: '#/definitions/EmailCommseqStat'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqStep:
    type: object
    properties:
      alt_child_email_communication_sequence_steps:
        description: Array of child steps for the alternate path
        type: array
        items:
          $ref: '#/definitions/EmailCommseqStep'
      child_email_communication_sequence_steps:
        description: Array of child steps
        type: array
        items:
          $ref: '#/definitions/EmailCommseqStep'
      email_communication_sequence_step_uuid:
        description: Email commseq step UUID
        type: string
      email_pending_review:
        description: True if the content of the email associated with this step is pending review by UltraCart
        type: boolean
      email_rejected:
        description: True if the content of the email associated with this step was rejected during review by UltraCart
        type: boolean
      email_requires_review:
        description: True if the content of the email associated with this step requires review by UltraCart
        type: boolean
      filter_profile_equation_json:
        description: Filter profile equation JSON
        type: string
      merchant_notes:
        description: Internal merchant notes
        type: string
      step_config_json:
        description: Arbitrary Configuration for a step
        type: string
      type:
        description: Type of step
        type: string
        enum: [
          "begin",
          "wait",
          "email",
          "merge",
          "condition",
          "end"
        ]
  EmailCommseqStepLog:
    type: object
    properties:
      email:
        description: Email
        type: string
      log:
        description: Log text
        type: string
      log_dts:
        description: Log date/time
        type: string
        format: dateTime
  EmailCommseqStepLogsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      logs:
        type: array
        items:
          $ref: '#/definitions/EmailCommseqStepLog'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCommseqWebhookSendTestRequest:
    type: object
    properties:
      cart_id:
        type: string
      cart_item_ids:
        type: array
        items:
          type: string
      email:
        type: string
      esp_commseq_step_uuid:
        type: string
      esp_commseq_uuid:
        type: string
      name:
        type: string
      order_id:
        type: string
  EmailCommseqWebhookSendTestResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      request:
        description: HTTP Request
        type: string
      response:
        description: HTTP Response
        type: string
      status_code:
        description: HTTP Status Code
        type: integer
        format: int32
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCustomer:
    type: object
    properties:
      active:
        description: True if the customer is flagged as active within StoreFront Communications
        type: boolean
      email:
        description: Email
        type: string
      email_customer_uuid:
        description: Email customer UUID
        type: string
      first_name:
        description: First name
        type: string
      global_unsubscribe:
        description: True if the customer has globally unsubscribed from all communication.
        type: boolean
      last_interaction_dts:
        description: Last interaction
        type: string
        format: dateTime
      last_name:
        description: Last name
        type: string
      list_uuids:
        description: UUIDs of the lists they are subscribed to
        type: array
        items:
          type: string
  EmailCustomerEditorUrlResponse:
    type: object
    properties:
      editor_url:
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailCustomersResponse:
    type: object
    properties:
      customers:
        description: Customers on the page
        type: array
        items:
          $ref: '#/definitions/EmailCustomer'
      page_number:
        description: Page number (one based offset)
        type: integer
        format: int32
      page_size:
        description: Number of records per page
        type: integer
        format: int32
      total_customers:
        description: Total customers
        type: integer
        format: int32
      total_pages:
        description: Total number of pages
        type: integer
        format: int32
  EmailDashboardActivity:
    type: object
    properties:
      action:
        description: Type of action such as add, remove, subscribe, unsubscribe
        type: string
      activity_dts:
        description: Date/time of the activity
        type: string
        format: dateTime
      destination_name:
        description: List or segment name
        type: string
      destination_uuid:
        description: List or segment uuid
        type: string
      email:
        description: Email address
        type: string
      is_list:
        description: true if activity is related to list
        type: boolean
      is_segment:
        description: true if activity is related to segment
        type: boolean
  EmailDashboardActivityResponse:
    type: object
    properties:
      activity:
        type: array
        items:
          $ref: '#/definitions/EmailDashboardActivity'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailDashboardStatsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      stats:
        type: array
        items:
          $ref: '#/definitions/EmailStat'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailDomain:
    type: object
    properties:
      comment:
        type: string
      dkim:
        type: array
        items:
          $ref: '#/definitions/VerificationRecord'
      dkim_status:
        type: string
      domain:
        type: string
      esp_domain_uuid:
        type: string
      identity_status:
        type: string
      mailgun:
        $ref: '#/definitions/Mailgun'
      merchant_id:
        type: string
      provider:
        type: string
      spf:
        $ref: '#/definitions/VerificationRecord'
      start_dkim_dts:
        type: string
      start_identity_dts:
        type: string
      verification:
        $ref: '#/definitions/VerificationRecord'
  EmailEditorTokenResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      token:
        type: string
      warning:
        $ref: '#/definitions/Warning'
  EmailEditorValuesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      loyalty_tiers:
        type: array
        items:
          type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailFlow:
    type: object
    properties:
      allow_multiple_concurrent_enrollments:
        description: True if a customer may be enrolled in this flow multiple times
        type: boolean
      back_populating:
        description: True if the flow is currently performing a back population.
        type: boolean
      click_rate_formatted:
        description: Click rate of emails, formatted
        type: string
      created_dts:
        description: Created date
        type: string
        format: dateTime
      deleted:
        description: True if this campaign was deleted
        type: boolean
      email_communication_sequence_uuid:
        description: Email communication sequence UUID
        type: string
      email_flow_uuid:
        description: Email flow UUID
        type: string
      end_once_customer_purchases:
        description: True if the customer should end the flow once they purchase from an email on this flow
        type: boolean
      end_once_customer_purchases_anywhere:
        description: True if the customer should end the flow once they purchase from any source
        type: boolean
      enrolled_customers:
        description: Number of enrolled customers.
        type: integer
        format: int32
      esp_domain_user:
        description: Username of sending email
        type: string
      esp_domain_uuid:
        description: UUID of sending domain
        type: string
      esp_flow_folder_uuid:
        description: Flow folder UUID.  Null for uncategorized
        type: string
      esp_friendly_name:
        description: Friendly name of the sending email
        type: string
      filter_profile_equation_json:
        description: File profile equation json
        type: string
      library_item_oid:
        description: If this item was ever added to the Code Library, this is the oid for that library item, or 0 if never added before.  This value is used to determine if a library item should be inserted or updated.
        type: integer
        format: int32
      maximum_enrolled:
        description: The number of maximum customers for the plan are currently enrolled in this flow.
        type: boolean
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email flow
        type: string
        maxLength: 250
      open_rate_formatted:
        description: Open rate of emails, formatted
        type: string
      revenue_formatted:
        description: Revenue, formatted
        type: string
      revenue_per_customer_formatted:
        description: Revenue per customer, formatted
        type: string
      screenshot_large_full_url:
        description: URL to a large full length screenshot
        type: string
      sms_esp_twilio_uuid:
        description: Twilio Account UUID.  Null for none
        type: string
      sms_phone_number:
        description: Twilio SMS Phone Number.  Null for none
        type: string
      status:
        description: Status of the campaign of draft, archived, active, and inactive
        type: string
      status_dts:
        description: Timestamp when the last status change happened
        type: string
        format: dateTime
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      trigger_parameter:
        description: Trigger parameter
        type: string
      trigger_parameter_name:
        description: Trigger parameter name
        type: string
      trigger_type:
        description: Trigger type
        type: string
  EmailFlowBackPopulateRequest:
    type: object
    properties:
      order_days_old:
        description: The age of the orders that should be considered for order triggers.
        type: integer
        format: int32
      relative_to_event:
        description: True if the age of the event should be considered when reducing the initial flow wait step
        type: boolean
  EmailFlowBackPopulateResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailFlowFolder:
    type: object
    properties:
      esp_flow_folder_uuid:
        description: Email flow folder UUID
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email flow folder
        type: string
        maxLength: 250
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      system_generated:
        description: System generated folder
        type: boolean
  EmailFlowFolderResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      flow_folder:
        $ref: '#/definitions/EmailFlowFolder'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailFlowFoldersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      flow_folders:
        type: array
        items:
          $ref: '#/definitions/EmailFlowFolder'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailFlowResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      flow:
        $ref: '#/definitions/EmailFlow'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailFlowsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      flows:
        type: array
        items:
          $ref: '#/definitions/EmailFlow'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailGlobalSettings:
    type: object
    properties:
      dedicated_ip:
        type: boolean
  EmailGlobalSettingsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      global_settings:
        $ref: '#/definitions/EmailGlobalSettings'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailGlobalUnsubscribeRequest:
    type: object
    properties:
      email:
        type: string
  EmailGlobalUnsubscribeResponse:
    type: object
    properties:
      listsUnsubscribed:
        type: integer
        format: int32
  EmailHistogramPropertyNamesResponse:
    type: object
    properties:
      property_names:
        type: array
        items:
          type: string
  EmailHistogramPropertyValuesResponse:
    type: object
    properties:
      property_values:
        type: array
        items:
          type: string
  EmailList:
    type: object
    properties:
      allow_csv_download:
        description: True if the current user has the rights to download this list.
        type: boolean
      created_dts:
        description: Created date
        type: string
        format: dateTime
      deleted:
        description: True if this campaign was deleted
        type: boolean
      email_list_uuid:
        description: Email list UUID
        type: string
      esp_list_segment_folder_uuid:
        description: List/Segment folder UUID
        type: string
      member_count:
        description: Count of members in this list
        type: integer
        format: int32
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email list
        type: string
        maxLength: 250
      public_description:
        description: Description of list shown to customer.
        type: string
      public_list:
        description: True if this list is public
        type: boolean
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      used_by:
        description: Details on the flows or campaigns that use this list.
        type: array
        items:
          $ref: '#/definitions/EmailListSegmentUsedBy'
  EmailListArchiveResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      list_in_use:
        type: boolean
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailListCustomer:
    type: object
    properties:
      add_dts:
        description: Added timestamp
        type: string
        format: dateTime
      email:
        description: Email
        type: string
      email_customer_uuid:
        description: Email customer UUID
        type: string
      email_list_member_uuid:
        description: Email list member UUID
        type: string
  EmailListCustomersResponse:
    type: object
    properties:
      customers:
        description: Customers on the page
        type: array
        items:
          $ref: '#/definitions/EmailListCustomer'
      page_number:
        description: Page number (one based offset)
        type: integer
        format: int32
      page_size:
        description: Number of records per page
        type: integer
        format: int32
      total_customers:
        description: Total customers
        type: integer
        format: int32
      total_pages:
        description: Total number of pages
        type: integer
        format: int32
  EmailListResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      list:
        $ref: '#/definitions/EmailList'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailListSegmentFolder:
    type: object
    properties:
      esp_list_segment_folder_uuid:
        description: Email list segment folder UUID
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email campaign folder
        type: string
        maxLength: 250
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      system_generated:
        description: System generated folder
        type: boolean
  EmailListSegmentFolderResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      list_segment_folder:
        $ref: '#/definitions/EmailListSegmentFolder'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailListSegmentFoldersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      list_segment_folders:
        type: array
        items:
          $ref: '#/definitions/EmailListSegmentFolder'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailListSegmentMembership:
    type: object
    properties:
      email_list_uuid:
        description: UUID identifying this email list or null if this is a segment
        type: string
      email_segment_uuid:
        description: UUID identifying this email segment or null if this is a list
        type: string
      exclude:
        description: true if customers from this list/segment is excluded from membership
        type: boolean
      name:
        description: Name of this email list or segment
        type: string
  EmailListSegmentUsedBy:
    type: object
    properties:
      email_campaign_uuid:
        description: Email campaign UUID
        type: string
      email_flow_uuid:
        description: Email flow UUID
        type: string
      name:
        description: Name of the list or segment.
        type: string
  EmailListsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      lists:
        type: array
        items:
          $ref: '#/definitions/EmailList'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailListSubscribeResponse:
    type: object
    properties:
      added:
        type: integer
        format: int32
      memberCount:
        type: integer
        format: int32
  EmailOrder:
    type: object
    properties:
      email:
        description: email
        type: string
      order_dts:
        description: order_dts
        type: string
        format: dateTime
      order_id:
        description: order_id
        type: string
      total:
        $ref: '#/definitions/Currency'
  EmailOrdersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      orders:
        type: array
        items:
          $ref: '#/definitions/EmailOrder'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailPerformance:
    type: object
    properties:
      active_customers:
        description: Active customers.  The value will be -1 if calculation is pending.
        type: integer
        format: int32
      actual_customers:
        description: Actual customers that they have regardless of active state.  The value will be -1 if calculation is pending.
        type: integer
        format: int32
      bounce_count:
        description: Bounce count
        type: integer
        format: int32
      bounce_percentage:
        description: bounce percentage rate based upon our look back window.  This should be under five percent or the account will be paused for sending.
        type: number
      bounce_percentage_formatted:
        description: bounce percentage rate (formatted) based upon our look back window.  This should be under five percent or the account will be paused for sending.
        type: string
      customer_histogram:
        $ref: '#/definitions/EmailPerformanceCustomerHistogram'
      daily_stats:
        description: Daily statistics used for charting
        type: array
        items:
          $ref: '#/definitions/EmailPerformanceDaily'
      delivered_count:
        description: Delivered count
        type: integer
        format: int32
      loyalty_program_type:
        description: Loyalty Program Type
        type: string
        enum: [
          "disabled",
          "points",
          "cashback"
        ]
      max_active_customers:
        description: Maximum active customers allowed under their billing plan
        type: integer
        format: int32
      max_emails_per_day:
        description: Max emails per day
        type: integer
        format: int32
      max_emails_per_hour:
        description: Max emails per hour
        type: integer
        format: int32
      max_emails_per_month:
        description: Max emails per month
        type: integer
        format: int32
      paused_for_spam:
        description: True if campaign/flow emails are paused due to spam complaints.
        type: boolean
      revenue:
        description: Revenue
        type: number
      sent_emails_per_day:
        description: Sent emails last 24 hours
        type: integer
        format: int32
      sent_emails_per_hour:
        description: Sent emails last hour
        type: integer
        format: int32
      sent_emails_per_month:
        description: Sent emails last 31 days
        type: integer
        format: int32
      sequence_send_count:
        description: Total sequence (campaign/flow) emails sent
        type: integer
        format: int32
      spam_count:
        description: Spam complaints
        type: integer
        format: int32
      spam_percentage:
        description: Spam percentage rate based upon our look back window.  This should be under one half a percent or the account will be paused for sending.
        type: number
      spam_percentage_formatted:
        description: Spam percentage rate (formatted) based upon our look back window.  This should be under one half a percent or the account will be paused for sending.
        type: string
      transactional_send_count:
        description: Total transactions emails sent
        type: integer
        format: int32
  EmailPerformanceCustomerHistogram:
    type: object
    properties:
      periods:
        description: Periods (newest to oldest)
        type: array
        items:
          $ref: '#/definitions/EmailPerformanceCustomerHistogramPeriod'
  EmailPerformanceCustomerHistogramPeriod:
    type: object
    properties:
      active:
        description: Active customers last active in this period
        type: integer
        format: int32
      inactive:
        description: Inactive customers last active in this period
        type: integer
        format: int32
      month:
        description: Month (1 = January)
        type: integer
        format: int32
      total:
        description: Total customers last active in this period
        type: integer
        format: int32
      year:
        description: Year (four digits)
        type: integer
        format: int32
  EmailPerformanceDaily:
    type: object
    properties:
      bounce_count:
        description: Bounce count
        type: integer
        format: int32
      delivered_count:
        description: Delivered count
        type: integer
        format: int32
      revenue:
        description: Revenue
        type: number
      sequence_send_count:
        description: Total sequence (campaign/flow) emails sent
        type: integer
        format: int32
      spam_count:
        description: Spam complaints
        type: integer
        format: int32
      stat_dts:
        description: The date that these statistcs are for
        type: string
        format: dateTime
      transactional_send_count:
        description: Total transactions emails sent
        type: integer
        format: int32
  EmailPerformanceResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      performance:
        $ref: '#/definitions/EmailPerformance'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailPlan:
    type: object
    properties:
      additional_customers:
        type: integer
        format: int32
      additional_emails:
        type: integer
        format: int32
      additional_fee:
        type: number
      allow_list_import:
        type: boolean
      allow_tracking_emails:
        type: boolean
      customer_tiers:
        type: array
        items:
          $ref: '#/definitions/EmailPlanAdditional'
      initial_sending_limits:
        type: integer
        format: int32
      plan_customers:
        type: integer
        format: int32
      plan_emails:
        type: integer
        format: int32
      plan_name:
        type: string
      plan_name_formatted:
        type: string
      require_order_within_last_days:
        type: integer
        format: int32
      revenue_percent:
        type: integer
        format: int32
      spam_percent_limit:
        type: integer
        format: int32
      total_customers:
        type: integer
        format: int32
      total_emails:
        type: integer
        format: int32
      upgrade_to:
        type: integer
        format: int32
  EmailPlanAdditional:
    type: object
    properties:
      active:
        type: boolean
      can_downgrade:
        type: boolean
      can_upgrade:
        type: boolean
      cost:
        type: number
      cost_change:
        type: number
      cost_change_formatted:
        type: string
      cost_formatted:
        type: string
      customers:
        type: integer
        format: int32
      emails:
        type: integer
        format: int32
  EmailPlanResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      plan:
        $ref: '#/definitions/EmailPlan'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailPostcardStat:
    type: object
    properties:
      click_count:
        description: Count of clicked emails
        type: integer
        format: int32
      click_count_formatted:
        description: Count of clicked emails, formatted
        type: string
      conversion_count:
        description: Count of conversions
        type: integer
        format: int32
      conversion_count_formatted:
        description: Count of conversions, formatted
        type: string
      delivered_count:
        description: Count of delivered emails
        type: integer
        format: int32
      delivered_count_formatted:
        description: Count of delivered emails, formatted
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: List or segment name
        type: string
      order_count:
        description: Count of orders
        type: integer
        format: int32
      order_count_formatted:
        description: Count of orders, formatted
        type: string
      profit:
        description: Profit
        type: number
      profit_formatted:
        description: Profit, formatted
        type: string
      return_to_sender_count:
        description: Count of return to sender
        type: integer
        format: int32
      return_to_sender_count_formatted:
        description: Count of return to sender, formatted
        type: string
      revenue:
        description: Revenue
        type: number
      revenue_formatted:
        description: Revenue, formatted
        type: string
      send_count:
        description: Count of emails sent
        type: integer
        format: int32
      send_count_formatted:
        description: Count of emails sent, formatted
        type: string
      skipped_count:
        description: Count of skipped emails
        type: integer
        format: int32
      skipped_count_formatted:
        description: Count of skipped emails, formatted
        type: string
      spam_count:
        description: Count of emails classified as spam
        type: integer
        format: int32
      spam_count_formatted:
        description: Count of emails classified as spam, formatted
        type: string
      stat_type:
        description: Campaign, Flow or None (for anything else)
        type: string
      status:
        description: Status of campaign or flow
        type: string
      status_dts:
        description: Status dts of campaign or flow
        type: string
      steps:
        type: array
        items:
          $ref: '#/definitions/EmailPostcardStat'
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      unsubscribe_count:
        description: Count of emails classified as unsubscribe
        type: integer
        format: int32
      unsubscribe_count_formatted:
        description: Count of emails classified as unsubscribe, formatted
        type: string
      uuid:
        description: List or segment uuid
        type: string
      view_count:
        description: Count of views
        type: integer
        format: int32
      view_count_formatted:
        description: Count of views, formatted
        type: string
  EmailPostcardTracking:
    type: object
    properties:
      commseq_postcard_uuid:
        type: string
      commseq_step_uuid:
        type: string
      commseq_uuid:
        type: string
      conversion_dts:
        description: Conversion date time.
        type: string
        format: dateTime
      cost:
        type: number
      customer_uuid:
        type: string
      delivered_dts:
        description: Delivered date time.
        type: string
        format: dateTime
      from_address_line1:
        type: string
      from_address_line2:
        type: string
      from_city:
        type: string
      from_name:
        type: string
      from_state:
        type: string
      from_zip:
        type: string
      mailed_dts:
        description: Mailed date time.
        type: string
        format: dateTime
      order_id:
        type: string
      postcard_tracking_uuid:
        type: string
      status:
        type: string
      submit_dts:
        description: Submit date time.
        type: string
        format: dateTime
      to_address_line1:
        type: string
      to_address_line2:
        type: string
      to_city:
        type: string
      to_name:
        type: string
      to_state:
        type: string
      to_zip:
        type: string
      tracking_description:
        type: string
  EmailPostcardTrackingResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      tracking:
        $ref: '#/definitions/EmailPostcardTracking'
      warning:
        $ref: '#/definitions/Warning'
  EmailRateLimiter:
    type: object
    properties:
      available:
        type: integer
        format: int32
      limit:
        type: integer
        format: int32
      name:
        type: string
  EmailRateLimitersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      rate_limiters:
        type: array
        items:
          $ref: '#/definitions/EmailRateLimiter'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSegment:
    type: object
    properties:
      allow_csv_download:
        description: True if the current user has the rights to download this segment.
        type: boolean
      allow_facebook_audiences:
        description: True if this StoreFront has the Facebook Analytics app connected and supports them
        type: boolean
      created_dts:
        description: Created date
        type: string
        format: dateTime
      deleted:
        description: True if this campaign was deleted
        type: boolean
      email_segment_uuid:
        description: Email segment UUID
        type: string
      esp_list_segment_folder_uuid:
        description: List/Segment folder UUID
        type: string
      facebook_custom_audience:
        description: True if you want to sync to a facebook custom audience
        type: boolean
      filter_profile_equation_json:
        description: File profile equation json
        type: string
      member_count:
        description: Count of members in this segment
        type: integer
        format: int32
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email segment
        type: string
        maxLength: 250
      rank_json:
        description: Rank settings json
        type: string
      rebuild_percentage:
        description: Percentage of completion for a rebuild.  The value range will be 0-1.  Multiply by 100 to format for display.
        type: number
      rebuild_required:
        description: True if a rebuild is required because some part of the segment has changed
        type: boolean
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      thirdparty_join_add_tags:
        description: Third party provider tags to add when a customer joins the segment.
        type: array
        items:
          type: string
      thirdparty_join_remove_tags:
        description: Third party provider tags to remove when a customer joins the segment.
        type: array
        items:
          type: string
      thirdparty_leave_add_tags:
        description: Third party provider tags to add when a customer leaves the segment.
        type: array
        items:
          type: string
      thirdparty_leave_remove_tags:
        description: Third party provider tags to remove when a customer leaves the segment.
        type: array
        items:
          type: string
      thirdparty_list_id:
        description: List id of third party provider to sync with.
        type: string
      thirdparty_provider_name:
        description: Name of third party provider to sync segment to a list with.
        type: string
      used_by:
        description: Details on the flows or campaigns that use this list.
        type: array
        items:
          $ref: '#/definitions/EmailListSegmentUsedBy'
  EmailSegmentArchiveResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      segment_in_use:
        type: boolean
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSegmentCustomer:
    type: object
    properties:
      add_dts:
        description: Added timestamp
        type: string
        format: dateTime
      email:
        description: Email
        type: string
      email_customer_uuid:
        description: Email customer UUID
        type: string
      email_segment_member_uuid:
        description: Email segment member UUID
        type: string
  EmailSegmentCustomersResponse:
    type: object
    properties:
      customers:
        description: Customers on the page
        type: array
        items:
          $ref: '#/definitions/EmailSegmentCustomer'
      page_number:
        description: Page number (one based offset)
        type: integer
        format: int32
      page_size:
        description: Number of records per page
        type: integer
        format: int32
      total_customers:
        description: Total customers
        type: integer
        format: int32
      total_pages:
        description: Total number of pages
        type: integer
        format: int32
  EmailSegmentDownloadPrepareResponse:
    type: object
    properties:
      email_segment_rebuild_uuid:
        type: string
      email_segment_uuid:
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      percentage_complete:
        type: number
      proceed:
        type: boolean
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSegmentResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      segment:
        $ref: '#/definitions/EmailSegment'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSegmentsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      segments:
        type: array
        items:
          $ref: '#/definitions/EmailSegment'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSendingDomainResponse:
    type: object
    properties:
      domain:
        $ref: '#/definitions/EmailDomain'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSendingDomainsResponse:
    type: object
    properties:
      domains:
        type: array
        items:
          $ref: '#/definitions/EmailDomain'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSettings:
    type: object
    properties:
      emails_per_day:
        description: Emails per day allowed
        type: integer
        format: int32
      emails_per_hour:
        description: Emails per hour allowed
        type: integer
        format: int32
      emails_per_month:
        description: Emails per month allowed
        type: integer
        format: int32
      marketing_esp_domain_user:
        type: string
      marketing_esp_domain_uuid:
        type: string
      marketing_esp_friendly_name:
        type: string
      postcard_from_address1:
        type: string
      postcard_from_address2:
        type: string
      postcard_from_city:
        type: string
      postcard_from_name:
        type: string
      postcard_from_postal_code:
        type: string
      postcard_from_state:
        type: string
      require_order_within_last:
        description: Require order within last
        type: integer
        format: int32
      reviews_io_configured:
        description: True if the Reviews.io integration is configured
        type: boolean
      sms_esp_twilio_uuid:
        type: string
      sms_phone_number:
        type: string
      transactional_esp_domain_user:
        type: string
      transactional_esp_domain_uuid:
        type: string
      transactional_esp_friendly_name:
        type: string
  EmailSettingsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      settings:
        $ref: '#/definitions/EmailSettings'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSmsOrder:
    type: object
    properties:
      email:
        description: email
        type: string
      order_dts:
        description: order_dts
        type: string
        format: dateTime
      order_id:
        description: order_id
        type: string
      total:
        $ref: '#/definitions/Currency'
  EmailSmsOrdersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      orders:
        type: array
        items:
          $ref: '#/definitions/EmailSmsOrder'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailSmsStat:
    type: object
    properties:
      click_count:
        description: Count of clicked emails
        type: integer
        format: int32
      click_count_formatted:
        description: Count of clicked emails, formatted
        type: string
      conversion_count:
        description: Count of conversions
        type: integer
        format: int32
      conversion_count_formatted:
        description: Count of conversions, formatted
        type: string
      deleted:
        description: True if campaign/flow has been archived
        type: boolean
      delivered_count:
        description: Count of delivered emails
        type: integer
        format: int32
      delivered_count_formatted:
        description: Count of delivered emails, formatted
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: List or segment name
        type: string
      order_count:
        description: Count of orders
        type: integer
        format: int32
      order_count_formatted:
        description: Count of orders, formatted
        type: string
      profit:
        description: Profit
        type: number
      profit_formatted:
        description: Profit, formatted
        type: string
      revenue:
        description: Revenue
        type: number
      revenue_formatted:
        description: Revenue, formatted
        type: string
      send_count:
        description: Count of emails sent
        type: integer
        format: int32
      send_count_formatted:
        description: Count of emails sent, formatted
        type: string
      skipped_count:
        description: Count of skipped emails
        type: integer
        format: int32
      skipped_count_formatted:
        description: Count of skipped emails, formatted
        type: string
      stat_type:
        description: Campaign, Flow or None (for anything else)
        type: string
      status:
        description: Status of campaign or flow
        type: string
      status_dts:
        description: Status dts of campaign or flow
        type: string
      step_uuid:
        description: Step UUID if the statistics are at the step/email level
        type: string
      steps:
        type: array
        items:
          $ref: '#/definitions/EmailSmsStat'
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      unsubscribe_count:
        description: Count of emails classified as unsubscribe
        type: integer
        format: int32
      unsubscribe_count_formatted:
        description: Count of emails classified as unsubscribe, formatted
        type: string
      uuid:
        description: List/Segment uuid, or Flow/Campaign uuid depending on level of stat aggregation.
        type: string
      view_count:
        description: Count of views
        type: integer
        format: int32
      view_count_formatted:
        description: Count of views, formatted
        type: string
  EmailStat:
    type: object
    properties:
      click_count:
        description: Count of clicked emails
        type: integer
        format: int32
      click_count_formatted:
        description: Count of clicked emails, formatted
        type: string
      conversion_count:
        description: Count of conversions
        type: integer
        format: int32
      conversion_count_formatted:
        description: Count of conversions, formatted
        type: string
      deleted:
        description: True if campaign/flow has been archived
        type: boolean
      delivered_count:
        description: Count of delivered emails
        type: integer
        format: int32
      delivered_count_formatted:
        description: Count of delivered emails, formatted
        type: string
      kickbox_count:
        description: Count of emails kicked
        type: integer
        format: int32
      kickbox_count_formatted:
        description: Count of emails kicked, formatted
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: List or segment name
        type: string
      open_count:
        description: Count of opened emails
        type: integer
        format: int32
      open_count_formatted:
        description: Count of opened emails, formatted
        type: string
      order_count:
        description: Count of orders
        type: integer
        format: int32
      order_count_formatted:
        description: Count of orders, formatted
        type: string
      permanent_bounce_count:
        description: Count of emails permanently bounced
        type: integer
        format: int32
      permanent_bounce_count_formatted:
        description: Count of emails permanently bounced, formatted
        type: string
      profit:
        description: Profit
        type: number
      profit_formatted:
        description: Profit, formatted
        type: string
      revenue:
        description: Revenue
        type: number
      revenue_formatted:
        description: Revenue, formatted
        type: string
      send_count:
        description: Count of emails sent
        type: integer
        format: int32
      send_count_formatted:
        description: Count of emails sent, formatted
        type: string
      skipped_count:
        description: Count of skipped emails
        type: integer
        format: int32
      skipped_count_formatted:
        description: Count of skipped emails, formatted
        type: string
      spam_count:
        description: Count of emails classified as spam
        type: integer
        format: int32
      spam_count_formatted:
        description: Count of emails classified as spam, formatted
        type: string
      stat_type:
        description: Campaign, Flow or None (for anything else)
        type: string
      status:
        description: Status of campaign or flow
        type: string
      status_dts:
        description: Status dts of campaign or flow
        type: string
      step_uuid:
        description: Step UUID if the statistics are at the step/email level
        type: string
      steps:
        type: array
        items:
          $ref: '#/definitions/EmailStat'
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      unsubscribe_count:
        description: Count of emails classified as unsubscribe
        type: integer
        format: int32
      unsubscribe_count_formatted:
        description: Count of emails classified as unsubscribe, formatted
        type: string
      uuid:
        description: List/Segment uuid, or Flow/Campaign uuid depending on level of stat aggregation.
        type: string
      view_count:
        description: Count of views
        type: integer
        format: int32
      view_count_formatted:
        description: Count of views, formatted
        type: string
  EmailStatPostcardSummaryRequest:
    type: object
    properties:
      commseq_postcard_uuids:
        type: array
        items:
          type: string
      days:
        type: integer
        format: int32
  EmailStatPostcardSummaryResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      stats:
        type: array
        items:
          $ref: '#/definitions/EmailPostcardStat'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailStatSmsSummaryRequest:
    type: object
    properties:
      commseq_step_uuids:
        type: array
        items:
          type: string
      days:
        type: integer
        format: int32
  EmailStatSmsSummaryResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      stats:
        type: array
        items:
          $ref: '#/definitions/EmailSmsStat'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailStatSummaryRequest:
    type: object
    properties:
      commseq_email_uuids:
        type: array
        items:
          type: string
      commseq_step_uuids:
        type: array
        items:
          type: string
      days:
        type: integer
        format: int32
  EmailStatSummaryResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      stats:
        type: array
        items:
          $ref: '#/definitions/EmailStat'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailStepStat:
    type: object
    properties:
      left_click_count:
        description: click count (left side)
        type: integer
        format: int32
      left_click_count_formatted:
        description: click count formatted (left side)
        type: string
      left_conversion_count:
        description: conversion count (left/default side)
        type: integer
        format: int32
      left_conversion_count_formatted:
        description: conversion count formatted (left/default side)
        type: string
      left_customer_count:
        description: customer count (left/default side)
        type: integer
        format: int32
      left_customer_count_formatted:
        description: customer count formatted (left/default side)
        type: string
      left_delivered_count:
        description: delivered count (left side)
        type: integer
        format: int32
      left_delivered_count_formatted:
        description: delivered count formatted (left side)
        type: string
      left_order_count:
        description: order count (left/default side)
        type: integer
        format: int32
      left_order_count_formatted:
        description: order count formatted (left/default side)
        type: string
      left_profit:
        description: profit (left/default side)
        type: number
      left_profit_formatted:
        description: profit formatted (left/default side)
        type: string
      left_revenue:
        description: revenue (left/default side)
        type: number
      left_revenue_formatted:
        description: revenue formatted (left/default side)
        type: string
      left_send_count:
        description: send count (left side)
        type: integer
        format: int32
      left_send_count_formatted:
        description: send count formatted (left side)
        type: string
      left_skipped_count:
        description: conversion count (left side)
        type: integer
        format: int32
      left_skipped_count_formatted:
        description: skipped count formatted (left side)
        type: string
      left_unsubscribe_count:
        description: unsubscribe count (left side)
        type: integer
        format: int32
      left_unsubscribe_count_formatted:
        description: unsubscribe count formatted (left side)
        type: string
      right_conversion_count:
        description: conversion count (right side)
        type: integer
        format: int32
      right_conversion_count_formatted:
        description: conversion count formatted (right side)
        type: string
      right_customer_count:
        description: customer count (right side)
        type: integer
        format: int32
      right_customer_count_formatted:
        description: customer count formatted (right side)
        type: string
      right_order_count:
        description: order count (right side)
        type: integer
        format: int32
      right_order_count_formatted:
        description: order count formatted (right side)
        type: string
      right_profit:
        description: profit (right side)
        type: number
      right_profit_formatted:
        description: profit formatted (right side)
        type: string
      right_revenue:
        description: revenue (right side)
        type: number
      right_revenue_formatted:
        description: revenue formatted (right side)
        type: string
  EmailStepStatRequest:
    type: object
    properties:
      commseq_step_uuids:
        type: array
        items:
          type: string
      days:
        type: integer
        format: int32
  EmailStepStatResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      stats:
        type: array
        items:
          $ref: '#/definitions/EmailStepStat'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailStepWaitingRequest:
    type: object
    properties:
      commseq_step_uuids:
        type: array
        items:
          type: string
  EmailStepWaitingResponse:
    type: object
    properties:
      step_waitings:
        type: array
        items:
          $ref: '#/definitions/StepWaiting'
  EmailTemplate:
    type: object
    properties:
      container_cjson:
        description: Container cjson
        type: string
      description:
        description: Description of email template
        type: string
      email_template_oid:
        description: Email template oid
        type: integer
        format: int32
      email_template_vm_path:
        description: Email Template VM Path
        type: string
      merchant_id:
        description: Merchant ID
        type: string
      name:
        description: Name of email template
        type: string
        maxLength: 250
      preview_amazon_listing_key:
        description: Amazon key for preview png image
        type: string
        maxLength: 250
      sort_order:
        description: Sort order (optional)
        type: integer
        format: int32
      storefront_oid:
        description: StoreFront oid
        type: integer
        format: int32
      system:
        description: True if this email template is system-wide,false if merchant specific
        type: boolean
      trigger_type:
        description: Trigger type
        type: string
        maxLength: 100
  EmailTemplatesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      templates:
        type: array
        items:
          $ref: '#/definitions/EmailTemplate'
      warning:
        $ref: '#/definitions/Warning'
  EmailThirdPartyList:
    type: object
    properties:
      id:
        description: id
        type: string
      name:
        description: name
        type: string
  EmailThirdPartyListImportRequest:
    type: object
    properties:
      providers:
        description: providers
        type: array
        items:
          $ref: '#/definitions/EmailThirdPartyProvider'
  EmailThirdPartyProvider:
    type: object
    properties:
      connect_url:
        description: URL to the settings screen to connect.  Null if the provider is already connected.
        type: string
      list_count:
        description: list_count
        type: integer
        format: int32
      lists:
        description: lists
        type: array
        items:
          $ref: '#/definitions/EmailThirdPartyList'
      logo_url:
        description: logo_url
        type: string
      name:
        description: name
        type: string
      supports_add_tags:
        description: True if this provider can support adding tags
        type: boolean
      supports_list_subscribe:
        description: True if this provider can support list subscribe
        type: boolean
      supports_list_unsubscribe:
        description: True if this provider can support list unsubscribe
        type: boolean
      supports_remove_tags:
        description: True if this provider can support remove tags
        type: boolean
      tag_count:
        description: tag_count
        type: integer
        format: int32
      tags:
        description: tags
        type: array
        items:
          $ref: '#/definitions/EmailThirdPartyTag'
  EmailThirdPartyProvidersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      providers:
        type: array
        items:
          $ref: '#/definitions/EmailThirdPartyProvider'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailThirdPartyTag:
    type: object
    properties:
      id:
        description: id
        type: string
      name:
        description: name
        type: string
  EmailVerifyTokenRequest:
    type: object
    properties:
      email:
        description: email
        type: string
      password:
        description: password
        type: string
  EmailVerifyTokenResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      token:
        description: token
        type: string
      warning:
        $ref: '#/definitions/Warning'
  EmailVerifyTokenValidateRequest:
    type: object
    properties:
      token:
        description: token
        type: string
  EmailVerifyTokenValidateResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  EmailWebhookEditorValuesResponse:
    type: object
    properties:
      available_expansions:
        type: array
        items:
          type: string
      available_tokens:
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      rest_object_type:
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Error:
    type: object
    properties:
      developer_message:
        description: A technical message meant to be read by a developer
        type: string
      error_code:
        description: HTTP status code
        type: string
      more_info:
        description: Additional information often a link to additional documentation
        type: string
      object_id:
        description: Object id that the error is associated with
        type: string
      user_message:
        description: An end-user friendly message suitable for display to the customer
        type: string
  ErrorResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Experiment:
    type: object
    properties:
      container_id:
        description: Contained ID where the experiment element was located
        type: string
      duration_days:
        description: Duration in days
        type: integer
        format: int32
      end_dts:
        description: End date/time
        type: string
        format: dateTime
      equal_weighting:
        description: Whether or not traffic is equally weighted or shifts over time during the experiment
        type: boolean
      experiment_type:
        description: The type of experiment
        type: string
      id:
        description: Experiment id
        type: string
      name:
        description: Experiment name
        type: string
      notes:
        description: Notes about the experiment
        type: string
      objective:
        description: Objective that is being optimized
        type: string
      objective_parameter:
        description: Objective parameter (such as event name) that is being optimized
        type: string
      openai_current_iteration:
        description: The current iteration of the OpenAI related experiment
        type: integer
        format: int32
      openai_element_type:
        description: The type of OpenAI element being experimented on
        type: string
        enum: [
          "headline",
          "text",
          "textblock"
        ]
      openai_model:
        description: The type of OpenAI model used
        type: string
      openai_total_iterations:
        description: The total number of iterations to perform on the experiment
        type: integer
        format: int32
      optimization_type:
        description: Type of optimization
        type: string
      p95_sessions_needed:
        description: Estimated sessions needed to achieve P95
        type: integer
        format: int32
      p_value:
        description: Statistics p-value for the experiment
        type: number
      session_count:
        description: Total number of sessions in the experiment
        type: integer
        format: int32
      start_dts:
        description: Start date/time
        type: string
        format: dateTime
      status:
        description: Status of the experiment
        type: string
        enum: [
          "Running",
          "Ended",
          "Deleted"
        ]
      storefront_experiment_oid:
        description: Storefront Experiment Oid
        type: integer
        format: int32
      storefront_oid:
        description: Storefront oid
        type: integer
        format: int32
      uri:
        description: URI the experiment was started on
        type: string
      variations:
        description: Variations being tested in the experiment
        type: array
        items:
          $ref: '#/definitions/ExperimentVariation'
  ExperimentResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      experiment:
        $ref: '#/definitions/Experiment'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ExperimentsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      experiments:
        type: array
        items:
          $ref: '#/definitions/Experiment'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ExperimentVariation:
    type: object
    properties:
      add_to_cart_count:
        description: Total add to cart count for this variation
        type: integer
        format: int32
      average_duration_seconds:
        description: Average duration seconds per session for this variation
        type: integer
        format: int32
      average_objective_per_session:
        description: Average objective value per session for this variation
        type: number
      average_order_value:
        description: Average order value for this variation
        type: number
      bounce_count:
        description: Total bounce count for this variation
        type: integer
        format: int32
      conversion_rate:
        description: Conversion rate for this variation
        type: number
      daily_statistics:
        description: Array of daily statistics for this variation
        type: array
        items:
          $ref: '#/definitions/ExperimentVariationStat'
      duration_seconds_sum:
        description: Total number of seconds spent on the site for this variation
        type: integer
        format: int64
      event_count:
        description: Total event ocunt for this variation
        type: integer
        format: int32
      initiate_checkout_count:
        description: Total initiate checkout count for this variation
        type: integer
        format: int32
      order_count:
        description: Total order count for this variation
        type: integer
        format: int32
      order_item_count:
        description: Total order item count for this variation
        type: integer
        format: int32
      original_traffic_percentage:
        description: Percentage of the traffic the variation originally started out with
        type: number
      page_view_count:
        description: Total page view count for this variation
        type: integer
        format: int32
      paused:
        description: True if traffic should be paused to this variation
        type: boolean
      revenue:
        description: Total revenue for this variation
        type: number
      session_count:
        description: Total sessions for this variation
        type: integer
        format: int32
      sms_opt_ins:
        description: SMS Opt Ins for this variation
        type: integer
        format: int32
      traffic_percentage:
        description: Percentage of the traffic this variation is currently receiving
        type: number
      url:
        description: Url of the variation if this experiment is a url experiment.
        type: string
      variation_name:
        description: Name of the variation
        type: string
      variation_number:
        description: Variation number
        type: integer
        format: int32
      winner:
        description: True if this variation has been declared the winner
        type: boolean
  ExperimentVariationStat:
    type: object
    properties:
      add_to_cart_count:
        description: Total add to cart count for this variation
        type: integer
        format: int32
      bounce_count:
        description: Total bounce count for this variation
        type: integer
        format: int32
      duration_seconds_sum:
        description: Total number of seconds spent on the site for this variation
        type: integer
        format: int64
      event_count:
        description: Total event count for this variation
        type: integer
        format: int32
      initiate_checkout_count:
        description: Total initiate checkout count for this variation
        type: integer
        format: int32
      order_count:
        description: Total order count for this variation
        type: integer
        format: int32
      order_ids:
        description: Order ID thats converted on this variation
        type: array
        items:
          type: string
      order_item_count:
        description: Total order item count for this variation
        type: integer
        format: int32
      page_view_count:
        description: Total page view count for this variation
        type: integer
        format: int32
      revenue:
        description: Total revenue for this variation
        type: number
      session_count:
        description: Total sessions for this variation
        type: integer
        format: int32
      sms_opt_in_count:
        description: Total SMS opt in count for this variation
        type: integer
        format: int32
      stat_dts:
        description: Date/time that the statistic was created
        type: string
        format: dateTime
  FileManagerDirectory:
    type: object
    properties:
      active_theme_directory:
        type: boolean
      favorite:
        type: boolean
      hostname:
        type: string
      icon:
        type: string
      last_modified:
        type: string
      name:
        type: string
      parent_storefront_fs_directory_oid:
        type: integer
        format: int32
      part_of_active_theme:
        type: boolean
      selected:
        type: boolean
      storefront_fs_directory_oid:
        type: integer
        format: int32
      storefront_fs_file_oid:
        type: integer
        format: int32
      storefront_oid:
        type: integer
        format: int32
      type:
        type: string
  FileManagerFile:
    type: object
    properties:
      favorite:
        type: boolean
      hostname:
        type: string
      i18n_violation:
        type: boolean
      icon:
        type: string
      internal_version:
        type: integer
        format: int32
      last_modified:
        type: string
      merge_conflict:
        type: boolean
      name:
        type: string
      parent_storefront_fs_directory_oid:
        type: integer
        format: int32
      part_of_active_theme:
        type: boolean
      path:
        type: string
      raw_size:
        type: integer
        format: int32
      selected:
        type: boolean
      size:
        type: string
      storefront_fs_directory_oid:
        type: integer
        format: int32
      storefront_fs_file_oid:
        type: integer
        format: int32
      storefront_oid:
        type: integer
        format: int32
      thumbnail_16_url:
        description: CDN thumbnail 16x16 size
        type: string
      thumbnail_32_url:
        description: CDN thumbnail 32x32 size
        type: string
      thumbnail_64_url:
        description: CDN thumbnail 64x64 size
        type: string
      type:
        type: string
      valid_velocity:
        type: string
  FileManagerPage:
    type: object
    properties:
      current_storefront_fs_directory_oid:
        type: integer
        format: int32
      directories:
        type: array
        items:
          $ref: '#/definitions/FileManagerDirectory'
      files:
        type: array
        items:
          $ref: '#/definitions/FileManagerFile'
      hostname:
        type: string
      parent_storefront_fs_directory_oid:
        type: integer
        format: int32
      path:
        type: string
      path_list:
        type: array
        items:
          $ref: '#/definitions/FileManagerDirectory'
      storefront_oid:
        type: integer
        format: int32
  FileManagerPageResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      file_manager_page:
        $ref: '#/definitions/FileManagerPage'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  FileManagerUploadRequest:
    type: object
    properties:
      filename:
        type: string
      key:
        type: string
      parent_storefront_fs_directory_oid:
        type: integer
        format: int32
  FileManagerUploadUrlResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      key:
        type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      url:
        type: string
      warning:
        $ref: '#/definitions/Warning'
  FulfillmentInventory:
    type: object
    properties:
      itemId:
        type: string
      quantity:
        type: number
  FulfillmentShipment:
    type: object
    properties:
      fulfillment_fee:
        description: Fees charged by the fulfillment company other than the shipping cost to process the order.
        type: number
      order_id:
        description: Order ID that was shipped
        type: string
      package_cost:
        description: The cost of the packaging used to sent this shipment
        type: number
      shipping_cost:
        description: The actual total cost of shipping this order
        type: number
      tracking_numbers:
        description: Tracking numbers associated with the shipment
        type: array
        items:
          type: string
  GeocodeRequest:
    type: object
    properties:
      address:
        description: address
        type: string
      city:
        description: city
        type: string
      country_code:
        description: country_code
        type: string
      postal_code:
        description: postal_code
        type: string
      state:
        description: state
        type: string
  GeocodeResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      latitude:
        type: number
      longitude:
        type: number
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  GeoPoint:
    type: object
    properties:
      lat:
        type: number
      lon:
        type: number
  GiftCertificate:
    type: object
    properties:
      activated:
        description: True if this gift certificate is activated and ready to apply to purchases.
        type: boolean
      code:
        description: The code used by the customer to purchase against this gift certificate.
        type: string
      customer_profile_oid:
        description: This is the customer profile oid associated with this internally managed gift certificate.
        type: integer
        format: int32
      deleted:
        description: True if this gift certificate was deleted.
        type: boolean
      email:
        description: Email of the customer associated with this gift certificate.
        type: string
        maxLength: 100
      expiration_dts:
        description: Expiration date time.
        type: string
        format: dateTime
      gift_certificate_oid:
        description: Gift certificate oid.
        type: integer
        format: int32
      internal:
        description: This is an internally managed gift certificate associated with the loyalty cash rewards program.
        type: boolean
      ledger_entries:
        description: A list of all ledger activity for this gift certificate.
        type: array
        items:
          $ref: '#/definitions/GiftCertificateLedgerEntry'
      merchant_id:
        description: Merchant Id
        type: string
      merchant_note:
        description: A list of all ledger activity for this gift certificate.
        type: string
      original_balance:
        description: Original balance of the gift certificate.
        type: number
      reference_order_id:
        description: The order used to purchase this gift certificate.  This value is ONLY set during checkout when a certificate is purchased, not when it is used.  Any usage is recorded in the ledger
        type: string
      remaining_balance:
        description: The remaining balance on the gift certificate.  This is never set directly, but calculated from the ledger.  To change the remaining balance, add a ledger entry.
        type: number
  GiftCertificateCreateRequest:
    type: object
    properties:
      amount:
        description: Initial amount of this gift certificate.
        type: number
      email:
        description: The email address (customer/owner) associated with this gift certificate.
        type: string
      expiration_dts:
        description: Expiration date time.
        type: string
        format: dateTime
      initial_ledger_description:
        description: A brief description of how and/or why this gift certificate was created.
        type: string
      merchant_note:
        description: Any internal details you wish to record about this gift certificate.
        type: string
  GiftCertificateLedgerEntry:
    type: object
    properties:
      amount:
        description: The amount of the activity.
        type: number
      description:
        description: Description of what this ledger entry is used.
        type: string
        maxLength: 50
      entry_dts:
        description: Date time of this ledger activity.
        type: string
        format: dateTime
      gift_certificate_ledger_oid:
        description: Gift certificate ledger oid is a primary key for this object, used internally.
        type: integer
        format: int32
      gift_certificate_oid:
        description: Gift certificate oid.
        type: integer
        format: int32
      reference_order_id:
        description: The order id if this gift certificate was used as part of the payment.
        type: string
  GiftCertificateQuery:
    type: object
    properties:
      code:
        description: Gift certificate code
        type: string
      email:
        description: Email address of this gift certificate
        type: string
      expiration_dts_end:
        description: Expiration date end
        type: string
        format: dateTime
      expiration_dts_start:
        description: Expiration date start
        type: string
        format: dateTime
      original_balance_end:
        description: Original balance end
        type: number
      original_balance_start:
        description: Original balance start
        type: number
      reference_order_id:
        description: Gift certificate reference order id
        type: string
      remaining_balance_end:
        description: Remaining balance end
        type: number
      remaining_balance_start:
        description: Remaining balance start
        type: number
  GiftCertificateResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      gift_certificate:
        $ref: '#/definitions/GiftCertificate'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  GiftCertificatesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      gift_certificates:
        type: array
        items:
          $ref: '#/definitions/GiftCertificate'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Group:
    type: object
    properties:
      group_oid:
        description: The unique object identifier (oid for short) for this group
        type: integer
        format: int32
      name:
        description: The name of this group.
        type: string
      notifications:
        description: A list of notifications the user receives.
        type: array
        items:
          $ref: '#/definitions/Notification'
      permissions:
        description: A list of permissions the user enjoys for accessing the backend of UltraCart.
        type: array
        items:
          $ref: '#/definitions/Permission'
      users:
        description: A list of users that belong to this group.
        type: array
        items:
          $ref: '#/definitions/GroupUserMembership'
  GroupResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      group:
        $ref: '#/definitions/Group'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  GroupsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      groups:
        type: array
        items:
          $ref: '#/definitions/Group'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  GroupUserMembership:
    type: object
    properties:
      email:
        description: The email for this user.
        type: string
      fullName:
        description: The full name for this user.
        type: string
      login:
        description: The login for this user.
        type: string
      member:
        description: True if this user belongs to the parent group, false otherwise.
        type: boolean
      user_id:
        description: The user id for this user.
        type: integer
        format: int32
  HitPageView:
    type: object
    properties:
      bounce:
        type: boolean
      meta_data:
        type: array
        items:
          $ref: '#/definitions/HitPageViewMetaData'
      method:
        type: string
      prefetch:
        type: boolean
      query:
        type: string
      recording:
        type: boolean
      redirect:
        type: boolean
      referrer:
        type: string
      time_on_page:
        type: number
      title:
        type: string
      url:
        type: string
  HitPageViewMetaData:
    type: object
    properties:
      key:
        type: string
      value:
        type: string
  HitSessionStart:
    type: object
    properties:
      bot:
        type: boolean
      bounce:
        type: boolean
      channel:
        type: string
      device_switch_detected:
        type: boolean
      fake_bot:
        type: boolean
      geolocation_country:
        type: string
      geolocation_latitude:
        type: number
      geolocation_longitude:
        type: number
      geolocation_province:
        type: string
      no_cookie_support:
        type: boolean
      prefetch:
        type: boolean
      referrer:
        type: string
      screen_height:
        type: integer
        format: int32
      screen_width:
        type: integer
        format: int32
      time_on_Site:
        type: number
      user_agent:
        type: string
      user_ip:
        type: string
  HitSessionUtm:
    type: object
    properties:
      fb_ad_id:
        type: string
      fbclid:
        type: string
      gbraid:
        type: string
      gclid:
        type: string
      msclkid:
        type: string
      ttclid:
        type: string
      uc_message_id:
        type: string
      utm_campaign:
        type: string
      utm_content:
        type: string
      utm_id:
        type: string
      utm_medium:
        type: string
      utm_source:
        type: string
      utm_term:
        type: string
      vmcid:
        type: string
      wbraid:
        type: string
  HTTPHeader:
    type: object
    properties:
      name:
        description: Name of the HTTP header
        type: string
      value:
        description: Value of the HTTP header
        type: string
  IntegrationLog:
    type: object
    properties:
      action:
        type: string
      auto_order_oids:
        type: array
        items:
          type: integer
      direction:
        type: string
      email:
        type: string
      files:
        type: array
        items:
          $ref: '#/definitions/IntegrationLogFile'
      integration_log_oid:
        type: integer
        format: int32
      item_id:
        type: string
      item_ipn_oid:
        type: integer
        format: int32
      log_dts:
        description: Date/time the integration log was created
        type: string
        format: dateTime
      log_type:
        type: string
      logger_id:
        type: string
      logger_name:
        type: string
      logs:
        type: array
        items:
          $ref: '#/definitions/IntegrationLogLog'
      omit_log_map:
        type: boolean
      order_ids:
        type: array
        items:
          type: string
      pk:
        type: string
      sk:
        type: string
      status:
        type: string
      status_code:
        type: integer
        format: int32
  IntegrationLogFile:
    type: object
    properties:
      mime_type:
        type: string
      name:
        type: string
      size:
        type: integer
        format: int32
      uuid:
        type: string
  IntegrationLogLog:
    type: object
    properties:
      contents:
        type: string
      name:
        type: string
  IntegrationLogQueryFilterValues:
    type: object
    properties:
      actions:
        type: array
        items:
          type: string
      directions:
        type: array
        items:
          type: string
      emails:
        type: array
        items:
          type: string
      file_names:
        type: array
        items:
          type: string
      item_ids:
        type: array
        items:
          type: string
      item_ipn_oids:
        type: array
        items:
          type: integer
      log_dts_max:
        description: Maximum date/time log date/time
        type: string
        format: dateTime
      log_dts_min:
        description: Minimum date/time log date/time
        type: string
        format: dateTime
      log_types:
        type: array
        items:
          type: string
      logger_names:
        type: array
        items:
          type: string
      order_ids:
        type: array
        items:
          type: string
      statuses:
        type: array
        items:
          type: string
  IntegrationLogQueryRequest:
    type: object
    properties:
      action:
        type: string
      auto_order_ids:
        type: array
        items:
          type: string
      auto_order_oids:
        type: array
        items:
          type: integer
      direction:
        type: string
      email:
        type: string
      file_names:
        type: array
        items:
          type: string
      integration_log_oid:
        type: integer
        format: int32
      item_id:
        type: string
      item_ipn_oid:
        type: integer
        format: int32
      log_dts_begin:
        description: Log date/time begin
        type: string
        format: dateTime
      log_dts_end:
        description: Log date/time end
        type: string
        format: dateTime
      log_type:
        type: string
      logger_id:
        type: string
      logger_name:
        type: string
      order_ids:
        type: array
        items:
          type: string
      status:
        type: string
  IntegrationLogQueryResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      filter_values:
        $ref: '#/definitions/IntegrationLogQueryFilterValues'
      integration_logs:
        type: array
        items:
          $ref: '#/definitions/IntegrationLog'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  IntegrationLogResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      integration_log:
        $ref: '#/definitions/IntegrationLog'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  IntegrationLogSummary:
    type: object
    properties:
      critical:
        type: integer
        format: int32
      error:
        type: integer
        format: int32
      events:
        type: integer
        format: int32
      log_type:
        type: string
      logger_id:
        type: string
      logger_name:
        type: string
      success:
        type: integer
        format: int32
      view_url:
        type: string
      warning:
        type: integer
        format: int32
  IntegrationLogSummaryQueryRequest:
    type: object
    properties:
      log_dts_begin:
        description: Log date/time begin
        type: string
        format: dateTime
      log_dts_end:
        description: Log date/time end
        type: string
        format: dateTime
  IntegrationLogSummaryQueryResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      integration_log_summaries:
        type: array
        items:
          $ref: '#/definitions/IntegrationLogSummary'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Item:
    type: object
    properties:
      accounting:
        $ref: '#/definitions/ItemAccounting'
      amember:
        $ref: '#/definitions/ItemAmember'
      auto_order:
        $ref: '#/definitions/ItemAutoOrder'
      ccbill:
        $ref: '#/definitions/ItemCCBill'
      channel_partner_item_mappings:
        description: Channel Partner Item Mapping
        type: array
        items:
          $ref: '#/definitions/ItemChannelPartnerMapping'
      chargeback:
        $ref: '#/definitions/ItemChargeback'
      checkout:
        $ref: '#/definitions/ItemCheckout'
      content:
        $ref: '#/definitions/ItemContent'
      creation_dts:
        description: Date/time of creation
        type: string
        format: dateTime
      description:
        description: Description of the item up to 500 characters.
        type: string
        maxLength: 512
      description_translated_text_instance_oid:
        description: Description translated text instance id
        type: integer
        format: int32
      digital_delivery:
        $ref: '#/definitions/ItemDigitalDelivery'
      ebay:
        $ref: '#/definitions/ItemEbay'
      email_notifications:
        $ref: '#/definitions/ItemEmailNotifications'
      enrollment123:
        $ref: '#/definitions/ItemEnrollment123'
      fulfillment_addons:
        description: Fulfillment Add-ons
        type: array
        items:
          $ref: '#/definitions/ItemFulfillmentAddon'
      gift_certificate:
        $ref: '#/definitions/ItemGiftCertificate'
      google_product_search:
        $ref: '#/definitions/ItemGoogleProductSearch'
      identifiers:
        $ref: '#/definitions/ItemIdentifiers'
      inactive:
        description: True if this item is inactive and can not be purchased
        type: boolean
      instant_payment_notifications:
        $ref: '#/definitions/ItemInstantPaymentNotifications'
      internal:
        $ref: '#/definitions/ItemInternal'
      kit:
        description: True if this item is a kit
        type: boolean
      kit_component_only:
        description: True if this item can only be usd as a kit component
        type: boolean
      kit_definition:
        $ref: '#/definitions/ItemKitDefinition'
      last_modified_dts:
        description: Date/time of last modification
        type: string
        format: dateTime
      merchant_id:
        description: UltraCart merchant ID owning item
        type: string
        maxLength: 5
      merchant_item_id:
        description: Unique item id assigned to this item
        type: string
        maxLength: 20
      merchant_item_oid:
        description: Unique object identifier for this item
        type: integer
        format: int32
      options:
        description: Options
        type: array
        items:
          $ref: '#/definitions/ItemOption'
      parent_category_id:
        description: Parent category of the item.  Zero indicates the root folder.
        type: integer
        format: int32
      parent_category_path:
        description: Parent category path.  / indicates the root folder.  This is the folder structure within item management.
        type: string
      payment_processing:
        $ref: '#/definitions/ItemPaymentProcessing'
      physical:
        $ref: '#/definitions/ItemPhysical'
      pricing:
        $ref: '#/definitions/ItemPricing'
      properties:
        description: Properties
        type: array
        items:
          $ref: '#/definitions/ItemProperty'
      realtime_pricing:
        $ref: '#/definitions/ItemRealtimePricing'
      recommend_replenishment_days:
        description: Number of days to recommend replenishment after.  Null is not configured.  Set to zero to disable.
        type: integer
        format: int32
      related:
        $ref: '#/definitions/ItemRelated'
      reporting:
        $ref: '#/definitions/ItemReporting'
      restriction:
        $ref: '#/definitions/ItemRestriction'
      revguard:
        $ref: '#/definitions/ItemRevguard'
      reviews:
        $ref: '#/definitions/ItemReviews'
      salesforce:
        $ref: '#/definitions/ItemSalesforce'
      shipping:
        $ref: '#/definitions/ItemShipping'
      tags:
        $ref: '#/definitions/ItemTags'
      tax:
        $ref: '#/definitions/ItemTax'
      third_party_email_marketing:
        description: 3rd Party Email Marketing
        type: array
        items:
          $ref: '#/definitions/ItemThirdPartyEmailMarketing'
      variant_items:
        description: Variant Items
        type: array
        items:
          $ref: '#/definitions/ItemVariantItem'
      variations:
        description: Variations
        type: array
        items:
          $ref: '#/definitions/ItemVariation'
      wishlist_member:
        $ref: '#/definitions/ItemWishlistMember'
  ItemAccounting:
    type: object
    properties:
      accounting_code:
        description: QuickBooks item name if different than the item id
        type: string
        maxLength: 50
      qb_class:
        description: QuickBooks class if you are classifying items on your invoices/receipts
        type: string
        maxLength: 31
  ItemAmember:
    type: object
    properties:
      amember_payment_duration_days:
        description: The number of days that the customer should be given access to the item
        type: integer
        format: int32
      amember_product_id:
        description: A-member product id give customer access to when they purchase this item
        type: string
        maxLength: 10
  ItemAutoOrder:
    type: object
    properties:
      auth_future_amount:
        description: Amount to try and authorize for the future rebill
        type: number
      auth_test_amount:
        description: Amount to try and test authorize
        type: number
      auto_order_cancel_charge_minimum_balance:
        description: If true, the cost of the cancel item will be the remaining balance of the minimum rebill or lifetime value
        type: boolean
      auto_order_cancel_item_id:
        description: Item id to attempt charging the customer for if they cancel
        type: string
        maxLength: 20
      auto_order_cancel_item_oid:
        description: Item object identifier to attempt charging the customer for if they cancel
        type: integer
        format: int32
      auto_order_cancel_minimum_life_time_count:
        description: The minimum life time count that must be billed in order to not be charged the cancellation item.
        type: integer
        format: int32
      auto_order_cancel_minimum_life_time_value:
        description: The minimum life time value that must be paid in order to not be charged the cancellation item.
        type: number
      auto_order_cancel_minimum_rebill_count:
        description: The minimum rebill count that must be billed in order to not be charged the cancellation item.
        type: integer
        format: int32
      auto_order_cancel_minimum_rebill_value:
        description: The minimum rebill value that must be paid in order to not be charged the cancellation item.
        type: number
      auto_order_downgrade_items:
        description: List of downgrade items presented to customer service representatives
        type: array
        items:
          type: string
      auto_order_paused:
        description: True if the rebill processing of this item is paused
        type: boolean
      auto_order_prohibit_expiring_cards:
        description: Minimum number of months before expiration for the card.  Overrides the account level setting if higher.  Set to zero to disable.
        type: integer
        format: int32
      auto_order_schedules:
        description: The user selectable schedules that are available
        type: array
        items:
          type: string
      auto_order_upgrade_items:
        description: List of upgrade items presented to customer service representatives
        type: array
        items:
          type: string
      auto_order_upsell:
        description: True if this item uses a fixed upsell step schedule
        type: boolean
      auto_order_upsell_no_easy_cancel:
        description: Do not send the easy cancel email to the customer
        type: boolean
      auto_order_upsell_one_per_customer:
        description: Limit the purchase of this item to one per customer
        type: boolean
      auto_orderable:
        description: True if this item can be automatically ordered by the customer
        type: boolean
      cancel_other_auto_orders:
        description: True if other auto orders for this customer should be canceled when this item is ordered
        type: boolean
      free_shipping_auto_order:
        description: True if the customer should be given free shipping
        type: boolean
      refund_other_auto_orders:
        description: True if other auto orders for this customer should refunded if this item is refunded.
        type: boolean
      steps:
        description: The rebill steps if this auto order is an upsell
        type: array
        items:
          $ref: '#/definitions/ItemAutoOrderStep'
  ItemAutoOrderStep:
    type: object
    properties:
      arbitrary_schedule_days:
        description: If the schedule is arbitrary, then this is the number of days
        type: integer
        format: int32
      arbitrary_unit_cost:
        description: Arbitrary unit cost used to override the regular item cost
        type: number
      arbitrary_unit_cost_schedules:
        description: Arbitrary unit costs schedules for more advanced discounting by rebill attempt
        type: array
        items:
          $ref: '#/definitions/ItemAutoOrderStepArbitraryUnitCostSchedule'
      grandfather_pricing:
        description: Grand-father pricing configuration if the rebill schedule has changed over time
        type: array
        items:
          $ref: '#/definitions/ItemAutoOrderStepGrandfatherPricing'
      managed_by:
        description: Managed by (defaults to UltraCart)
        type: string
      pause_days:
        description: Number of days to pause
        type: integer
        format: int32
      pause_until_date:
        description: Wait for this step to happen until the specified date
        type: string
        format: dateTime
      pause_until_day_of_month:
        description: Pause until a specific day of the month
        type: integer
        format: int32
      pause_until_minimum_delay_days:
        description: Pause at least this many days between the last order and the calculated next day of month
        type: integer
        format: int32
      preshipment_notice_days:
        description: If set, a pre-shipment notice is sent to the customer this many days in advance
        type: integer
        format: int32
      recurring_merchant_item_id:
        description: Item id to rebill
        type: string
        maxLength: 20
      recurring_merchant_item_oid:
        description: Item object identifier to rebill
        type: integer
        format: int32
      repeat_count:
        description: Number of times to rebill.  Last step can be null for infinite
        type: integer
        format: int32
      schedule:
        description: Frequency of the rebill
        type: string
      subscribe_email_list_name:
        description: Email list name to subscribe the customer to when the rebill occurs (decommissioned email engine)
        type: string
      subscribe_email_list_oid:
        description: Email list identifier to subscribe the customer to when this rebill occurs (decommissioned email engine)
        type: integer
        format: int32
      type:
        description: Type of step (item, kit only, loop or pause)
        type: string
        enum: [
          "item",
          "pause",
          "loop",
          "kit only",
          "pause until"
        ]
  ItemAutoOrderStepArbitraryUnitCostSchedule:
    type: object
    properties:
      arbitrary_unit_cost:
        description: Arbitrary unit cost
        type: number
      retry_days:
        description: Retry days
        type: integer
        format: int32
  ItemAutoOrderStepGrandfatherPricing:
    type: object
    properties:
      on_or_before_date:
        description: On or before date
        type: string
        format: dateTime
      unit_cost:
        description: Unit cost
        type: number
  ItemCCBill:
    type: object
    properties:
      ccbill_allowed_currencies:
        description: Allowed currencies
        type: string
      ccbill_allowed_types:
        description: Allowed types
        type: string
      ccbill_currency_code:
        description: Currency code
        type: string
      ccbill_form_name:
        description: Form name
        type: string
      ccbill_subaccount_id:
        description: Sub-account id
        type: string
      ccbill_subscription_type_id:
        description: Subscription type id
        type: string
  ItemChannelPartnerMapping:
    type: object
    properties:
      barcode_ua:
        description: Barcode UA (EDI only)
        type: string
      barcode_uc:
        description: Barcode UC (EDI only)
        type: string
      barcode_ui:
        description: Barcode UI (EDI only)
        type: string
      barcode_uk:
        description: Barcode UK (EDI only)
        type: string
      buyer_catalog_number:
        description: Buyer catalog number (EDI only)
        type: string
      buyer_dpci:
        description: Buyer DPCI (EDI only)
        type: string
      buyer_item_number:
        description: Buyer item number (EDI only)
        type: string
      channel_partner_code:
        description: Channel partner code
        type: string
      channel_partner_oid:
        description: Channel partner object identifier
        type: integer
        format: int32
      cost:
        description: Cost given to this channel partner
        type: number
      from_item_id:
        description: From Item ID
        type: string
        maxLength: 30
      from_sku:
        description: From SKU
        type: string
        maxLength: 50
      mutually_defined_number:
        description: Mutually defined number (EDI only)
        type: string
      quantity_ratio_cp:
        description: Ratio (Channel Partner)
        type: integer
        format: int32
      quantity_ratio_uc:
        description: Ratio (UltraCart)
        type: integer
        format: int32
      sku:
        description: SKU
        type: string
        maxLength: 50
      unit_of_measure:
        description: Unit of measure
        type: string
      vendor_number:
        description: Vendor number (EDI only)
        type: string
      vendor_style_number:
        description: Vendor style number (EDI only)
        type: string
  ItemChargeback:
    type: object
    properties:
      addendums:
        description: Addendums (deprecated)
        type: array
        items:
          $ref: '#/definitions/ItemChargebackAddendum'
      adjustment_requests:
        description: Adjustment requests (deprecated)
        type: array
        items:
          $ref: '#/definitions/ItemChargebackAdjustmentRequest'
  ItemChargebackAddendum:
    type: object
    properties:
      chargeback_addendum_oid:
        description: Chargeback addendum object identifier
        type: integer
        format: int32
      description:
        description: Description
        type: string
      file_size:
        description: Size of the file
        type: integer
        format: int32
      pages:
        description: Number of pages
        type: integer
        format: int32
  ItemChargebackAdjustmentRequest:
    type: object
    properties:
      chargeback_adjustment_request_oid:
        description: Chargeback adjustment request object identifier
        type: integer
        format: int32
      description:
        description: Description
        type: string
      reason_code:
        description: Reason code
        type: string
  ItemCheckout:
    type: object
    properties:
      suppress_buysafe:
        description: True to suppress buySAFE (deprecated)
        type: boolean
      terms:
        description: Terms for purchasing this item
        type: string
        maxLength: 10000
      terms_if_auto_order:
        description: Terms only apply if the item is on auto order
        type: boolean
      terms_translated_text_instance_oid:
        description: Terms translated text instance identifier
        type: integer
        format: int32
  ItemContent:
    type: object
    properties:
      assignments:
        description: StoreFront assignments
        type: array
        items:
          $ref: '#/definitions/ItemContentAssignment'
      attributes:
        description: StoreFront attributes
        type: array
        items:
          $ref: '#/definitions/ItemContentAttribute'
      custom_thank_you_url:
        description: Custom Thank You URL
        type: string
      exclude_from_search:
        description: Exclude from search
        type: boolean
      exclude_from_sitemap:
        description: Exclude from the sitemap for the StoreFront
        type: boolean
      exclude_from_top_sellers:
        description: Exclude from the top sellers list in the StoreFront
        type: boolean
      extended_description:
        description: Extended description (max 10000 characters)
        type: string
        maxLength: 10000
      extended_description_translated_text_instance_oid:
        description: Extended description text translation instance identifier
        type: integer
        format: int32
      meta_description:
        description: SEO meta description used by Storefronts
        type: string
      meta_keywords:
        description: SEO meta keywords used by Storefronts
        type: string
      meta_title:
        description: SEO meta title used by Storefronts
        type: string
      multimedia:
        description: Multimedia
        type: array
        items:
          $ref: '#/definitions/ItemContentMultimedia'
      new_item:
        description: True if the item is new
        type: boolean
      new_item_end:
        description: The date the item should no longer be considered new
        type: string
        format: dateTime
      new_item_start:
        description: The date the item should start being considered new
        type: string
        format: dateTime
      view_url:
        description: Legacy view URL (not used by StoreFronts)
        type: string
  ItemContentAssignment:
    type: object
    properties:
      default_assignment:
        description: True if this group is the default assignment for this item
        type: boolean
        maxLength: 150
      group_oid:
        description: Page (group) object identifier
        type: integer
        format: int32
      group_path:
        description: Page (group) path
        type: string
      host:
        description: StoreFront host name
        type: string
      sort_order:
        description: Sort order (optional)
        type: integer
        format: int32
      url_part:
        description: URL part if the item id is not used
        type: string
        maxLength: 150
  ItemContentAttribute:
    type: object
    properties:
      name:
        description: Attribute name
        type: string
        maxLength: 400
      translated_text_instance_oid:
        description: Attribute translated text instance identifier
        type: integer
        format: int32
      type:
        description: Attribute type
        type: string
      value:
        description: Attribute value
        type: string
        maxLength: 100000
  ItemContentMultimedia:
    type: object
    properties:
      cloud_url:
        description: URL where the image can be downloaded from the cloud
        type: string
      cloud_url_expiration:
        description: Expiration date of the cloud URL
        type: string
        format: dateTime
      code:
        description: Code assigned to the file
        type: string
        maxLength: 20
      description:
        description: Description
        type: string
        maxLength: 50000
      exclude_from_gallery:
        description: True to exclude from multimedia gallery
        type: boolean
      file_name:
        description: File name
        type: string
        maxLength: 75
      height:
        description: Height of the image
        type: integer
        format: int32
      merchant_item_multimedia_oid:
        description: Item multimedia object identifier
        type: integer
        format: int32
      orphan:
        description: True if the multimedia is an orphan of the active StoreFront themes
        type: boolean
      placeholder:
        description: True if the object is a place holder that can be populated
        type: boolean
      temp_multimedia_oid:
        description: Temporary multimedia object identifier assigned if uploading new multimedia
        type: integer
        format: int32
      thumbnails:
        description: Thumbnails of this image
        type: array
        items:
          $ref: '#/definitions/ItemContentMultimediaThumbnail'
      type:
        description: Type of file
        type: string
        enum: [
          "Image",
          "PDF",
          "Text",
          "Unknown",
          "Video"
        ]
      url:
        description: URL to download file (on new multimedia record this can be a URL for UltraCart to fetch)
        type: string
      width:
        description: Width of the image
        type: integer
        format: int32
  ItemContentMultimediaThumbnail:
    type: object
    properties:
      height:
        description: Height of the thumbnail
        type: integer
        format: int32
      http_url:
        description: HTTP URL to view the thumbnail
        type: string
      https_url:
        description: HTTPS URL to view the thumbnail
        type: string
      png_format:
        description: True if PNG, false if JPEG
        type: boolean
      square:
        description: True if the thumbnail is square
        type: boolean
      width:
        description: Width of the thumbnail
        type: integer
        format: int32
  ItemDigitalDelivery:
    type: object
    properties:
      activation_code_description:
        description: Description of the activation code
        type: string
        maxLength: 50
      activation_code_low_warning:
        description: The number of activation codes whcih should generate a warning email
        type: integer
        format: int32
      activation_code_realtime_url:
        description: The URL to retrieve activation codes from in real-time
        type: string
        maxLength: 350
      activation_code_shared_secret:
        description: Shared secret used when communicating with the real-time URL
        type: string
        maxLength: 20
      activation_code_type:
        description: Type of activation code
        type: string
      digital_items:
        description: Digital items that customer can download when this item is purchased
        type: array
        items:
          $ref: '#/definitions/ItemDigitalItem'
  ItemDigitalItem:
    type: object
    properties:
      click_wrap_agreement:
        description: Click wrap agreement is presented to the customer before they can purchase your product.
        type: string
      creation_dts:
        description: File creation date
        type: string
        format: dateTime
      description:
        description: Description of the digital item
        type: string
        maxLength: 200
      digital_item_oid:
        description: The Digital item oid is a primary key used internally by UltraCart.  You should not set or change this value.  Doing so will have no effect.
        type: integer
        format: int32
      external_id:
        description: External Id useful for syncing with a remote filesystem, this may be an MD5 hash or whatever suits your needs.
        type: string
        maxLength: 100
      file_size:
        description: File size
        type: integer
        format: int64
      import_from_url:
        description: This url is sourced to create or update a digital file in your digital library.  It is only considered during an insert or update operation.
        type: string
      mime_type:
        description: Mime type associated with the file
        type: string
        maxLength: 100
      original_filename:
        description: Original filename
        type: string
        maxLength: 250
      pdf_meta:
        $ref: '#/definitions/ItemDigitalItemPdfMeta'
  ItemDigitalItemPdfMeta:
    type: object
    properties:
      assembly_allowed:
        description: Assembly allowed
        type: boolean
      copy_allowed:
        description: Copy/Paste is allowed
        type: boolean
      custom_footer:
        description: A custom footer for each pdf page
        type: string
        maxLength: 8000
      custom_header:
        description: A custom header for each pdf page
        type: string
        maxLength: 8000
      degraded_printing_allowed:
        description: Degraded printing allowed
        type: boolean
      fillin_allowed:
        description: Fillin is allowed
        type: boolean
      modify_annotations_allowed:
        description: Modifying annotations is allowed
        type: boolean
      modify_contents_allowed:
        description: Modifying contents is allowed
        type: boolean
      printing_allowed:
        description: Printing is allowed
        type: boolean
      screen_readers_allowed:
        description: Screen readers are allowed
        type: boolean
      tagged:
        description: PDF is tagged
        type: boolean
  ItemDigitalItemResponse:
    type: object
    properties:
      digital_item:
        $ref: '#/definitions/ItemDigitalItem'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemDigitalItemsResponse:
    type: object
    properties:
      digital_items:
        description: digital_items
        type: array
        items:
          $ref: '#/definitions/ItemDigitalItem'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemEbay:
    type: object
    properties:
      active:
        description: True if the item is active for listing
        type: boolean
      category_id:
        description: e-Bay category ID
        type: integer
        format: int32
      category_specifics:
        description: Answers to category specific questions
        type: array
        items:
          $ref: '#/definitions/ItemEbayCategorySpecific'
      condition_description:
        description: Description of the condition (e-Bay constant)
        type: string
      condition_id:
        description: Numerical ID of the condition (e-Bay constant)
        type: integer
        format: int32
      consecutive_failures:
        description: Number of consecutive failures trying to list this item
        type: integer
        format: int32
      custom_category1:
        description: e-Bay Store category 1
        type: integer
        format: int64
      custom_category2:
        description: e-Bay Store category 2
        type: integer
        format: int64
      dispatch_time_max:
        description: Maximum number of days it will take to ship the item
        type: integer
        format: int32
      domestic_1_additional_cost:
        description: Domestic 1 method additional item cost
        type: number
      domestic_1_first_cost:
        description: Domestic 1 method first item cost
        type: number
      domestic_2_additional_cost:
        description: Domestic 2 method additional item cost
        type: number
      domestic_2_first_cost:
        description: Domestic 2 method first item cost
        type: number
      domestic_3_additional_cost:
        description: Domestic 3 method additional item cost
        type: number
      domestic_3_first_cost:
        description: Domestic 3 method first item cost
        type: number
      domestic_4_additional_cost:
        description: Domestic 4 method additional item cost
        type: number
      domestic_4_first_cost:
        description: Domestic 4 method first item cost
        type: number
      ebay_auction_id:
        description: If listed, this is the e-Bay auction id
        type: string
      ebay_specific_inventory:
        description: e-Bay specific inventory
        type: integer
        format: int32
      ebay_template_name:
        description: The template name to use hwen rendering the e-Bay listing
        type: string
      ebay_template_oid:
        description: The template object identifier to use when rendering the e-Bay listing
        type: integer
        format: int32
      end_time:
        description: Date/time of the auction end
        type: string
        format: dateTime
      free_shipping:
        description: True if item receives free shipping
        type: boolean
      free_shipping_method:
        description: The method that is free for free shipping
        type: string
      international_1_additional_cost:
        description: International 1 method additional item cost
        type: number
      international_1_first_cost:
        description: International 1 method first item cost
        type: number
      international_2_additional_cost:
        description: International 2 method additional item cost
        type: number
      international_2_first_cost:
        description: International 2 method first item cost
        type: number
      international_3_additional_cost:
        description: International 3 method additional item cost
        type: number
      international_3_first_cost:
        description: International 3 method first item cost
        type: number
      international_4_additional_cost:
        description: International 4 method additional item cost
        type: number
      international_4_first_cost:
        description: International 4 method first item cost
        type: number
      last_status_dts:
        description: Date/time of the last status check
        type: string
        format: dateTime
      listed_dispatch_time_max:
        description: Current listing dispatch time maximum
        type: integer
        format: int32
      listed_ebay_template_oid:
        description: The template object identifier used for the listing
        type: integer
        format: int32
      listing_dts:
        description: Date/time of the listing
        type: string
        format: dateTime
      listing_duration:
        description: The duration of the listing
        type: string
      listing_price:
        description: Price to list the item at
        type: number
      listing_price_override:
        description: The price to list the item at if different than the regular UltraCart item price
        type: number
      listing_type:
        description: The type of e-Bay listing
        type: string
      marketplace_analysis:
        $ref: '#/definitions/ItemEbayMarketPlaceAnalysis'
      marketplace_analysis_perform:
        description: True if marketplace analysis should be performed
        type: boolean
      marketplace_final_value_fee_percentage:
        description: Marketplace FVF percentage
        type: number
      marketplace_last_check_dts:
        description: Date/time of the marketplace analysis last check
        type: string
        format: dateTime
      marketplace_lowest:
        description: True if we are the lowest offer in the marketplace
        type: boolean
      marketplace_map_violation:
        description: True if another seller is violating MAP
        type: boolean
      marketplace_multiplier:
        description: Marketplace multiplier
        type: number
      marketplace_other_price:
        description: Marketplace other price
        type: number
      marketplace_other_seller:
        description: Marketplace other seller
        type: string
      marketplace_other_shipping:
        description: Marketplace other shipping
        type: number
      marketplace_other_total:
        description: Marketplace other total
        type: number
      marketplace_our_additional_profit_potential:
        description: Marketplace our additional profit potential
        type: number
      marketplace_our_price:
        description: Marketplace our price
        type: number
      marketplace_our_profit:
        description: Marketplace our profit
        type: number
      marketplace_our_shipping:
        description: Marketplace our shipping
        type: number
      marketplace_our_total:
        description: Marketplace our total
        type: number
      marketplace_overhead:
        description: Marketplace overhead
        type: number
      marketplace_profitable:
        description: True if our listing is profitable to sell
        type: boolean
      next_attempt_dts:
        description: Date/time for the next attempt to list
        type: string
        format: dateTime
      next_listing_duration:
        description: The next listing duration to use when the current listing ends.
        type: string
      no_promotional_shipping:
        description: True if the item should not qualify for promotional shipping
        type: boolean
      packaging_handling_costs:
        description: Packaging and handling costs
        type: number
      previous_ebay_auction_id:
        description: Previous e-Bay auction id
        type: string
      quantity:
        description: Quantity available of the item
        type: integer
        format: int32
      reserve_price:
        description: Reserve price
        type: number
      send_dimensions_and_weight:
        description: How to send the item dimensions and weights to e-Bay
        type: string
      start_time:
        description: Date/time of the auction start
        type: string
      status:
        description: Status of the item's listing
        type: string
      target_dispatch_time_max:
        description: Typical number of days it will take to ship the item
        type: integer
        format: int32
  ItemEbayCategorySpecific:
    type: object
    properties:
      name:
        description: Name of the category specification field
        type: string
      value:
        description: Value
        type: string
  ItemEbayMarketListing:
    type: object
    properties:
      auction_id:
        description: Auction ID
        type: string
      price:
        description: Price
        type: number
      seller:
        description: Seller
        type: string
      shipping:
        description: Shipping
        type: number
      total:
        description: Total
        type: number
  ItemEbayMarketPlaceAnalysis:
    type: object
    properties:
      adjusted_price:
        description: Adjusted price
        type: number
      adjusted_shipping:
        description: Adjusted shipping
        type: number
      adjusted_total:
        description: Adjusted total
        type: number
      cogs:
        description: Cost of goods sold
        type: number
      final_value_fee:
        description: Final value fee
        type: number
      minimum_advertised_price:
        description: Minimum advertised price
        type: number
      other_listings:
        description: Other listings
        type: array
        items:
          $ref: '#/definitions/ItemEbayMarketListing'
      our_listing:
        $ref: '#/definitions/ItemEbayMarketListing'
      overhead:
        description: Overhead
        type: number
      profit_potential:
        description: Profit potential
        type: number
  ItemEmailNotifications:
    type: object
    properties:
      skip_receipt:
        description: Skip receipt email to customer
        type: boolean
      skip_shipment_notification:
        description: Skip shipment notification to customer
        type: boolean
  ItemEnrollment123:
    type: object
    properties:
      enrollment123_product_code:
        description: Enrolment 123 product code
        type: string
  ItemFulfillmentAddon:
    type: object
    properties:
      add_item_id:
        description: Add Item Id
        type: string
      add_item_oid:
        description: Add Item object identifier
        type: integer
        format: int32
      initial_order_only:
        description: Initial Order Only
        type: boolean
      once_per_order:
        description: Once Per Order
        type: boolean
      quantity:
        description: Quantity
        type: integer
        format: int32
  ItemGiftCertificate:
    type: object
    properties:
      gift_certificate:
        description: True if the purchase of this item generates a gift certificate
        type: boolean
      gift_certificate_expiration_days:
        description: The number of days that the gift certificate is good for (optional)
        type: integer
        format: int32
  ItemGoogleProductSearch:
    type: object
    properties:
      adwords_grouping:
        description: Adwords grouping
        type: string
        maxLength: 50
      adwords_label1:
        description: Adwords label 1
        type: string
        maxLength: 50
      adwords_label2:
        description: Adwords label 2
        type: string
        maxLength: 50
      adwords_label3:
        description: Adwords label 3
        type: string
        maxLength: 50
      adwords_label4:
        description: Adwords label 4
        type: string
        maxLength: 50
      adwords_label5:
        description: Adwords label 5
        type: string
        maxLength: 50
      age_group:
        description: Age group
        type: string
        maxLength: 5
      available_at_physical_store:
        description: Available at physical store
        type: boolean
      book_author:
        description: Book - author
        type: string
        maxLength: 50
      book_format:
        description: Book - format
        type: string
        maxLength: 50
      book_isbn:
        description: Bood - ISBN
        type: string
        maxLength: 20
      book_publisher:
        description: Book - publisher
        type: string
        maxLength: 50
      category_description:
        description: Category description
        type: string
        maxLength: 1000
      color:
        description: Color
        type: string
        maxLength: 100
      condition:
        description: Condition
        type: string
        maxLength: 15
      custom_label0:
        description: Custom label 0
        type: string
        maxLength: 50
      custom_label1:
        description: Custom label 1
        type: string
        maxLength: 50
      custom_label2:
        description: Custom label 2
        type: string
        maxLength: 50
      custom_label3:
        description: Custom label 3
        type: string
        maxLength: 50
      custom_label4:
        description: Custom label 4
        type: string
        maxLength: 50
      gender:
        description: Gender
        type: string
        maxLength: 6
      google_product_category:
        description: Google product category
        type: string
        maxLength: 250
      music_artist:
        description: Music - artist
        type: string
        maxLength: 50
      music_format:
        description: Music - format
        type: string
        maxLength: 5
      music_release_date:
        description: Music - release date
        type: string
        format: dateTime
      omit_from_feed:
        description: Omit from feed
        type: boolean
      product_type:
        description: Product type
        type: string
        maxLength: 10
      promotion_id1:
        description: Promotion ID 1
        type: string
        maxLength: 30
      promotion_id10:
        description: Promotion ID 10
        type: string
        maxLength: 30
      promotion_id2:
        description: Promotion ID 2
        type: string
        maxLength: 30
      promotion_id3:
        description: Promotion ID 3
        type: string
        maxLength: 30
      promotion_id4:
        description: Promotion ID 4
        type: string
        maxLength: 30
      promotion_id5:
        description: Promotion ID 5
        type: string
        maxLength: 30
      promotion_id6:
        description: Promotion ID 6
        type: string
        maxLength: 30
      promotion_id7:
        description: Promotion ID 7
        type: string
        maxLength: 30
      promotion_id8:
        description: Promotion ID 8
        type: string
        maxLength: 30
      promotion_id9:
        description: Promotion ID 9
        type: string
        maxLength: 30
      search_dts:
        description: Search date/time
        type: string
        format: dateTime
      search_lowest_price:
        description: Search lowest price
        type: number
      search_lowest_url:
        description: Search lowest URL
        type: string
        maxLength: 250
      search_position:
        description: Search position
        type: integer
        format: int32
      shippingLabel:
        type: string
      size:
        description: Size
        type: string
        maxLength: 20
      video_director:
        description: Video - director
        type: string
        maxLength: 50
      video_format:
        description: Video - format
        type: string
        maxLength: 5
      video_rating:
        description: Video - rating
        type: string
        maxLength: 5
      video_release_date:
        description: Video - release date
        type: string
        format: dateTime
      video_starring:
        description: Video - starring
        type: string
        maxLength: 150
  ItemIdentifiers:
    type: object
    properties:
      barcode:
        description: Barcode
        type: string
        maxLength: 30
      barcode_gtin12:
        description: Barcode - GTIN 12
        type: string
        maxLength: 12
      barcode_gtin14:
        description: Barcode - GTIN 14
        type: string
        maxLength: 14
      barcode_upc11:
        description: Barcode - UPC 11
        type: string
        maxLength: 11
      barcode_upc12:
        description: Barcode - UPC 12
        type: string
        maxLength: 12
      manufacturer_name:
        description: Manufacturer Name
        type: string
        maxLength: 50
      manufacturer_sku:
        description: Manufacturer SKU
        type: string
        maxLength: 25
      unspsc:
        description: UNSPSC
        type: string
        maxLength: 20
  ItemInstantPaymentNotification:
    type: object
    properties:
      post_operation:
        description: True for HTTP POST instead of GET
        type: boolean
      successful_response_text:
        description: Successful response text
        type: string
        maxLength: 1024
      url:
        description: URL
        type: string
        maxLength: 1024
  ItemInstantPaymentNotifications:
    type: object
    properties:
      notifications:
        description: Notifications
        type: array
        items:
          $ref: '#/definitions/ItemInstantPaymentNotification'
  ItemInternal:
    type: object
    properties:
      memo:
        description: Memo
        type: string
        maxLength: 250
  ItemInventorySnapshot:
    type: object
    properties:
      allocated_to_placed_orders:
        type: integer
        format: int32
      allocated_to_shopping_carts:
        type: integer
        format: int32
      available_to_allocate:
        type: integer
        format: int32
      distribution_centers:
        type: array
        items:
          $ref: '#/definitions/ItemInventorySnapshotDistributionCenter'
      merchant_item_id:
        type: string
      quantity:
        type: integer
        format: int32
  ItemInventorySnapshotDistributionCenter:
    type: object
    properties:
      allocated_to_placed_orders:
        type: integer
        format: int32
      allocated_to_shopping_carts:
        type: integer
        format: int32
      available_to_allocate:
        type: integer
        format: int32
      code:
        type: string
      quantity:
        type: integer
        format: int32
  ItemInventorySnapshotResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      inventories:
        description: inventories
        type: array
        items:
          $ref: '#/definitions/ItemInventorySnapshot'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemKitComponent:
    type: object
    properties:
      component_cost:
        description: Component item cost
        type: number
      component_description:
        description: Component item description
        type: string
      component_merchant_item_id:
        description: Component item ID
        type: string
      component_merchant_item_oid:
        description: Component item object identifier
        type: integer
        format: int32
      quantity:
        description: Quantity
        type: integer
        format: int32
  ItemKitDefinition:
    type: object
    properties:
      components:
        description: Components
        type: array
        items:
          $ref: '#/definitions/ItemKitComponent'
  ItemOption:
    type: object
    properties:
      cost_if_specified:
        description: Cost if specified
        type: number
      cost_per_letter:
        description: Cost per letter
        type: number
      cost_per_line:
        description: Cost per line
        type: number
      ignore_if_default:
        description: Ignore this option on the order if the default value is selected
        type: boolean
      label:
        description: Label
        type: string
        maxLength: 50
      label_translated_text_instance_oid:
        description: Label translated text instance ID
        type: integer
        format: int32
      name:
        description: Name
        type: string
        maxLength: 50
      name_translated_text_instance_oid:
        description: Name translated text instance ID
        type: integer
        format: int32
      one_time_fee:
        description: One time fee
        type: boolean
      option_oid:
        description: Option object identifier
        type: integer
        format: int32
      required:
        description: True if the customer is required to specify an answer
        type: boolean
      system_option:
        description: True if this is a system option
        type: boolean
      type:
        description: Type of option
        type: string
        enum: [
          "dropdown",
          "file attachment",
          "fixed",
          "hidden",
          "multiline",
          "radio",
          "single"
        ]
      values:
        description: Values
        type: array
        items:
          $ref: '#/definitions/ItemOptionValue'
  ItemOptionValue:
    type: object
    properties:
      additional_dimension_application:
        description: Additional dimensions application
        type: string
        enum: [
          "none",
          "set item to",
          "add item"
        ]
      additional_items:
        description: Additional items to add to the order if this value is selected
        type: array
        items:
          $ref: '#/definitions/ItemOptionValueAdditionalItem'
      cost_change:
        description: Cost change
        type: number
      default_value:
        description: True if default value
        type: boolean
      digital_items:
        description: Digital items to allow the customer to download if this option value is selected
        type: array
        items:
          $ref: '#/definitions/ItemOptionValueDigitalItem'
      height:
        $ref: '#/definitions/Distance'
      length:
        $ref: '#/definitions/Distance'
      merchant_item_multimedia_oid:
        description: Multimedia object identifier associated with this option value
        type: integer
        format: int32
      option_value_oid:
        description: Option value object identifier
        type: integer
        format: int32
      percent_cost_change:
        description: Percentage cost change
        type: number
      translated_text_instance_oid:
        description: Translated text instance id
        type: integer
        format: int32
      value:
        description: Value
        type: string
        maxLength: 1024
      weight_change:
        $ref: '#/definitions/Weight'
      weight_change_percent:
        description: Percentage weight change
        type: number
      width:
        $ref: '#/definitions/Distance'
  ItemOptionValueAdditionalItem:
    type: object
    properties:
      additional_merchant_item_id:
        description: Additional item id
        type: string
      additional_merchant_item_oid:
        description: Additional item object identifier
        type: integer
        format: int32
  ItemOptionValueDigitalItem:
    type: object
    properties:
      digital_item_oid:
        description: Digital item object identifier
        type: integer
        format: int32
      original_filename:
        description: Original filename
        type: string
  ItemPaymentProcessing:
    type: object
    properties:
      block_prepaid:
        description: True if prepaid cards should be blocked from buying this item
        type: boolean
      block_refunds:
        description: True if this item should block any refund attempts, set to false otherwise, null value will not update the field
        type: boolean
      credit_card_transaction_type:
        description: Credit card transaction type
        type: string
      no_realtime_charge:
        description: True if no real-time charge should be performed on this item.
        type: boolean
      payment_method_validity:
        description: Payment method validity
        type: array
        items:
          type: string
      rotating_transaction_gateway_codes:
        description: Rotating transaction gateway codes
        type: array
        items:
          type: string
  ItemPhysical:
    type: object
    properties:
      height:
        $ref: '#/definitions/Distance'
      length:
        $ref: '#/definitions/Distance'
      weight:
        $ref: '#/definitions/Weight'
      width:
        $ref: '#/definitions/Distance'
  ItemPricing:
    type: object
    properties:
      allow_arbitrary_cost:
        description: Allow arbitrary cost
        type: boolean
      arbitrary_cost_velocity_code:
        description: Arbitrary cost velocity code
        type: string
        maxLength: 10000
      auto_order_cost:
        description: Cost if customer selects to receive item on auto order.  Set to zero to delete.
        type: number
      automatic_pricing_tier_name:
        description: Automatic pricing tier name
        type: string
      automatic_pricing_tier_oid:
        description: Automatic pricing tier object identifier
        type: integer
        format: int32
      cogs:
        description: Cost of goods sold
        type: number
      cost:
        description: Cost
        type: number
      currency_code:
        description: Currency code
        type: string
        maxLength: 3
      manufacturer_suggested_retail_price:
        description: Manufacturer suggested retail price
        type: number
      maximum_arbitrary_cost:
        description: Maximum arbitrary cost
        type: number
      minimum_advertised_price:
        description: Minimum advertised price
        type: number
      minimum_arbitrary_cost:
        description: Minimum arbitrary cost
        type: number
      mix_and_match_group:
        description: Mix and match group
        type: string
      mix_and_match_group_oid:
        description: Mix and match group object identifier
        type: integer
        format: int32
      sale_cost:
        description: Sale cost
        type: number
      sale_end:
        description: Sale end
        type: string
        format: dateTime
      sale_start:
        description: Sale start
        type: string
        format: dateTime
      tiers:
        description: Tiers
        type: array
        items:
          $ref: '#/definitions/ItemPricingTier'
  ItemPricingTier:
    type: object
    properties:
      default_tier:
        description: True if this is the default tier
        type: boolean
      discounts:
        description: Discounts
        type: array
        items:
          $ref: '#/definitions/ItemPricingTierDiscount'
      limit:
        $ref: '#/definitions/ItemPricingTierLimit'
      name:
        description: Pricing tier name
        type: string
      pricing_tier_oid:
        description: Pricing tier object identifier
        type: integer
        format: int32
  ItemPricingTierDiscount:
    type: object
    properties:
      cost:
        description: Cost
        type: number
      quantity:
        description: Quantity
        type: integer
        format: int32
  ItemPricingTierLimit:
    type: object
    properties:
      cumulative_order_limit:
        description: Cumulative order limit
        type: integer
        format: int32
      exempt_from_minimum_item_count:
        description: Exempt from Minimum Item Count
        type: boolean
      individual_order_limit:
        description: Individual order limit
        type: integer
        format: int32
      multiple_quantity:
        description: Multiple quantity
        type: integer
        format: int32
      payment_method_validity:
        description: Payment method validity
        type: array
        items:
          type: string
  ItemProperty:
    type: object
    properties:
      expirationDts:
        description: Expiration of the property
        type: string
        format: dateTime
      name:
        description: Property name
        type: string
        maxLength: 100
      value:
        description: Property value
        type: string
        maxLength: 1000
  ItemRealtimePricing:
    type: object
    properties:
      realtime_pricing_parameter:
        description: Real-time pricing provider parameters
        type: string
      realtime_pricing_provider:
        description: Real-time pricing provider name
        type: string
      realtime_pricing_provider_oid:
        description: Real-time pricing provide object identifier
        type: integer
        format: int32
  ItemRelated:
    type: object
    properties:
      no_system_calculated_related_items:
        description: True to suppress system calculated relationships
        type: boolean
      not_relatable:
        description: Not relatable
        type: boolean
      related_items:
        description: Related items
        type: array
        items:
          $ref: '#/definitions/ItemRelatedItem'
  ItemRelatedItem:
    type: object
    properties:
      related_merchant_item_id:
        description: Related item id
        type: string
      related_merchant_item_oid:
        description: Related item object identifier
        type: integer
        format: int32
      type:
        description: Relationship type
        type: string
        enum: [
          "System",
          "UserDefined"
        ]
  ItemReporting:
    type: object
    properties:
      report_as_upsell:
        description: Report as an upsell
        type: boolean
      report_pickable_quantities:
        description: Report pickable quantities (deprecated)
        type: array
        items:
          type: integer
  ItemResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      item:
        $ref: '#/definitions/Item'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemRestriction:
    type: object
    properties:
      exclude_coupon:
        description: Exclude coupons
        type: boolean
      exclude_from_free_promotion:
        description: Exclude from free promotion
        type: boolean
      exclude_from_loyalty:
        description: Exclude from loyalty.  Must be set to true or false to save.  Null is ignored for backwards SDK compatibility
        type: boolean
      items:
        description: Items
        type: array
        items:
          $ref: '#/definitions/ItemRestrictionItem'
      maximum_quantity:
        description: Maximum quantity
        type: integer
        format: int32
      minimum_quantity:
        description: Minimum quantity (defaults to 1)
        type: integer
        format: int32
      multiple_quantity:
        description: Multiple of quantity
        type: integer
        format: int32
      one_per_customer:
        description: One per customer
        type: boolean
      purchase_separately:
        description: Purchase separately
        type: boolean
  ItemRestrictionItem:
    type: object
    properties:
      restrict_merchant_item_id:
        description: Restrict item id
        type: string
      restrict_merchant_item_oid:
        description: Restrict item object identifier
        type: integer
        format: int32
      type:
        description: Restriction type
        type: string
        enum: [
          "can not be purchased with",
          "can only be purchased with",
          "must be purchased with"
        ]
  ItemRevguard:
    type: object
    properties:
      revguard_canceled_csr_prompt_group:
        description: Canceled CSR prompt group
        type: integer
        format: int64
      revguard_canceled_ivr_prompt_group:
        description: IVR prompt group
        type: integer
        format: int64
      revguard_canceled_web_prompt_group:
        description: Canceled web prompt group
        type: integer
        format: int64
      revguard_client_brand:
        description: Client brand
        type: integer
        format: int64
      revguard_csr_prompt_group:
        description: CSR prompt group
        type: integer
        format: int64
      revguard_ivr_prompt_group:
        description: IVR prompt group
        type: integer
        format: int64
      revguard_web_prompt_group:
        description: Web prompt group
        type: integer
        format: int64
  ItemReview:
    type: object
    properties:
      customer_profile_oid:
        description: Customer profile object identifier
        type: integer
        format: int32
      featured:
        type: boolean
      helperful_no_votes:
        type: integer
        format: int32
      helpful_yes_votes:
        type: integer
        format: int32
      merchant_reply:
        description: Merchant Reply (set to an empty string to remove)
        type: string
        maxLength: 10000
      order_id:
        type: string
      overall:
        type: number
      rating_name1:
        description: Rating Name 1
        type: string
        maxLength: 100
      rating_name10:
        description: Rating Name 10
        type: string
        maxLength: 100
      rating_name2:
        description: Rating Name 2
        type: string
        maxLength: 100
      rating_name3:
        description: Rating Name 3
        type: string
        maxLength: 100
      rating_name4:
        description: Rating Name 4
        type: string
        maxLength: 100
      rating_name5:
        description: Rating Name 5
        type: string
        maxLength: 100
      rating_name6:
        description: Rating Name 6
        type: string
        maxLength: 100
      rating_name7:
        description: Rating Name 7
        type: string
        maxLength: 100
      rating_name8:
        description: Rating Name 8
        type: string
        maxLength: 100
      rating_name9:
        description: Rating Name 9
        type: string
        maxLength: 100
      rating_score1:
        type: number
      rating_score10:
        type: number
      rating_score2:
        type: number
      rating_score3:
        type: number
      rating_score4:
        type: number
      rating_score5:
        type: number
      rating_score6:
        type: number
      rating_score7:
        type: number
      rating_score8:
        type: number
      rating_score9:
        type: number
      recommend_store_to_friend:
        type: integer
        format: int32
      recommend_to_friend:
        type: boolean
      review:
        description: Review
        type: string
        maxLength: 10000
      review_oid:
        type: integer
        format: int32
      reviewed_nickname:
        description: Nickname
        type: string
        maxLength: 25
      reviewer_email:
        description: Reviewer Email
        type: string
        maxLength: 100
      reviewer_location:
        description: Location
        type: string
        maxLength: 25
      status:
        description: Status of the review
        type: string
        enum: [
          "approved",
          "unapproved",
          "rejected",
          "multimedia processing"
        ]
      store_feedback:
        description: Store Feedback
        type: string
        maxLength: 10000
      submitted_dts:
        description: Date/time of review submission
        type: string
        format: dateTime
      title:
        description: Title
        type: string
        maxLength: 250
  ItemReviewResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      review:
        $ref: '#/definitions/ItemReview'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemReviews:
    type: object
    properties:
      has_approved_review:
        description: True if the item has an approved review
        type: boolean
      has_review:
        description: True if the item has a review
        type: boolean
      individual_reviews:
        type: array
        items:
          $ref: '#/definitions/ItemReview'
      review_count:
        description: Number of approved reviews
        type: integer
        format: int32
      review_overall:
        description: Overall score of reviews
        type: number
      review_template_name:
        description: Review template name
        type: string
      review_template_oid:
        description: Review template object identifier
        type: integer
        format: int32
      reviewable:
        description: True if the item is reviewable
        type: boolean
      share_reviews_with_merchant_item_id:
        description: Share reviews with item id.  To set, use the share_reviews_with_merchant_item_oid field.
        type: string
      share_reviews_with_merchant_item_oid:
        description: Share reviews with item oid.  To null out this field, set teh value to zero.
        type: integer
        format: int32
  ItemReviewsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      reviews:
        description: reviews
        type: array
        items:
          $ref: '#/definitions/ItemReview'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemSalesforce:
    type: object
    properties:
      sfdc_pricebook_id:
        description: Salesforce.com pricebook id
        type: string
      sfdc_product_id:
        description: Salesforce.com product id
        type: string
  ItemShipping:
    type: object
    properties:
      allow_back_order:
        description: Allow back order
        type: boolean
      amazon_fba:
        description: Fulfillment by Amazon.com
        type: boolean
      case_inner_packs:
        description: Case inner packs
        type: integer
        format: int32
      case_units:
        description: Case units
        type: integer
        format: int32
      cases:
        description: Cases
        type: array
        items:
          $ref: '#/definitions/ItemShippingCase'
      collect_serial_numbers:
        description: This item is on pre-order
        type: boolean
      country_code_of_origin:
        description: Country code of origin for customs forms.  (ISO-3166 two letter code)
        type: string
        maxLength: 2
      customs_description:
        description: Customs description
        type: string
      customs_value:
        description: Customs value
        type: number
      delivery_on_friday:
        description: Delivery on Friday
        type: boolean
      delivery_on_monday:
        description: Delivery on Monday
        type: boolean
      delivery_on_saturday:
        description: Delivery on Saturday
        type: boolean
      delivery_on_sunday:
        description: Delivery on Sunday
        type: boolean
      delivery_on_thursday:
        description: Delivery on Thursday
        type: boolean
      delivery_on_tuesday:
        description: Delivery on Tuesday
        type: boolean
      delivery_on_wednesday:
        description: Delivery on Wednesday
        type: boolean
      destination_markups:
        description: Destination markups
        type: array
        items:
          $ref: '#/definitions/ItemShippingDestinationMarkup'
      destination_restrictions:
        description: Destination restrictions
        type: array
        items:
          $ref: '#/definitions/ItemShippingDestinationRestriction'
      distribution_centers:
        description: Distribution centers
        type: array
        items:
          $ref: '#/definitions/ItemShippingDistributionCenter'
      eta:
        description: Estimated time of arrival
        type: string
        format: dateTime
      free_shipping:
        description: Qualifies for free shipping
        type: boolean
      freight_class:
        description: Freight class
        type: string
      hazmat:
        description: Hazardous material
        type: boolean
      hold_for_transmission:
        description: Hold for transmission
        type: boolean
      made_to_order:
        description: True if this item is made to order
        type: boolean
      made_to_order_lead_time:
        description: Number of days lead time it takes to make the item before ite can ship
        type: integer
        format: int32
      max_days_time_in_transit:
        description: Maximum days allowed in transit
        type: integer
        format: int32
      methods:
        description: Methods
        type: array
        items:
          $ref: '#/definitions/ItemShippingMethod'
      no_shipping_discount:
        description: No shipping discounts
        type: boolean
      package_requirements:
        description: Package requirements
        type: array
        items:
          $ref: '#/definitions/ItemShippingPackageRequirement'
      perishable_class_name:
        description: Perishable class name
        type: string
      perishable_class_oid:
        description: Perishable class object identifier
        type: integer
        format: int32
      preorder:
        description: This item is on pre-order
        type: boolean
      require_delivery_date:
        description: True to require customer to select a delivery date
        type: boolean
      restrict_shipment_on_friday:
        description: Restrict shipment on Friday
        type: boolean
      restrict_shipment_on_monday:
        description: Restrict shipment on Monday
        type: boolean
      restrict_shipment_on_saturday:
        description: Restrict shipment on Saturday
        type: boolean
      restrict_shipment_on_sunday:
        description: Restrict shipment on Sunday
        type: boolean
      restrict_shipment_on_thursday:
        description: Restrict shipment on Thursday
        type: boolean
      restrict_shipment_on_tuesday:
        description: Restrict shipment on Tuesday
        type: boolean
      restrict_shipment_on_wednesday:
        description: Restrict shipment on Wednesday
        type: boolean
      ship_separately:
        description: Ship this item in a separate box
        type: boolean
      ship_separately_additional_weight:
        $ref: '#/definitions/Weight'
      ship_separately_height:
        $ref: '#/definitions/Distance'
      ship_separately_length:
        $ref: '#/definitions/Distance'
      ship_separately_package_special_type:
        description: Ship separately package special type
        type: string
      ship_separately_width:
        $ref: '#/definitions/Distance'
      special_product_type:
        description: Special product type (USPS Media Mail)
        type: string
      track_inventory:
        description: Track inventory
        type: boolean
  ItemShippingCase:
    type: object
    properties:
      case_label:
        description: Case label
        type: string
        maxLength: 20
      case_merchant_item_id:
        description: Case item id
        type: string
      case_merchant_item_oid:
        description: Case item object identifier
        type: integer
        format: int32
      quantity:
        description: Case quantity
        type: integer
        format: int32
  ItemShippingDestinationMarkup:
    type: object
    properties:
      adult_signature_required:
        description: Adult Signature Required (only updated if not-null value provided)
        type: boolean
      country_code:
        description: Country code (ISO-3166 two letter)
        type: string
        maxLength: 2
      flat_fee:
        description: Flat fee
        type: number
      per_item:
        description: Per item
        type: number
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      shipping_method:
        description: Shipping method
        type: string
      state:
        description: State
        type: string
        maxLength: 32
  ItemShippingDestinationRestriction:
    type: object
    properties:
      country_code:
        description: Country code (ISO-3166 two letter)
        type: string
        maxLength: 2
      state:
        description: State
        type: string
        maxLength: 32
      validity:
        description: Validity
        type: string
        enum: [
          "valid only for",
          "invalid for"
        ]
  ItemShippingDistributionCenter:
    type: object
    properties:
      allocated_to_placed_orders:
        description: Allocated to placed orders
        type: number
      allocated_to_shopping_carts:
        description: Allocated to shopping carts
        type: number
      available_to_allocate:
        description: Available to allocate
        type: number
      cogs:
        description: Cost of goods sold override at the distribution center level
        type: number
      desired_inventory_level:
        description: Desired inventory level
        type: number
      distribution_center_code:
        description: Distribution center code
        type: string
      distribution_center_oid:
        description: Distribution center object identifier
        type: integer
        format: int32
      eta:
        description: Estimated time of arrival
        type: string
        format: dateTime
      handles:
        description: True if this distribution center handles this item
        type: boolean
      inventory_level:
        description: Inventory level
        type: number
      maximum_backorder:
        description: Maximum back-order
        type: integer
        format: int32
      reorder_inventory_level:
        description: Reorder inventory level (triggers notification)
        type: number
      sku:
        description: SKU
        type: string
        maxLength: 50
      stock_picking_location:
        description: Stock picking location
        type: string
        maxLength: 20
  ItemShippingMethod:
    type: object
    properties:
      cost:
        description: Cost
        type: number
      each_additional_item_markup:
        description: Each additional item markup
        type: number
      filter_to_if_available:
        description: Filter to this method if available
        type: boolean
      first_item_markup:
        description: First item markup
        type: number
      fixed_shipping_cost:
        description: Fixed shipping cost
        type: number
      flat_fee_markup:
        description: Flat fee markup
        type: number
      free_shipping:
        description: Free shipping
        type: boolean
      per_item_fee_markup:
        description: Per item fee markup
        type: number
      percentage_markup:
        description: Percentage markup
        type: number
      percentage_of_item_markup:
        description: Percentage of item markup
        type: number
      relax_restrictions_on_upsell:
        description: Relax restrictions on upsell
        type: boolean
      shipping_method:
        description: Shipping method name
        type: string
      shipping_method_oid:
        description: Shipping method object identifier
        type: integer
        format: int32
      shipping_method_validity:
        description: Shipping method validity
        type: string
        enum: [
          "invalid for",
          "valid for",
          "valid only for"
        ]
      ships_separately:
        description: Ships separately
        type: boolean
      signature_required:
        description: Signature required
        type: boolean
  ItemShippingPackageRequirement:
    type: object
    properties:
      package_name:
        description: Package name
        type: string
      package_oid:
        description: Package object identifier
        type: integer
        format: int32
  ItemsRequest:
    type: object
    properties:
      items:
        description: items
        type: array
        items:
          $ref: '#/definitions/Item'
  ItemsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      items:
        description: items
        type: array
        items:
          $ref: '#/definitions/Item'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ItemTag:
    type: object
    properties:
      tagType:
        description: tag_type
        type: string
        enum: [
          "item",
          "order",
          "customer"
        ]
      tagValue:
        description: tag_value
        type: string
        maxLength: 100
  ItemTags:
    type: object
    properties:
      tags:
        description: tags
        type: array
        items:
          $ref: '#/definitions/ItemTag'
  ItemTax:
    type: object
    properties:
      exemptions:
        description: Exemptions
        type: array
        items:
          $ref: '#/definitions/ItemTaxExemption'
      tax_free:
        description: True if tax free
        type: boolean
      tax_product_type:
        description: Tax product type
        type: string
        enum: [
          "",
          "digital",
          "physical",
          "service"
        ]
      taxable_cost:
        description: Taxable cost if different than regular cost
        type: number
  ItemTaxExemption:
    type: object
    properties:
      city:
        description: City
        type: string
        maxLength: 32
      country_code:
        description: Country code (ISO-3166 two letter)
        type: string
        maxLength: 2
      county:
        description: County
        type: string
        maxLength: 32
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      state_code:
        description: State code
        type: string
        maxLength: 32
  ItemThirdPartyEmailMarketing:
    type: object
    properties:
      add_tags:
        description: Add tags
        type: array
        items:
          type: string
      provider_name:
        description: Provider name
        type: string
        enum: [
          "ActiveCampaign",
          "AWeber",
          "Campaign Monitor",
          "ConstantContact",
          "Emma",
          "GetResponse",
          "iContact",
          "Klaviyo",
          "Lyris",
          "LyrisHQ",
          "MailChimp",
          "SilverPop"
        ]
      remove_tags:
        description: Remove tags
        type: array
        items:
          type: string
      subscribe_lists:
        description: Subscribe to lists
        type: array
        items:
          type: string
      unsubscribe_lists:
        description: Unsubscribe from lists
        type: array
        items:
          type: string
  ItemVariantItem:
    type: object
    properties:
      description:
        description: Description
        type: string
        maxLength: 512
      merchant_item_multimedia_oid:
        description: Multimedia object identifier
        type: integer
        format: int32
      variant_merchant_item_id:
        description: Variant item id
        type: string
      variant_merchant_item_oid:
        description: Variant item object identifier
        type: integer
        format: int32
      variation_options:
        description: Variation options
        type: array
        items:
          type: string
      variations:
        description: Variations
        type: array
        items:
          type: string
  ItemVariation:
    type: object
    properties:
      default_text:
        description: Default text
        type: string
        maxLength: 50
      default_text_translated_text_instance_oid:
        description: Default text translated text instance id
        type: integer
        format: int32
      name:
        description: Name
        type: string
        maxLength: 50
      name_translated_text_instance_oid:
        description: Name translated text instance id
        type: integer
        format: int32
      options:
        description: Options
        type: array
        items:
          $ref: '#/definitions/ItemVariationOption'
  ItemVariationOption:
    type: object
    properties:
      default_option:
        description: True if default option
        type: boolean
      merchant_item_multimedia_oid:
        description: Multimedia object identifier
        type: integer
        format: int32
      translated_text_instance_oid:
        description: Translated text instance id
        type: integer
        format: int32
      value:
        description: Value
        type: string
        maxLength: 50
  ItemWishlistMember:
    type: object
    properties:
      wishlist_member_instance_description:
        description: WishList Member instance description
        type: string
      wishlist_member_instance_oid:
        description: WishList Member instance object identifier
        type: integer
        format: int32
      wishlist_member_sku:
        description: WishList Member SKU
        type: string
        maxLength: 25
  KeyValue:
    type: object
    properties:
      description:
        description: Optional description of the lookup value
        type: string
      key:
        description: The key or id of this lookup value
        type: string
      value:
        description: The value of this lookup value
        type: string
  LibraryFilterValues:
    type: object
    properties:
      categories:
        type: array
        items:
          type: string
      industries:
        type: array
        items:
          type: string
      styles:
        type: array
        items:
          type: string
      types:
        type: array
        items:
          type: string
  LibraryFilterValuesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      filter_values:
        $ref: '#/definitions/LibraryFilterValues'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  LibraryItem:
    type: object
    properties:
      assets:
        type: array
        items:
          $ref: '#/definitions/LibraryItemAsset'
      attributes:
        type: array
        items:
          $ref: '#/definitions/LibraryItemAttribute'
      categories:
        type: array
        items:
          type: string
      content:
        type: string
      content_type:
        type: string
      description:
        type: string
      industries:
        type: array
        items:
          type: string
      library_item_oid:
        type: integer
        format: int32
      merchant_id:
        type: string
      my_purchased_version:
        description: If this is a public item and the merchant has already purchased it, this is their version.  If not yet purchased, this will be zero.  This value will only be populated during a searchPublicItems() call.
        type: integer
        format: int32
      original_object_id:
        description: This id points to the original object that was added to the library. For flows and campaigns, this is a uuid string.  For upsells, it is an oid integer.  For transactional_emails, it is an email name.
        type: string
      price:
        description: The price of the published item.  Null for any private library items.
        type: number
      price_formatted:
        description: The formatted price of the published item.  Null for any private library items.
        type: string
      published:
        description: True if this library item is a published item (not source)
        type: boolean
      published_dts:
        description: The timestamp of the last published version
      published_from_library_item_oid:
        description: The source item used to publish this item.  This allows for comparisons between source and published
        type: integer
        format: int32
      published_meta:
        $ref: '#/definitions/LibraryItemPublishedMeta'
      published_version:
        description: The source version when this item was published.  This allows for out-of-date alerts to be shown when there is a difference between source and published
        type: integer
        format: int32
      purchased:
        description: True if this library item has been purchased
        type: boolean
      purchased_from_library_item_oid:
        description: The published item that was purchased to make this item.  This allows for comparisons between published and purchased
        type: integer
        format: int32
      purchased_meta:
        $ref: '#/definitions/LibraryItemPurchasedMeta'
      purchased_version:
        description: The published version when this item was purchased.  This allows for out-of-date alerts to be shown when there is a difference between published and purchased
        type: integer
        format: int32
      rejected:
        description: Any published library reviewed by UltraCart staff for malicious or inappropriate content will have this flag set to true.  This is always false for non-published items
        type: boolean
      rejected_reason:
        description: Any rejected published item will have this field populated with the reason.
        type: string
      release_notes:
        description: Release notes specific to each published version and only appearing on public items.
        type: string
      release_version:
        description: This counter records how many times a library item has been published.  This is used to show version history.
        type: integer
        format: int32
      reviewed:
        description: Any published library items must be reviewed by UltraCart staff for malicious content.  This flag shows the status of that review.  This is always false for non-published items
        type: boolean
      reviewed_dts:
        description: This is the timestamp for a published items formal review by UltraCart staff for malicious content.
      screenshots:
        type: array
        items:
          $ref: '#/definitions/LibraryItemScreenshot'
      share_with_accounts:
        type: array
        items:
          $ref: '#/definitions/LibraryItemAccount'
      share_with_other_emails:
        type: array
        items:
          $ref: '#/definitions/LibraryItemEmail'
      shared:
        description: True if this item is shared from another merchant account
        type: boolean
      source:
        description: True if this library item has been published
        type: boolean
      source_to_library_item_oid:
        description: This oid points to the published library item, if there is one.
        type: integer
        format: int32
      source_version:
        description: The version of this item.  Increment every time the item is saved.
        type: integer
        format: int32
      style:
        type: string
      times_purchased:
        type: integer
        format: int32
      title:
        type: string
      type:
        type: string
      under_review:
        description: True if this library item was published but is awaiting review from UltraCart staff.
        type: boolean
  LibraryItemAccount:
    type: object
    properties:
      library_item_account_oid:
        type: integer
        format: int32
      library_item_oid:
        type: integer
        format: int32
      other_merchant_id:
        type: string
  LibraryItemAsset:
    type: object
    properties:
      mime_type:
        type: string
      url:
        type: string
  LibraryItemAttribute:
    type: object
    properties:
      name:
        type: string
      value:
        type: string
  LibraryItemEmail:
    type: object
    properties:
      email:
        type: string
      library_item_email_oid:
        type: integer
        format: int32
      library_item_oid:
        type: integer
        format: int32
  LibraryItemPublishedMeta:
    type: object
    properties:
      count_of_versions:
        description: The number of published versions a source item has, or zero if this item is not a source or is private
        type: integer
        format: int32
      library_item_published_oid:
        description: The oid pointing to the most recent published version, or zero if this is not a published source item.
        type: integer
        format: int32
      library_item_review_oid:
        description: The oid pointing to the review data if this is a source library item and currently under review
        type: integer
        format: int32
      rejected:
        description: True if this is a source item and is under review and was rejected.
        type: boolean
      rejected_reason:
        description: The reason for rejection if this item is a source item, is under review, and was rejected.  For all other cases, this value will be null or missing.
        type: string
      release_version:
        description: If this library item is a source item and it is published, this is the most recent release version number
        type: integer
        format: int32
      review_version:
        description: If this library item is a source item and has a published item currently under review, this is that version number
        type: integer
        format: int32
      under_review:
        description: True if this library item is a source item and is currently under review 
        type: boolean
  LibraryItemPurchasedMeta:
    type: object
    properties:
      most_recent_version:
        description: The most recent version of the item purchased
        type: integer
        format: int32
      my_purchased_version:
        description: If this is a public item and the merchant has already purchased it, this is their version.  If not yet purchased, this will be zero.  This value will only be populated during a searchPublicItems() call.
        type: integer
        format: int32
      upgrade_available:
        description: True if the most recent version of this purchase it greater than what was purchased
        type: boolean
  LibraryItemQuery:
    type: object
    properties:
      category:
        description: Category
        type: string
      content_type:
        description: Library item content type such as flow, campaign, cjson, email, or transactional_email
        type: string
      description:
        description: Description of library item
        type: string
      industry:
        description: Industry
        type: string
      price_high:
        description: Maximum price
        type: number
      price_low:
        description: Minimum price
        type: number
      published_dts_begin:
        description: Minimum published date/time
        type: string
      published_dts_end:
        description: Maximum published date/time
        type: string
      source_of_published:
        description: Boolean, true if this library item has been published and is the master copy of that published work
        type: boolean
      style:
        description: Library item style
        type: string
      title:
        description: Title of the library item
        type: string
      type:
        description: Library item type such as header, footer, shipping block, etc
        type: string
  LibraryItemResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      library_item:
        $ref: '#/definitions/LibraryItem'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  LibraryItemScreenshot:
    type: object
    properties:
      default_url:
        type: boolean
      screenshot_url:
        type: string
  LibraryItemsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      items:
        description: Library items
        type: array
        items:
          $ref: '#/definitions/LibraryItem'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  LinkedAccount:
    type: object
    properties:
      company:
        description: The company name of this linked account.
        type: string
      merchant_id:
        description: A merchant id that is linked to this account.
        type: string
      selected:
        description: If true, this user configuration (permissions, notifications, everything) is cascaded to this linked account.
        type: boolean
  ListSegmentMembership:
    type: object
    properties:
      name:
        type: string
      type:
        type: string
      uuid:
        type: string
  LookupRequest:
    type: object
    properties:
      category:
        type: string
      matches:
        type: string
      max_hits:
        type: integer
        format: int32
      storefront_host_name:
        type: string
      storefront_oid:
        type: integer
        format: int32
      subcategory:
        type: string
  LookupResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      values:
        type: array
        items:
          $ref: '#/definitions/KeyValue'
      warning:
        $ref: '#/definitions/Warning'
  Mailgun:
    type: object
    properties:
      api_key:
        type: string
  Metric:
    type: object
    properties:
      all_time:
        type: number
      all_time_formatted:
        type: string
      last_30:
        type: number
      last_30_formatted:
        type: string
      name:
        type: string
      prior_30:
        type: number
      prior_30_formatted:
        type: string
      type:
        type: string
  Notification:
    type: object
    properties:
      can_filter_by_distribution_centers:
        description: True if this notification can be filtered to only send for one or more distribution centers.
        type: boolean
      can_include_affiliate:
        description: True if this notification can include an affiliate information.
        type: boolean
      can_include_order:
        description: True if this notification can include an order attachment.
        type: boolean
      can_include_order_plain_text:
        description: True if this notification can include a plain text rendering of an order directly within an email.  Some desire this over an attachment
        type: boolean
      distribution_center_filters:
        description: If this notification supports it, this list of distribution center CODES will filter the notification to just those distribution centers.
        type: array
        items:
          type: string
      include_affiliate:
        description: If true, and this notification supports it, affiliate information will be attached to all notifications of this type
        type: boolean
      include_order:
        description: If true, and this notification supports it, the order will be attached to all notifications of this type
        type: boolean
      include_order_plain_text:
        description: If true, and this notification supports it, a plain text order will be directly inserted into all notifications of this type
        type: boolean
      name:
        description: The name of this notification.
        type: string
      notification_group:
        description: A group for this notification.  This name is only used for visual grouping within interfaces.
        type: string
      selected:
        description: True if this user wishes to receive this email notification.
        type: boolean
  OauthRevokeSuccessResponse:
    type: object
    properties:
      message:
        description: Message confirming revocation of credentials
        type: string
      successful:
        description: True if revoke was successful
        type: boolean
  OauthTokenResponse:
    type: object
    properties:
      access_token:
        description: Access token to use in OAuth authenticated API call
        type: string
      error:
        type: string
      error_description:
        type: string
      error_uri:
        type: string
      expires_in:
        description: The number of seconds since issuance when the access token will expire and need to be refreshed using the refresh token
        type: string
      refresh_token:
        description: The refresh token that should be used to fetch a new access token when the expiration occurs
        type: string
      scope:
        description: The scope of permissions associated with teh access token
        type: string
      token_type:
        description: Type of token
        type: string
        enum: [
          "bearer"
        ]
  Order:
    type: object
    properties:
      affiliates:
        description: Affiliates if any were associated with the order.  The first one in the array sent the order and each subsequent affiliate is the recruiter that earns a downline commission.
        type: array
        items:
          $ref: '#/definitions/OrderAffiliate'
      auto_order:
        $ref: '#/definitions/OrderAutoOrder'
      billing:
        $ref: '#/definitions/OrderBilling'
      buysafe:
        $ref: '#/definitions/OrderBuysafe'
      channel_partner:
        $ref: '#/definitions/OrderChannelPartner'
      checkout:
        $ref: '#/definitions/OrderCheckout'
      coupons:
        description: Coupons
        type: array
        items:
          $ref: '#/definitions/OrderCoupon'
      creation_dts:
        description: Date/time that the order was created
        type: string
        format: dateTime
      currency_code:
        description: Currency code that the customer used if different than the merchant's base currency code
        type: string
        maxLength: 3
      current_stage:
        description: Current stage that the order is in.
        type: string
        enum: [
          "Accounts Receivable",
          "Pending Clearance",
          "Fraud Review",
          "Rejected",
          "Shipping Department",
          "Completed Order",
          "Quote Request",
          "Quote Sent",
          "Least Cost Routing",
          "Unknown",
          "Pre-ordered",
          "Advanced Order Routing",
          "Hold"
        ]
      current_stage_histories:
        description: History of the changes to the current_stage field
        type: array
        items:
          $ref: '#/definitions/OrderCurrentStageHistory'
      customer_profile:
        $ref: '#/definitions/Customer'
      digital_order:
        $ref: '#/definitions/OrderDigitalOrder'
      edi:
        $ref: '#/definitions/OrderEdi'
      exchange_rate:
        description: Exchange rate at the time the order was placed if currency code is different than the base currency
        type: number
      fraud_score:
        $ref: '#/definitions/OrderFraudScore'
      gift:
        $ref: '#/definitions/OrderGift'
      gift_certificate:
        $ref: '#/definitions/OrderGiftCertificate'
      internal:
        $ref: '#/definitions/OrderInternal'
      items:
        description: Items
        type: array
        items:
          $ref: '#/definitions/OrderItem'
      language_iso_code:
        description: Three letter ISO-639 language code used by the customer during the checkout if different than the default language
        type: string
        maxLength: 3
      linked_shipment:
        $ref: '#/definitions/OrderLinkedShipment'
      marketing:
        $ref: '#/definitions/OrderMarketing'
      merchant_id:
        description: UltraCart merchant ID owning this order
        type: string
      order_id:
        description: Order ID
        type: string
      payment:
        $ref: '#/definitions/OrderPayment'
      point_of_sale:
        $ref: '#/definitions/OrderPointOfSale'
      properties:
        description: Properties, available only through update, not through insert due to the nature of how properties are handled internally
        type: array
        items:
          $ref: '#/definitions/OrderProperty'
      quote:
        $ref: '#/definitions/OrderQuote'
      refund_dts:
        description: If the order was refunded, the date/time that the last refund occurred
        type: string
        format: dateTime
      refund_reason:
        description: Refund reason code.  This can only be written during a refund operation otherwise this field is read only.
        type: string
      reject_dts:
        description: If the order was rejected, the date/time that the rejection occurred
        type: string
        format: dateTime
      reject_reason:
        description: Reject reason code.  This can only be written during a reject operation otherwise this field is read only.
        type: string
      salesforce:
        $ref: '#/definitions/OrderSalesforce'
      shipping:
        $ref: '#/definitions/OrderShipping'
      summary:
        $ref: '#/definitions/OrderSummary'
      Tags:
        description: tags, available only through update, not through insert due to the nature of how tags are handled internally
        type: array
        items:
          $ref: '#/definitions/OrderTag'
      taxes:
        $ref: '#/definitions/OrderTaxes'
      utms:
        description: UTM clicks.  The zero index is the most recent (last) UTM click
        type: array
        items:
          $ref: '#/definitions/OrderUtm'
  OrderAffiliate:
    type: object
    properties:
      affiliate_oid:
        description: Affiliate ID
        type: integer
        format: int32
      ledger_entries:
        description: Ledger entries associated with all the commissions earned on this order
        type: array
        items:
          $ref: '#/definitions/OrderAffiliateLedger'
      sub_id:
        description: Sub identifier provided by the affiliate on the click that generated this order
        type: string
  OrderAffiliateLedger:
    type: object
    properties:
      assigned_by_user:
        description: UltraCart user name that assigned this commission if manually assigned
        type: string
      item_id:
        description: Item ID that this ledger record is associated with
        type: string
      tier_number:
        description: Tier number of this affiliate in the commission calculation
        type: integer
        format: int32
      transaction_amount:
        description: Amount of the transaction
        type: number
      transaction_amount_paid:
        description: The amount that has been paid so far on the transaction
        type: number
      transaction_dts:
        description: The date/time that the affiliate ledger was generated for the transaction
        type: string
        format: dateTime
      transaction_memo:
        description: Details of the transaction suitable for display to the affiliate
        type: string
      transaction_percentage:
        description: The percentage earned on the transaction
        type: number
      transaction_state:
        description: The state of the transaction
        type: string
        enum: [
          "Pending",
          "Posted",
          "Approved",
          "Paid",
          "Rejected",
          "Partially Paid"
        ]
  OrderAutoOrder:
    type: object
    properties:
      auto_order_code:
        description: Unique code assigned to this auto order
        type: string
      auto_order_oid:
        description: Auto order object identifier
        type: integer
        format: int32
      cancel_after_next_x_orders:
        description: Cancel this auto order after X additional rebills
        type: integer
        format: int32
      cancel_downgrade:
        description: True if the auto order was canceled because the customer purchased a downgrade item
        type: boolean
      cancel_reason:
        description: The reason this auto order was canceled by either merchant or customer
        type: string
      cancel_upgrade:
        description: True if the auto order was canceled because the customer purchased an upgrade item
        type: boolean
      canceled_by_user:
        description: The user that canceled the auto order
        type: string
      canceled_dts:
        description: The date/time that the auto order was canceled
        type: string
        format: dateTime
      completed:
        description: True if the auto order ran successfully to completion
        type: boolean
      credit_card_attempt:
        description: The number of credit card attempts that have taken place
        type: integer
        format: int32
      disabled_dts:
        description: The date/time the auto order was disabled due to failed rebills
        type: string
        format: dateTime
      enabled:
        description: True if this auto order is enabled
        type: boolean
      failure_reason:
        description: The reason this auto order failed during the last rebill attempt
        type: string
      items:
        description: The items that are setup to rebill
        type: array
        items:
          $ref: '#/definitions/AutoOrderItem'
      next_attempt:
        description: The next time that the auto order will be attempted for processing
        type: string
        format: dateTime
      original_order_id:
        description: The original order id that this auto order is associated with.
        type: string
      override_affiliate_id:
        description: Override the affiliate id given credit for rebills of this auto order
        type: integer
        format: int32
      rebill_orders:
        description: Rebill orders that have taken place on this auto order
        type: array
        items:
          $ref: '#/definitions/Order'
      rotating_transaction_gateway_code:
        description: The RTG code associated with this order for future rebills
        type: string
      status:
        description: The status of the auto order
        type: string
        enum: [
          "active",
          "canceled",
          "disabled"
        ]
  OrderBilling:
    type: object
    properties:
      address1:
        description: Address line 1
        type: string
        maxLength: 50
      address2:
        description: Address line 2
        type: string
        maxLength: 50
      cc_emails:
        description: CC emails.  Multiple allowed, but total length of all emails can not exceed 100 characters.
        type: array
        items:
          type: string
      cell_phone:
        description: Cell phone
        type: string
        maxLength: 25
      cell_phone_e164:
        description: Cell phone (E164 format)
        type: string
        maxLength: 25
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      day_phone:
        description: Day time phone
        type: string
        maxLength: 25
      day_phone_e164:
        description: Day time phone (E164 format)
        type: string
        maxLength: 25
      email:
        description: Email
        type: string
        maxLength: 100
      evening_phone:
        description: Evening phone
        type: string
        maxLength: 25
      evening_phone_e164:
        description: Evening phone (E164 format)
        type: string
        maxLength: 25
      first_name:
        description: First name
        type: string
        maxLength: 30
      last_name:
        description: Last name
        type: string
        maxLength: 30
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      state_region:
        description: State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      title:
        description: Title
        type: string
        maxLength: 50
  OrderBuysafe:
    type: object
    properties:
      buysafe_bond_available:
        description: True if a buySAFE bond was available for purchase on this order
        type: boolean
      buysafe_bond_cost:
        $ref: '#/definitions/Currency'
      buysafe_bond_free:
        description: True if the buySAFE bond was free for this order
        type: boolean
      buysafe_bond_refunded:
        $ref: '#/definitions/Currency'
      buysafe_bond_wanted:
        description: True if the buySAFE bond was wanted by the customer
        type: boolean
      buysafe_shopping_cart_id:
        description: Shopping cart ID associated with the buySAFE bond
        type: string
  OrderByTokenQuery:
    type: object
    properties:
      order_token:
        description: Order Token
        type: string
  OrderChannelPartner:
    type: object
    properties:
      auto_approve_purchase_order:
        description: If true, any purchase order submitted is automatically approved
        type: boolean
      channel_partner_code:
        description: The code of the channel partner
        type: string
      channel_partner_data:
        description: Additional data provided by the channel partner, read-only
        type: string
      channel_partner_oid:
        description: Channel partner object identifier, read-only and available on existing channel orders only.
        type: integer
        format: int32
      channel_partner_order_id:
        description: The order ID assigned by the channel partner for this order.
        type: string
        maxLength: 50
      ignore_invalid_shipping_method:
        description: Set to true to ignore invalid shipping method being specified.  Only applicable on inserting orders.
        type: boolean
      no_realtime_payment_processing:
        description: Indicates this order should be placed in Account Receivable for later payment processing
        type: boolean
      skip_payment_processing:
        description: Indicates this order was already paid for via a channel purchase and no payment collection should be attempted
        type: boolean
      store_completed:
        description: Instructs UltraCart to skip shipping department and mark this order as fully complete.  This flag defaults to true.  Set this flag to false to shipped product for this order.
        type: boolean
      store_if_payment_declines:
        description: If true, any failed payment will place the order in Accounts Receivable rather than rejecting it.
        type: boolean
      treat_warnings_as_errors:
        description: Any warnings are raised as errors and halt the import of the order
        type: boolean
  OrderCheckout:
    type: object
    properties:
      browser:
        $ref: '#/definitions/Browser'
      comments:
        description: Comments from the customer.  Rarely used on the single page checkout.
        type: string
      custom_field1:
        description: Custom field 1
        type: string
        maxLength: 50
      custom_field10:
        description: Custom field 10
        type: string
        maxLength: 200
      custom_field2:
        description: Custom field 2
        type: string
        maxLength: 50
      custom_field3:
        description: Custom field 3
        type: string
        maxLength: 50
      custom_field4:
        description: Custom field 4
        type: string
        maxLength: 50
      custom_field5:
        description: Custom field 5
        type: string
        maxLength: 75
      custom_field6:
        description: Custom field 6
        type: string
        maxLength: 50
      custom_field7:
        description: Custom field 7
        type: string
        maxLength: 50
      custom_field8:
        description: Custom field 8
        type: string
        maxLength: 200
      custom_field9:
        description: Custom field 9
        type: string
        maxLength: 200
      customer_ip_address:
        description: IP address of the customer when placing the order
        type: string
      screen_branding_theme_code:
        description: Screen branding theme code associated with the order (legacy checkout)
        type: string
        maxLength: 10
      screen_size:
        description: Screen size small, medium or large
        type: string
      storefront_host_name:
        description: StoreFront host name associated with the order
        type: string
      upsell_path_code:
        description: Upsell path code assigned during the checkout that the customer went through
        type: string
  OrderCoupon:
    type: object
    properties:
      accounting_code:
        description: QuickBooks accounting code for this coupon
        type: string
      automatically_applied:
        description: Whether or not the coupon was automatically applied to the order
        type: boolean
      base_coupon_code:
        description: Coupon code configured by the merchant.  Will differ if the customer used a one time coupon code generated off this base coupon
        type: string
        maxLength: 20
      coupon_code:
        description: Coupon code entered by the customer
        type: string
        maxLength: 20
      hdie_from_customer:
        description: True if this coupon is hide from the customer
        type: boolean
  OrderCurrentStageHistory:
    type: object
    properties:
      after_stage:
        description: New stage that the order is in.
        type: string
        enum: [
          "Accounts Receivable",
          "Pending Clearance",
          "Fraud Review",
          "Rejected",
          "Shipping Department",
          "Completed Order",
          "Quote Request",
          "Quote Sent",
          "Least Cost Routing",
          "Unknown",
          "Pre-ordered",
          "Advanced Order Routing",
          "Hold"
        ]
      before_stage:
        description: Previous stage that the order was in.
        type: string
        enum: [
          "Accounts Receivable",
          "Pending Clearance",
          "Fraud Review",
          "Rejected",
          "Shipping Department",
          "Completed Order",
          "Quote Request",
          "Quote Sent",
          "Least Cost Routing",
          "Unknown",
          "Pre-ordered",
          "Advanced Order Routing",
          "Hold"
        ]
      transition_dts:
        description: Date/time that the stage transitioned
        type: string
        format: dateTime
  OrderDigitalItem:
    type: object
    properties:
      file_size:
        description: File size
        type: integer
        format: int64
      last_download:
        description: Last download
        type: string
        format: dateTime
      last_download_ip_address:
        description: IP address that performed the last download
        type: string
      original_filename:
        description: Original file name
        type: string
      product_code:
        description: Item id associated with this item
        type: string
      product_description:
        description: Item description associated with this item
        type: string
      remaining_downloads:
        description: Remaining number of downloads
        type: integer
        format: int32
      url:
        description: URL that the customer can click to download the specific digital item
        type: string
  OrderDigitalOrder:
    type: object
    properties:
      creation_dts:
        description: Date/time that the digital order was created
        type: string
        format: dateTime
      expiration_dts:
        description: Expiration date/time of the digital order
        type: string
        format: dateTime
      items:
        description: Digital items associated with the digital order
        type: array
        items:
          $ref: '#/definitions/OrderDigitalItem'
      url:
        description: URL where the customer can go to and download their digital order content
        type: string
      url_id:
        description: URL ID is a unique code that is part of the URLs
        type: string
  OrderEdi:
    type: object
    properties:
      bill_to_edi_code:
        description: Billing address identification code from the EDI order.  Typically DUNS or DUNS+4
        type: string
      edi_department:
        description: Department number associated with this EDI order
        type: string
      edi_internal_vendor_number:
        description: Internal vendor number associated with this EDI order
        type: string
        maxLength: 50
      ship_to_edi_code:
        description: Shipping address identification code from the EDI order.  Typically DUNS or DUNS+4
        type: string
  OrderEdiDocument:
    type: object
    properties:
      direction:
        description: Direction the document flowed
        type: string
        enum: [
          "inbound",
          "outbound"
        ]
      doc_dts:
        description: Date/time the document was created/received
        type: string
        format: dateTime
      document:
        type: string
      document_type_description:
        type: string
      document_type_number:
        type: integer
        format: int32
      external_id:
        type: string
      functional_acknowledgement:
        type: string
      functional_acknowledgement_dts:
        type: string
      functional_acknowledgement_pending:
        type: boolean
      group_control_number:
        type: integer
        format: int32
      internal_id:
        type: string
      merchant_id:
        type: string
      order_id:
        type: string
      test_mode:
        type: boolean
  OrderEdiDocumentsResponse:
    type: object
    properties:
      ediDocuments:
        description: edi_documents
        type: array
        items:
          $ref: '#/definitions/OrderEdiDocument'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderFormat:
    type: object
    properties:
      context:
        description: The context to generate the order view for.
        type: string
      dont_link_email_to_search:
        description: True to not link the email address to the order search
        type: boolean
      email_as_link:
        description: True to make the email address a clickable mailto link
        type: boolean
      filter_distribution_center_oid:
        description: Specify a distribution center oid to filter the items displayed to that particular distribution center.
        type: integer
        format: int32
      filter_to_items_in_container_oid:
        description: The container oid to filter items to.
        type: integer
        format: int32
      format:
        description: The desired format.
        type: string
        enum: [
          "text",
          "div",
          "table",
          "email"
        ]
      hide_bill_to_address:
        description: True to ide the bill to address
        type: boolean
      hide_price_information:
        description: True to hide price information
        type: boolean
      link_file_attachments:
        description: True to link file attachments for download
        type: boolean
      show_contact_info:
        description: True to show contact information
        type: boolean
      show_in_merchant_currency:
        description: True to show the order in the merchant currency
        type: boolean
      show_internal_information:
        description: True to show internal information about the order
        type: boolean
      show_merchant_notes:
        description: True to show merchant notes
        type: boolean
      show_non_sensitive_payment_info:
        description: True to show non-sensitive payment information
        type: boolean
      show_payment_info:
        description: True to show payment information
        type: boolean
      translate:
        description: True to translate the order into the native language of the customer
        type: boolean
  OrderFormatResponse:
    type: object
    properties:
      css_links:
        description: The URLs to any stylesheets that need to be included to properly view the markup.
        type: array
        items:
          type: string
      formatted_result:
        description: The formatted result of the order.  This will be HTML or text depending upon the requested format.
        type: string
  OrderFraudScore:
    type: object
    properties:
      anonymous_proxy:
        description: True if the IP address is a known anonymous proxy server
        type: boolean
      bin_match:
        description: Whether the BIN (first six digits) matched the country
        type: string
        enum: [
          "NA",
          "No",
          "NotFound",
          "Yes"
        ]
      carder_email:
        description: True if the email address belongs to a known credit card fraudster
        type: boolean
      country_code:
        description: Country code
        type: string
      country_match:
        description: Country code matches BIN country
        type: boolean
      customer_phone_in_billing_location:
        description: Whether the customer's phone number is located in the area of the billing address
        type: string
      distance_km:
        description: Distance in kilometers between the IP address and the BIN
        type: integer
        format: int32
      free_email:
        description: True if the email address is for a free service like gmail.com
        type: boolean
      high_risk_country:
        description: True if the customer is in a high risk country known for internet fraud
        type: boolean
      ip_city:
        description: City associated with the IP address
        type: string
      ip_isp:
        description: ISP that owns the IP address
        type: string
      ip_latitude:
        description: Approximate latitude associated with the IP address
        type: string
      ip_longitude:
        description: Approximate longitude associated with the IP address
        type: string
      ip_org:
        description: Organization that owns the IP address
        type: string
      ip_region:
        description: State/region associated with the IP address
        type: string
      proxy_score:
        description: Likelihood of the IP address being a proxy server
        type: number
      score:
        description: Overall score.  This is the score that is compared to see if the order is rejected or held for review by the fraud filter rules.
        type: number
      ship_forwarder:
        description: True if the address is a known ship forwarding company
        type: boolean
      spam_score:
        description: Likelihood of the email address being associated with a spammer
        type: number
      transparent_proxy:
        description: True if the IP address that placed the order is a transparent proxy server
        type: boolean
  OrderGift:
    type: object
    properties:
      gift:
        description: True if the order is a gift
        type: boolean
      gift_charge:
        $ref: '#/definitions/Currency'
      gift_charge_accounting_code:
        description: QuickBooks code for the gift charge
        type: string
      gift_charge_refunded:
        $ref: '#/definitions/Currency'
      gift_email:
        description: Email address of the gift recipient
        type: string
        maxLength: 100
      gift_message:
        description: Message to the gift recipient
        type: string
        maxLength: 10000
      gift_wrap_accounting_code:
        description: QuickBooks code for the gift wrap charge
        type: string
      gift_wrap_cost:
        $ref: '#/definitions/Currency'
      gift_wrap_refunded:
        $ref: '#/definitions/Currency'
      gift_wrap_title:
        description: Title of the gift wrap that the customer wants used
        type: string
        maxLength: 30
  OrderGiftCertificate:
    type: object
    properties:
      gift_certificate_amount:
        $ref: '#/definitions/Currency'
      gift_certificate_code:
        description: Gift certificate code used on the order
        type: string
      gift_certificate_oid:
        description: Gift certificate object identifier
        type: integer
        format: int32
  OrderInternal:
    type: object
    properties:
      exported_to_accounting:
        description: True if the order has been exported to QuickBooks. If QuickBooks is not configured, then this will already be true
        type: boolean
      merchant_notes:
        description: Merchant notes.  Full notes in non-transactional mode.  Just used to write a new merchant note when transaction merchant notes enabled.
        type: string
      placed_by_user:
        description: If placed via the BEOE, this is the user that placed the order
        type: string
      refund_by_user:
        description: User that issued the refund
        type: string
      sales_rep_code:
        description: Sales rep code associated with the order
        type: string
        maxLength: 10
      transactional_merchant_notes:
        description: Transactional merchant notes
        type: array
        items:
          $ref: '#/definitions/OrderTransactionalMerchantNote'
  OrderInvoiceResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      pdfBase64:
        description: pdf_base64
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderItem:
    type: object
    properties:
      accounting_code:
        description: QuickBooks code
        type: string
      activation_codes:
        description: Activation codes assigned to this item
        type: array
        items:
          type: string
      actual_cogs:
        $ref: '#/definitions/Currency'
      arbitrary_unit_cost:
        $ref: '#/definitions/Currency'
      auto_order_last_rebill_dts:
        description: Date/time of the last rebill, used only during order insert to help project future rebills
        type: string
        format: dateTime
      auto_order_schedule:
        description: Auto order schedule, used only during inserts supplying the recurring schedule
        type: string
      barcode:
        description: Barcode
        type: string
      barcode_gtin12:
        description: Barcode - GTIN 12
        type: string
        maxLength: 12
      barcode_gtin14:
        description: Barcode - GTIN 14
        type: string
        maxLength: 14
      barcode_upc11:
        description: Barcode - UPC 11
        type: string
        maxLength: 11
      barcode_upc12:
        description: Barcode - UPC 12
        type: string
        maxLength: 12
      channel_partner_item_id:
        description: Channel partner item id if this order came through a channel partner and the channel partner item id was mapped to an internal item id
        type: string
        maxLength: 30
      cogs:
        description: Cost of goods sold
        type: number
      component_unit_value:
        description: Value of the kit component item
        type: number
      cost:
        $ref: '#/definitions/Currency'
      country_code_of_origin:
        description: Country of origin (ISO-3166 two letter code)
        type: string
        maxLength: 2
      customs_description:
        description: Customs description
        type: string
      description:
        description: Description
        type: string
        maxLength: 2000
      discount:
        $ref: '#/definitions/Currency'
      discount_quantity:
        description: Discount quantity
        type: number
      discount_shipping_weight:
        $ref: '#/definitions/Weight'
      distribution_center_code:
        description: Distribution center code responsible for shipping this item
        type: string
      edi:
        $ref: '#/definitions/OrderItemEdi'
      exclude_coupon:
        description: True if this item is excluded from coupons
        type: boolean
      free_shipping:
        description: True if the item receives free shipping
        type: boolean
      hazmat:
        description: Hazardous materials indicator
        type: boolean
      height:
        $ref: '#/definitions/Distance'
      item_index:
        description: Index of the item on the order (one based index)
        type: integer
        format: int32
      item_reference_oid:
        description: Item reference object identifier used to linked to auto order item record
        type: integer
        format: int32
      kit:
        description: True if this item is a kit
        type: boolean
      kit_component:
        description: True if this item is a kit component
        type: boolean
      length:
        $ref: '#/definitions/Distance'
      manufacturer_sku:
        description: Manufacturer SKU
        type: string
      max_days_time_in_transit:
        description: Maximum days that the item can be in transit before spoilage (perishable products)
        type: integer
        format: int32
      merchant_item_id:
        description: Item ID
        type: string
        maxLength: 20
      mix_and_match_group_name:
        description: Mix and match group name
        type: string
      mix_and_match_group_oid:
        description: Mix and match group object identifier
        type: integer
        format: int32
      no_shipping_discount:
        description: True if this item is excluded from shipping discounts
        type: boolean
      options:
        description: Options
        type: array
        items:
          $ref: '#/definitions/OrderItemOption'
      packed_by_user:
        description: Packed by user
        type: string
      parent_item_index:
        description: If this item is a kit component, this is the item index of the parent item (kit)
        type: integer
        format: int32
      parent_merchant_item_id:
        description: If this item is a kit component, this is the item id of the parent item (kit)
        type: string
        maxLength: 20
      perishable_class:
        description: Perishable class of the item
        type: string
        maxLength: 50
      pricing_tier_name:
        description: Pricing tier that granted the particular price for this item if the customer profile had pricing tiers assigned
        type: string
      properties:
        description: Properties
        type: array
        items:
          $ref: '#/definitions/OrderItemProperty'
      quantity:
        description: Quantity
        type: number
      quantity_refunded:
        description: Quantity refunded on this item (read only except refund operation)
        type: number
      quickbooks_class:
        description: QuickBooks class
        type: string
        maxLength: 31
      refund_reason:
        description: Refund reason code.  This can only be written during a refund operation otherwise this field is read only.
        type: string
      return_reason:
        description: Return reason code.  This can only be written during a refund operation otherwise this field is read only.
        type: string
      ship_separately:
        description: True if this item ships in a separate box
        type: boolean
      shipped_by_user:
        description: Shipped by user
        type: string
      shipped_dts:
        description: Date/time that this item was marked shipped
        type: string
        format: dateTime
      shipping_status:
        description: Shipping status for this item.  This is the replacement for the old order level shipping status.
        type: string
      special_product_type:
        description: Special product type (USPS Media Mail)
        type: string
      tags:
        description: Tags
        type: array
        items:
          $ref: '#/definitions/OrderItemTag'
      tax_free:
        description: True if the item is tax free
        type: boolean
      tax_product_type:
        description: Type of product for tax purposes (self or UltraCart Managed taxes)
        type: string
        enum: [
          "",
          "digital",
          "physical",
          "service"
        ]
      taxable_cost:
        $ref: '#/definitions/Currency'
      total_cost_with_discount:
        $ref: '#/definitions/Currency'
      total_refunded:
        $ref: '#/definitions/Currency'
      transmitted_to_distribution_center_dts:
        description: Date/time that this item was transmitted to the distribution center
        type: string
        format: dateTime
      unit_cost_with_discount:
        $ref: '#/definitions/Currency'
      upsell:
        description: True if this item was added to the order as part of an upsell
        type: boolean
      weight:
        $ref: '#/definitions/Weight'
      width:
        $ref: '#/definitions/Distance'
  OrderItemEdi:
    type: object
    properties:
      identifications:
        description: Identification information receives on the EDI purchase order
        type: array
        items:
          $ref: '#/definitions/OrderItemEdiIdentification'
      lots:
        description: Lot information
        type: array
        items:
          $ref: '#/definitions/OrderItemEdiLot'
  OrderItemEdiIdentification:
    type: object
    properties:
      identification:
        description: Identification value
        type: string
      quantity:
        description: Quantity associated with this identifier
        type: integer
        format: int32
  OrderItemEdiLot:
    type: object
    properties:
      lot_expiration:
        description: Log expiration
        type: string
        format: dateTime
      lot_number:
        description: Lot number
        type: string
      lot_quantity:
        description: Lot quantity
        type: integer
        format: int32
  OrderItemOption:
    type: object
    properties:
      additional_dimension_application:
        description: How the additional dimensions are applied to the item.
        type: string
        enum: [
          "none",
          "set item to",
          "add item"
        ]
      cost_change:
        $ref: '#/definitions/Currency'
      file_attachment:
        $ref: '#/definitions/OrderItemOptionFileAttachment'
      height:
        $ref: '#/definitions/Distance'
      hidden:
        description: True if this option is hidden from display on the order
        type: boolean
      label:
        description: Label
        type: string
        maxLength: 50
      length:
        $ref: '#/definitions/Distance'
      one_time_fee:
        description: True if the cost associated with this option is a one time fee or multiplied by the quantity of the item
        type: boolean
      value:
        description: Value
        type: string
        maxLength: 1024
      weight_change:
        $ref: '#/definitions/Weight'
      width:
        $ref: '#/definitions/Distance'
  OrderItemOptionFileAttachment:
    type: object
    properties:
      expiration_dts:
        description: Expiration date/time
        type: string
        format: dateTime
      file_name:
        description: File name
        type: string
      mime_type:
        description: Mime type
        type: string
      size:
        description: Size
        type: integer
        format: int32
  OrderItemProperty:
    type: object
    properties:
      display:
        description: True if this property is displayed to the customer
        type: boolean
      expiration_dts:
        description: The date/time that the property expires and is deleted
        type: string
        format: dateTime
      name:
        description: Name
        type: string
        maxLength: 100
      value:
        description: Value
        type: string
        maxLength: 3800
  OrderItemTag:
    type: object
    properties:
      tag_value:
        description: Tag Value
        type: string
        maxLength: 100
  OrderLinkedShipment:
    type: object
    properties:
      has_linked_shipment:
        description: True if this order has child linked shipments
        type: boolean
      linked_shipment:
        description: True if this order is linked to another parent order
        type: boolean
      linked_shipment_channel_partner_order_ids:
        description: The child linked shipment channel partner order ids
        type: array
        items:
          type: string
      linked_shipment_order_ids:
        description: The child linked shipment order ids
        type: array
        items:
          type: string
      linked_shipment_to_order_id:
        description: The parent order id that this one is linked to
        type: string
  OrderMarketing:
    type: object
    properties:
      advertising_source:
        description: Advertising source
        type: string
        maxLength: 50
      cell_phone_opt_in:
        description: True if the customer has opted into SMS marketing
        type: boolean
      mailing_list:
        description: True if the customer has opted into mailing list subscription
        type: boolean
      referral_code:
        description: Referral code
        type: string
        maxLength: 30
  OrderPackingSlipResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      pdfBase64:
        description: pdf_base64
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderPayment:
    type: object
    properties:
      check:
        $ref: '#/definitions/OrderPaymentCheck'
      credit_card:
        $ref: '#/definitions/OrderPaymentCreditCard'
      echeck:
        $ref: '#/definitions/OrderPaymentECheck'
      health_benefit_card:
        $ref: '#/definitions/OrderPaymentHealthBenefitCard'
      hold_for_fraud_review:
        description: True if order has been held for fraud review
        type: boolean
      insurance:
        $ref: '#/definitions/OrderPaymentInsurance'
      payment_dts:
        description: Date/time that the payment was successfully processed, for new orders, this field is only considered if channel_partner.skip_payment_processing is true
        type: string
        format: dateTime
      payment_method:
        description: Payment method
        type: string
        enum: [
          "Affirm",
          "Amazon",
          "Amazon Pay",
          "Amazon SC",
          "Cash",
          "Check",
          "COD",
          "Credit Card",
          "Crypto",
          "eBay",
          "eCheck",
          "Google Shopping",
          "Goldbelly",
          "GoHighLevel",
          "Insurance",
          "Link",
          "LoanHero",
          "Money Order",
          "PayPal",
          "Purchase Order",
          "Quote Request",
          "Unknown",
          "Wire Transfer",
          "Walmart",
          "Shop.com",
          "Sezzle",
          "Venmo",
          "Apple Pay",
          "Google Pay",
          "Health Benefit Card",
          "PayPal Fastlane"
        ]
      payment_method_accounting_code:
        description: Payment method QuickBooks code
        type: string
      payment_method_deposit_to_account:
        description: Payment method QuickBooks deposit account
        type: string
      payment_status:
        description: Payment status
        type: string
        enum: [
          "Unprocessed",
          "Authorized",
          "Capture Failed",
          "Processed",
          "Declined",
          "Voided",
          "Refunded",
          "Skipped"
        ]
      paypal:
        $ref: '#/definitions/OrderPaymentPayPal'
      purchase_order:
        $ref: '#/definitions/OrderPaymentPurchaseOrder'
      rotating_transaction_gateway_code:
        description: Rotating transaction gateway code used to process this order
        type: string
      surcharge:
        $ref: '#/definitions/Currency'
      surcharge_accounting_code:
        description: Surcharge accounting code
        type: string
      surcharge_transaction_fee:
        description: Surcharge transaction fee
        type: number
      surcharge_transaction_percentage:
        description: Surcharge transaction percentage
        type: number
      test_order:
        description: True if this is a test order
        type: boolean
      transactions:
        description: Transactions associated with processing this payment
        type: array
        items:
          $ref: '#/definitions/OrderPaymentTransaction'
  OrderPaymentCheck:
    type: object
    properties:
      check_number:
        description: Check number
        type: string
  OrderPaymentCreditCard:
    type: object
    properties:
      card_auth_ticket:
        description: Card authorization ticket
        type: string
      card_authorization_amount:
        description: Card authorization amount
        type: number
      card_authorization_dts:
        description: Card authorization date/time
        type: string
        format: dateTime
      card_authorization_reference_number:
        description: Card authorization reference number
        type: string
      card_expiration_month:
        description: Card expiration month (1-12)
        type: integer
        format: int32
      card_expiration_year:
        description: Card expiration year (Four digit year)
        type: integer
        format: int32
      card_number:
        description: Card number (masked to last 4)
        type: string
      card_number_token:
        description: Card number token from hosted fields used to update the card number
        type: string
      card_number_truncated:
        description: True if the card has been truncated
        type: boolean
      card_type:
        description: Card type
        type: string
        enum: [
          "AMEX",
          "Diners Club",
          "Discover",
          "JCB",
          "MasterCard",
          "VISA"
        ]
      card_verification_number_token:
        description: Card verification number token from hosted fields, only for import/insert of new orders, completely ignored for updates, and always null/empty for queries
        type: string
      dual_vaulted:
        $ref: '#/definitions/OrderPaymentCreditCardDualVaulted'
  OrderPaymentCreditCardDualVaulted:
    type: object
    properties:
      gateway_name:
        type: string
      properties:
        type: array
        items:
          $ref: '#/definitions/OrderPaymentCreditCardDualVaultedProperty'
      rotating_transaction_gateway_code:
        type: string
  OrderPaymentCreditCardDualVaultedProperty:
    type: object
    properties:
      name:
        type: string
      value:
        type: string
  OrderPaymentECheck:
    type: object
    properties:
      bank_aba_code:
        description: Bank routing code
        type: string
        maxLength: 9
      bank_account_name:
        description: Bank account name
        type: string
        maxLength: 50
      bank_account_number:
        description: Bank account number (masked to last 4)
        type: string
        maxLength: 50
      bank_account_type:
        description: Bank account type
        type: string
        enum: [
          "Checking",
          "Savings"
        ]
      bank_name:
        description: Bank name
        type: string
        maxLength: 50
      bank_owner_type:
        description: Bank owner type
        type: string
        enum: [
          "Personal",
          "Business"
        ]
      customer_tax_id:
        description: Customer tax id (masked to last 4)
        type: string
        maxLength: 9
      drivers_license_dob:
        description: Driver license date of birth
        type: string
        maxLength: 10
      drivers_license_number:
        description: Driver license number (masked to last 4)
        type: string
        maxLength: 50
      drivers_license_state:
        description: Driver license state
        type: string
        maxLength: 2
  OrderPaymentHealthBenefitCard:
    type: object
    properties:
      health_benefit_card_expiration_month:
        description: Health benefit card expiration month (1-12)
        type: integer
        format: int32
      health_benefit_card_expiration_year:
        description: Health benefit card expiration year (Four digit year)
        type: integer
        format: int32
      health_benefit_card_number:
        description: Health benefit card number (masked to last 4)
        type: string
      health_benefit_card_number_token:
        description: Health benefit card number token from hosted fields used to update the health benefit card number
        type: string
      health_benefit_card_number_truncated:
        description: True if the health benefit card has been truncated
        type: boolean
      health_benefit_card_verification_number_token:
        description: Health benefit card verification number token from hosted fields, only for import/insert of new orders, completely ignored for updates, and always null/empty for queries
        type: string
  OrderPaymentInsurance:
    type: object
    properties:
      application_id:
        description: application id
        type: string
      claim_id:
        description: claim id
        type: string
      insurance_type:
        description: insurance type
        type: string
      refund_claim_id:
        description: refund claim id
        type: string
  OrderPaymentPayPal:
    type: object
    properties:
      customer_id:
        description: PayPal Customer ID
        type: string
      vault_id:
        description: PayPal Vault ID
        type: string
  OrderPaymentPurchaseOrder:
    type: object
    properties:
      purchase_order_number:
        description: Purchase order number
        type: string
  OrderPaymentTransaction:
    type: object
    properties:
      details:
        description: Details
        type: array
        items:
          $ref: '#/definitions/OrderPaymentTransactionDetail'
      successful:
        description: True if the transaction was successful
        type: boolean
      transaction_gateway:
        description: Transaction gateway
        type: string
      transaction_id:
        description: Transaction ID
        type: integer
        format: int32
      transaction_timestamp:
        description: Transaction date/time
        type: string
        format: dateTime
  OrderPaymentTransactionDetail:
    type: object
    properties:
      name:
        description: Name
        type: string
      type:
        description: Type
        type: string
      value:
        description: Value
        type: string
  OrderPointOfSale:
    type: object
    properties:
      location:
        $ref: '#/definitions/PointOfSaleLocation'
      reader:
        $ref: '#/definitions/PointOfSaleReader'
      register:
        $ref: '#/definitions/PointOfSaleRegister'
  OrderProcessPaymentRequest:
    type: object
    properties:
      amount:
        description: Specific amount to bill (optional).  If not specified the total of the order is billed.
        type: number
      card_verification_number_token:
        description: Card verification number token from hosted fields used during credit card transaction processing (optional)
        type: string
  OrderProcessPaymentResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      payment_transaction:
        $ref: '#/definitions/OrderPaymentTransaction'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderProperty:
    type: object
    properties:
      created_by:
        description: Created by user
        type: string
        maxLength: 20
      created_dts:
        description: The date/time that the property was created by the user
        type: string
        format: dateTime
      display:
        description: True if this property is displayed to the customer
        type: boolean
      expiration_dts:
        description: The date/time that the property expires and is deleted
        type: string
        format: dateTime
      name:
        description: Name
        type: string
        maxLength: 100
      value:
        description: Value
        type: string
        maxLength: 1500
  OrderQuery:
    type: object
    properties:
      cc_email:
        description: CC Email
        type: string
        maxLength: 100
      channel_partner_code:
        description: The code of the channel partner
        type: string
      channel_partner_order_id:
        description: The order ID assigned by the channel partner for this order
        type: string
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      creation_date_begin:
        description: Date/time that the order was created
        type: string
        format: dateTime
      creation_date_end:
        description: Date/time that the order was created
        type: string
        format: dateTime
      current_stage:
        description: Current stage that the order is in.
        type: string
        enum: [
          "Accounts Receivable",
          "Pending Clearance",
          "Fraud Review",
          "Rejected",
          "Shipping Department",
          "Completed Order",
          "Quote Request",
          "Quote Sent",
          "Least Cost Routing",
          "Unknown"
        ]
      custom_field_1:
        description: Custom field 1
        type: string
      custom_field_10:
        description: Custom field 10
        type: string
      custom_field_2:
        description: Custom field 2
        type: string
      custom_field_3:
        description: Custom field 3
        type: string
      custom_field_4:
        description: Custom field 4
        type: string
      custom_field_5:
        description: Custom field 5
        type: string
      custom_field_6:
        description: Custom field 6
        type: string
      custom_field_7:
        description: Custom field 7
        type: string
      custom_field_8:
        description: Custom field 8
        type: string
      custom_field_9:
        description: Custom field 9
        type: string
      customer_profile_oid:
        description: The customer profile to find associated orders for
        type: integer
        format: int32
      email:
        description: Email
        type: string
        maxLength: 100
      first_name:
        description: First name
        type: string
        maxLength: 30
      item_id:
        description: Item ID
        type: string
      last_name:
        description: Last name
        type: string
        maxLength: 30
      order_id:
        description: Order ID
        type: string
      payment_date_begin:
        description: Date/time that the order was successfully processed
        type: string
        format: dateTime
      payment_date_end:
        description: Date/time that the order was successfully processed
        type: string
        format: dateTime
      payment_method:
        description: Payment method
        type: string
        enum: [
          "Affirm",
          "Amazon",
          "Amazon SC",
          "Cash",
          "Check",
          "COD",
          "Credit Card",
          "eCheck",
          "LoanHero",
          "Money Order",
          "PayPal",
          "Purchase Order",
          "Quote Request",
          "Unknown",
          "Wire Transfer",
          "Venmo",
          "Apple Pay",
          " Google Pay",
          "PayPal Fastlane"
        ]
      phone:
        description: Phone
        type: string
        maxLength: 25
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      purchase_order_number:
        description: Purchase order number
        type: string
      query_target:
        description: Query Target
        type: string
        enum: [
          "origin",
          "cache"
        ]
      refund_date_begin:
        description: Date/time that the order was refunded
        type: string
        format: dateTime
      refund_date_end:
        description: Date/time that the order was refunded
        type: string
        format: dateTime
      rma:
        description: RMA number
        type: string
        maxLength: 30
      screen_branding_theme_code:
        description: Screen branding theme code associated with the order (legacy checkout)
        type: string
        maxLength: 10
      shipment_date_begin:
        description: Date/time that the order was shipped
        type: string
        format: dateTime
      shipment_date_end:
        description: Date/time that the order was shipped
        type: string
        format: dateTime
      shipped_on_date_begin:
        description: Date/time that the order should ship on
        type: string
        format: dateTime
      shipped_on_date_end:
        description: Date/time that the order should ship on
        type: string
        format: dateTime
      state_region:
        description: State for United States otherwise region or province for other countries
        type: string
        maxLength: 32
      storefront_host_name:
        description: StoreFront host name associated with the order
        type: string
      total:
        description: Total
        type: number
  OrderQueryBatch:
    type: object
    properties:
      order_ids:
        description: Order IDs
        type: array
        items:
          type: string
      query_target:
        description: Query Target
        type: string
        enum: [
          "origin",
          "cache"
        ]
  OrderQuote:
    type: object
    properties:
      quote_expiration_dts:
        description: Expiration of quote at date/time
        type: string
        format: dateTime
      quoted_by:
        description: Quoted by user
        type: string
      quoted_dts:
        description: Quoted on date/time
        type: string
        format: dateTime
  OrderReason:
    type: object
    properties:
      default_reason:
        description: Default reason
        type: boolean
      description:
        description: Reason description.  This is the friendly description of the reason that should be displayed to the user.
        type: string
      value:
        description: Reason value.  This is what should be submitted with a refund operation.
        type: string
  OrderRefundableResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      item_level_refund_reason_required:
        description: True if the item level refund reason is required
        type: boolean
      item_level_refund_reasons:
        description: Reason codes available at the item level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      item_level_return_reasons:
        description: Return codes available at the item level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      manual_because_multiple_charges:
        description: If true, this refund will have to be manually done because of additional charges with the virtual terminal were made
        type: boolean
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      order_level_refund_reason_required:
        description: True if the order level refund reason is required
        type: boolean
      order_level_refund_reasons:
        description: Reason codes available at the order level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      order_level_reject_reason_required:
        description: True if the order level reject reason is required
        type: boolean
      order_level_reject_reasons:
        description: Reject codes available at the order level.
        type: array
        items:
          $ref: '#/definitions/OrderReason'
      refundable:
        description: Whether the order is refundable or not.  Null should be interpreted as false.
        type: boolean
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderReplacement:
    type: object
    properties:
      additional_merchant_notes_new_order:
        description: Additional merchant notes to append to the new order
        type: string
      additional_merchant_notes_original_order:
        description: Additional merchant notes to append to the original order
        type: string
      custom_field1:
        description: Custom field 1
        type: string
        maxLength: 50
      custom_field2:
        description: Custom field 2
        type: string
        maxLength: 50
      custom_field3:
        description: Custom field 3
        type: string
        maxLength: 50
      custom_field4:
        description: Custom field 4
        type: string
        maxLength: 50
      custom_field5:
        description: Custom field 5
        type: string
        maxLength: 75
      custom_field6:
        description: Custom field 6
        type: string
        maxLength: 50
      custom_field7:
        description: Custom field 7
        type: string
        maxLength: 50
      free:
        description: Set to true if this replacement shipment should be free for the customer.
        type: boolean
      immediate_charge:
        description: Set to true if you want to immediately charge the payment on this order, otherwise it will go to Accounts Receivable.
        type: boolean
      items:
        description: Items to include in the replacement order
        type: array
        items:
          $ref: '#/definitions/OrderReplacementItem'
      original_order_id:
        description: Original order id
        type: string
      shipping_method:
        description: Shipping method to use.  If not specified or invalid then least cost shipping will take place.
        type: string
      skip_payment:
        description: Set to true if you want to skip the payment as if it was successful.
        type: boolean
  OrderReplacementItem:
    type: object
    properties:
      arbitrary_unit_cost:
        description: Cost to charge the customer if specified.  If not specified then the default item cost is used.
        type: number
      merchant_item_id:
        description: Item ID
        type: string
        maxLength: 20
      quantity:
        description: Quantity
        type: number
  OrderReplacementResponse:
    type: object
    properties:
      chargeSuccessful:
        type: boolean
      errorMessage:
        type: string
      feedback:
        type: string
      free:
        type: boolean
      orderId:
        type: string
      successful:
        type: boolean
  OrderResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      order:
        $ref: '#/definitions/Order'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderSalesforce:
    type: object
    properties:
      salesforce_opportunity_id:
        description: Salesforce.com opportunity id
        type: string
  OrderShipping:
    type: object
    properties:
      address1:
        description: Address line 1
        type: string
        maxLength: 50
      address2:
        description: Address line 2
        type: string
        maxLength: 50
      city:
        description: City
        type: string
        maxLength: 32
      company:
        description: Company
        type: string
        maxLength: 50
      country_code:
        description: ISO-3166 two letter country code
        type: string
        maxLength: 2
      day_phone:
        description: Day time phone
        type: string
        maxLength: 25
      day_phone_e164:
        description: Day time phone (E164 format)
        type: string
        maxLength: 25
      delivery_date:
        description: Date the customer is requesting delivery on.  Typically used for perishable product delivery.
        type: string
        format: dateTime
      evening_phone:
        description: Evening phone
        type: string
        maxLength: 25
      evening_phone_e164:
        description: Evening phone (E164 format)
        type: string
        maxLength: 25
      first_name:
        description: First name
        type: string
        maxLength: 30
      last_name:
        description: Last name
        type: string
        maxLength: 30
      least_cost_route:
        description: If true, instructs UltraCart to apply the cheapest shipping method to this order.  Used only for channel partner order inserts.
        type: boolean
      least_cost_route_shipping_methods:
        description: List of shipping methods to consider if least_code_route is true. Used only for channel parter order inserts.
        type: array
        items:
          type: string
      lift_gate:
        description: Lift gate requested (LTL shipping methods only)
        type: boolean
      pickup_dts:
        description: Date/time the order should be picked up locally.
        type: string
        format: dateTime
      postal_code:
        description: Postal code
        type: string
        maxLength: 20
      rma:
        description: RMA number
        type: string
        maxLength: 30
      ship_on_date:
        description: Date the customer is requesting that the order ship on.  Typically used for perishable product delivery.
        type: string
        format: dateTime
      ship_to_residential:
        description: True if the shipping address is residential.  Effects the methods that are available to the customer as well as the price of the shipping method.
        type: boolean
      shipping_3rd_party_account_number:
        description: Shipping 3rd party account number
        type: string
        maxLength: 20
      shipping_date:
        description: Date/time the order shipped on.  This date is set once the first shipment is sent to the customer.
        type: string
        format: dateTime
      shipping_department_status:
        description: Shipping department status
        type: string
        maxLength: 30
      shipping_method:
        description: Shipping method
        type: string
      shipping_method_accounting_code:
        description: Shipping method accounting code
        type: string
      special_instructions:
        description: Special instructions from the customer regarding shipping
        type: string
      state_region:
        description: State
        type: string
        maxLength: 32
      title:
        description: Title
        type: string
        maxLength: 50
      tracking_number_details:
        description: Tracking number details
        type: array
        items:
          $ref: '#/definitions/OrderTrackingNumberDetails'
      tracking_numbers:
        description: Tracking numbers
        type: array
        items:
          type: string
      weight:
        $ref: '#/definitions/Weight'
  OrdersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      orders:
        description: orders
        type: array
        items:
          $ref: '#/definitions/Order'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderSummary:
    type: object
    properties:
      actual_fulfillment:
        $ref: '#/definitions/Currency'
      actual_other_cost:
        $ref: '#/definitions/Currency'
      actual_payment_processing:
        $ref: '#/definitions/Currency'
      actual_profit:
        $ref: '#/definitions/Currency'
      actual_profit_analyzed:
        description: Actual profit has been analyzed
        type: boolean
      actual_profit_review:
        description: Actual profit needs review
        type: boolean
      actual_shipping:
        $ref: '#/definitions/Currency'
      arbitrary_shipping_handling_total:
        $ref: '#/definitions/Currency'
      health_benefit_card_amount:
        $ref: '#/definitions/Currency'
      health_benefit_card_refunded:
        $ref: '#/definitions/Currency'
      internal_gift_certificate_amount:
        $ref: '#/definitions/Currency'
      internal_gift_certificate_refunded:
        $ref: '#/definitions/Currency'
      other_refunded:
        $ref: '#/definitions/Currency'
      shipping_handling_refunded:
        $ref: '#/definitions/Currency'
      shipping_handling_total:
        $ref: '#/definitions/Currency'
      shipping_handling_total_discount:
        $ref: '#/definitions/Currency'
      subtotal:
        $ref: '#/definitions/Currency'
      subtotal_discount:
        $ref: '#/definitions/Currency'
      subtotal_discount_refunded:
        $ref: '#/definitions/Currency'
      subtotal_refunded:
        $ref: '#/definitions/Currency'
      tax:
        $ref: '#/definitions/Currency'
      tax_refunded:
        $ref: '#/definitions/Currency'
      taxable_subtotal:
        $ref: '#/definitions/Currency'
      taxable_subtotal_discount:
        $ref: '#/definitions/Currency'
      total:
        $ref: '#/definitions/Currency'
      total_refunded:
        $ref: '#/definitions/Currency'
  OrderTag:
    type: object
    properties:
      tag_value:
        description: Tag Value
        type: string
        maxLength: 100
  OrderTaxes:
    type: object
    properties:
      arbitrary_tax:
        description: Arbitrary Tax, this is meaningless for updating an order.  For inserting a new order, this will override any internal tax calculations and should only be used for orders completed outside the system.
        type: number
      arbitrary_tax_rate:
        description: Arbitrary tax rate, this is meaningless for updating an order.  For inserting a new order, this will override any internal tax calculations and should only be used for orders completed outside the system.
        type: number
      arbitrary_taxable_subtotal:
        description: Arbitrary taxable subtotal, this is meaningless for updating an order.  For inserting a new order, this will override any internal tax calculations and should only be used for orders completed outside the system.
        type: number
      tax_city_accounting_code:
        description: QuickBooks tax city code
        type: string
      tax_country_accounting_code:
        description: QuickBooks tax country code
        type: string
      tax_county:
        description: County used for tax calculation purposes (only in the United States)
        type: string
        maxLength: 32
      tax_county_accounting_code:
        description: QuickBooks tax county code
        type: string
      tax_gift_charge:
        description: True if gift charge is taxed
        type: boolean
      tax_postal_code_accounting_code:
        description: QuickBooks tax postal code code
        type: string
      tax_rate:
        description: Tax rate, this is meaningless for updating an order.  For inserting a new order, if you need to override internal tax calculations, use the arbitrary fields.
        type: number
      tax_rate_city:
        description: Tax rate at the city level
        type: number
      tax_rate_country:
        description: Tax rate at the country level
        type: number
      tax_rate_county:
        description: Tax rate at the county level
        type: number
      tax_rate_postal_code:
        description: Tax rate at the postal code level
        type: number
      tax_rate_state:
        description: Tax rate at the state level
        type: number
      tax_shipping:
        description: True if shipping is taxed
        type: boolean
      tax_state_accounting_code:
        description: QuickBooks tax state code
        type: string
  OrderTokenResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      order_token:
        description: An order token that securely represents an order id
        type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  OrderTrackingNumberDetail:
    type: object
    properties:
      city:
        type: string
      event_dts:
        description: ISO 8601 timestamp that the event occurred
        type: string
        format: dateTime
      event_local_date:
        type: string
      event_local_time:
        type: string
      event_timezone_id:
        description: Timezone the event occurred in.  Use this in conjunction with event_dts to format a local date/time.
        type: string
      state:
        type: string
      subtag:
        type: string
      subtag_message:
        type: string
      tag:
        type: string
      tag_description:
        type: string
      tag_icon:
        type: string
      zip:
        type: string
  OrderTrackingNumberDetails:
    type: object
    properties:
      actual_delivery_date:
        type: string
      actual_delivery_date_formatted:
        type: string
      details:
        type: array
        items:
          $ref: '#/definitions/OrderTrackingNumberDetail'
      easypost_tracker_id:
        type: string
      expected_delivery_date:
        type: string
      expected_delivery_date_formatted:
        type: string
      map_url:
        type: string
      order_placed_date:
        type: string
      order_placed_date_formatted:
        type: string
      payment_processed_date:
        type: string
      payment_processed_date_formatted:
        type: string
      shipped_date:
        type: string
      shipped_date_formatted:
        type: string
      shipping_method:
        type: string
      status:
        type: string
      status_description:
        type: string
      tracking_number:
        type: string
      tracking_url:
        type: string
  OrderTransactionalMerchantNote:
    type: object
    properties:
      ip_address:
        description: IP Address
        type: string
      note:
        description: note
        type: string
      note_dts:
        description: Timestamp when the note was added
        type: string
        format: dateTime
      user:
        description: User that wrote the merchant note
        type: string
  OrderUtm:
    type: object
    properties:
      attribution_first_click_subtotal:
        type: number
      attribution_first_click_total:
        type: number
      attribution_last_click_subtotal:
        type: number
      attribution_last_click_total:
        type: number
      attribution_linear_subtotal:
        type: number
      attribution_linear_total:
        type: number
      attribution_position_based_subtotal:
        type: number
      attribution_position_based_total:
        type: number
      click_dts:
        description: Date/time that the click happened
        type: string
        format: dateTime
      facebook_ad_id:
        type: string
      fbclid:
        type: string
      gbraid:
        type: string
      glcid:
        type: string
      itm_campaign:
        type: string
      itm_content:
        type: string
      itm_id:
        type: string
      itm_medium:
        type: string
      itm_source:
        type: string
      itm_term:
        type: string
      msclkid:
        type: string
      short_code:
        type: string
      short_code_backup:
        type: boolean
      ttclid:
        type: string
      uc_message_id:
        type: string
      utm_campaign:
        type: string
      utm_content:
        type: string
      utm_id:
        type: string
      utm_medium:
        type: string
      utm_source:
        type: string
      utm_term:
        type: string
      vmcid:
        type: string
      wbraid:
        type: string
  OrderValidationRequest:
    type: object
    properties:
      checks:
        description: Checks to perform
        type: array
        items:
          type: string
        enum: [
          All,
          Billing Address Provided,
          Billing Phone Numbers Provided,
          Billing State Abbreviation Valid,
          Billing Validate City State Zip,
          Email provided if required,
          Gift Message Length,
          Items Present,
          Referral Code Provided,
          Shipping Address Provided,
          Shipping Method Provided,
          Shipping State Abbreviation Valid,
          Shipping Validate City State Zip
        ]
      order:
        $ref: '#/definitions/Order'
  OrderValidationResponse:
    type: object
    properties:
      errors:
        description: Errors to display to the merchant if they failed any of the validations checked
        type: array
        items:
          type: string
      messages:
        description: Informational messages
        type: array
        items:
          type: string
      order_was_updated:
        description: If true, this order was updated during the validation call.  This may happen during address standardization fixes.
        type: boolean
  Permission:
    type: object
    properties:
      permission_group:
        description: A group for this permission.  This name is only used for visual grouping within interfaces.
        type: string
      permission_Name:
        description: The name of this permission.
        type: string
      selected:
        description: True if this user has this permission.
        type: boolean
  PointOfSaleLocation:
    type: object
    properties:
      adddress2:
        description: Address line 2
        type: string
      address1:
        description: Address line 1
        type: string
      city:
        description: City
        type: string
      country:
        description: Country
        type: string
      distribution_center_code:
        description: The distribution center code where inventory is reduced from for this sale.
        type: string
      external_id:
        description: External Id useful for syncing with a remote filesystem, this may be an MD5 hash or whatever suits your needs.
        type: string
        maxLength: 100
      merchant_id:
        description: Merchant ID that owns this location
        type: string
      pos_location_oid:
        description: Object identifier of the point of sale location.
        type: integer
        format: int32
      postal_code:
        description: Postal code
        type: string
      state_province:
        description: State/province
        type: string
  PointOfSaleReader:
    type: object
    properties:
      device_type:
        description: The device type of the reader.
        type: string
      label:
        description: The label of the reader.
        type: string
      merchant_id:
        description: The merchant id that owns this point of sale reader.
        type: string
      payment_provider:
        description: The payment provider for the card reader.
        type: string
        enum: [
          "stripe"
        ]
      pos_reader_id:
        description: Object identifier of the point of sale reader.
        type: integer
        format: int32
      pos_register_oid:
        description: Object identifier of the point of sale register this reader is assigned to.
        type: integer
        format: int32
      serial_number:
        description: The serial number of the reader.
        type: string
      stripe_account_id:
        description: If the payment provider is Stripe, this is the Stripe account id
        type: string
      stripe_reader_id:
        description: If the payment provide is Stripe, this is the Stripe terminal reader id
        type: string
  PointOfSaleRegister:
    type: object
    properties:
      merchant_id:
        description: The merchant id that owns this point of sale register.
        type: string
      name:
        description: Name of the register.
        type: string
      pos_location_oid:
        description: Object identifier of the point of sale location where this register is located.
        type: integer
        format: int32
      pos_register_oid:
        description: Object identifier of the point of sale register.
        type: integer
        format: int32
  PricingTier:
    type: object
    properties:
      allow_3rd_party_billing:
        description: Allow 3rd party billing
        type: boolean
      allow_cod:
        description: Allow COD
        type: boolean
      allow_purchase_order:
        description: Allow purchase order
        type: boolean
      allow_quote_request:
        description: Allow quote request
        type: boolean
      approval_notification:
        $ref: '#/definitions/PricingTierNotification'
      auto_approve_cod:
        description: Auto approve COD
        type: boolean
      auto_approve_purchase_order:
        description: Auto approve purchase order
        type: boolean
      currency_code:
        description: Any currency code specified on this pricing tier will force a shopping cart into that currency
        type: string
      default_on_wholesale_signup:
        description: Default on wholesale signup
        type: boolean
      default_percentage_discount:
        description: Default percentage discount
        type: number
      default_shipping_method_oid:
        description: Default shipping method oid
        type: integer
        format: int32
      default_tier:
        description: Default tier
        type: boolean
      display_on_wholesale_signup:
        description: Display on wholesale signup
        type: boolean
      exclude_from_free_promotion:
        description: Exclude from free promotion
        type: boolean
      exempt_loyalty_rewards:
        description: Exempt from Loyalty Rewards
        type: boolean
      exempt_shipping_handling_charge:
        description: Exempt shipping handling charge
        type: boolean
      free_shipping:
        description: Free shipping
        type: boolean
      free_shipping_minimum:
        description: Free shipping minimum
        type: number
      maximum_item_count:
        description: Maximum item count
        type: integer
        format: int32
      minimum_item_count:
        description: Minimum item count
        type: integer
        format: int32
      minimum_subtotal:
        description: Minimum subtotal
        type: number
      name:
        description: Name
        type: string
        maxLength: 50
      no_coupons:
        description: No coupons
        type: boolean
      no_free_shipping:
        description: No free shipping
        type: boolean
      no_realtime_charge:
        description: No realtime charge
        type: boolean
      not_valid_when_coupon_present:
        description: Not valid when coupon present
        type: boolean
      pricing_tier_oid:
        description: Pricing Tier Oid
        type: integer
        format: int32
        maxLength: 50
      realtime_percentage_discount:
        description: Realtime percentage discount
        type: number
      restrict_to_distribution_center_oid:
        description: Restrict inventory to this distribution center oid
        type: integer
        format: int32
      signup_notification:
        $ref: '#/definitions/PricingTierNotification'
      suppress_buysafe:
        description: Suppress buySAFE (deprecated)
        type: boolean
      suppress_mailing_list:
        description: Suppress mailing list
        type: boolean
      tax_exempt:
        description: Tax Exempt
        type: boolean
      track_separately:
        description: Track separately
        type: boolean
  PricingTierNotification:
    type: object
    properties:
      format:
        description: Notification format
        type: string
        maxLength: 16
      subject:
        description: Notification subject
        type: string
        maxLength: 100
      text:
        description: Notification text
        type: string
  PricingTiersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      pricingTiers:
        description: pricing_tiers
        type: array
        items:
          $ref: '#/definitions/PricingTier'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Property:
    type: object
    properties:
      name:
        type: string
      value:
        type: string
  PublishLibraryItemRequest:
    type: object
    properties:
      release_notes:
        description: Release notes for this release version.
        type: string
  RegisterAffiliateClickRequest:
    type: object
    properties:
      affid:
        description: Affiliate Id (must be specified if landing_page_url is not)
        type: integer
        format: int32
      ip_address:
        description: IP Address (must be specified for non-browser key authenticated)
        type: string
      landing_page_url:
        description: Landing Page URL
        type: string
      referrer_url:
        description: Referrer URL (used for detecting invisible linking)
        type: string
      subid:
        description: Sub Id (optional value if affid is specified.
        type: string
      user_agent:
        description: User agent of the browser (must be specified for non-browser key authenticated)
        type: string
  RegisterAffiliateClickResponse:
    type: object
    properties:
      cookie_max_age:
        description: The cookie max age to use
        type: integer
        format: int32
      cookie_names:
        description: The names of all the cookies to set on the browser
        type: array
        items:
          type: string
      cookie_values:
        description: The values of all the cookies to set on the browser
        type: array
        items:
          type: string
      registered:
        description: True if a click was registered
        type: boolean
  ReplaceOrderItemIdRequest:
    type: object
    properties:
      item_index:
        description: Index of the item on the order.  Must match order.items[].item_index
        type: integer
        format: int32
      merchant_item_id:
        description: Item ID
        type: string
        maxLength: 20
      order_id:
        description: Order ID
        type: string
      replacement_merchant_item_id:
        description: Replacement Item ID
        type: string
        maxLength: 20
  Report:
    type: object
    properties:
      active:
        type: boolean
      data_sources:
        type: array
        items:
          $ref: '#/definitions/ReportDataSource'
      default_dataset_id:
        type: string
      default_project_id:
        type: string
      filters:
        type: array
        items:
          $ref: '#/definitions/ReportFilter'
      merchant_id:
        type: string
      name:
        type: string
      pages:
        type: array
        items:
          $ref: '#/definitions/ReportPage'
      report_oid:
        description: Object identifier for this report.
        type: integer
        format: int32
      security_level:
        description: Security level to execute report under
        type: string
        enum: [
          "standard",
          "low",
          "medium",
          "high"
        ]
      settings:
        description: A JSON representation of the settings for this report
        type: string
  ReportAuth:
    type: object
    properties:
      client_uuid:
        description: Unique UUID assigned to this client
        type: string
      jwt:
        type: string
      merchant_id:
        type: string
      websocket_url:
        type: string
  ReportAuthResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      report_auth:
        $ref: '#/definitions/ReportAuth'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ReportDataSet:
    type: object
    properties:
      data_set_query_uuid:
        description: A unique identifier assigned to the data set query that is returned.
        type: string
      data_set_uuid:
        description: A unique identifier assigned to the data set that is returned.
        type: string
      destination_table_id:
        description: The BigQuery destination table id that contains the result.
        type: string
      error_message:
        description: Error message if the query failed.
        type: string
      executed_sql:
        type: string
      for_object_id:
        description: An identifier that can be used to help match up the returned data set
        type: string
      for_object_type:
        description: The type of object this data set is for
        type: string
        enum: [
          "schema",
          "filter",
          "visualization"
        ]
      initial_pages:
        description: Initial pages returned in the dataset
        type: array
        items:
          $ref: '#/definitions/ReportDataSetPage'
      max_results:
        description: The total number of results
        type: integer
        format: int64
      merchant_id:
        description: Merchant that owns this data set
        type: string
      page_count:
        description: The total number of pages in the result set
        type: integer
        format: int32
      page_size:
        description: The size of the pages
        type: integer
        format: int32
      request_dts:
        description: Date/Time of the client submitted the request.  Can be used to resolve out of order query completion results
        type: string
        format: dateTime
      schema:
        description: The schema associated with the data set.
        type: array
        items:
          $ref: '#/definitions/ReportDataSetSchema'
      security_level:
        description: Security level this dataset was read from.
        type: string
      timezone:
        type: string
      user_data:
        description: Any other data that needs to be returned with the response to help the UI
        type: string
  ReportDataSetColumn:
    type: object
    properties:
      in:
        type: boolean
      n:
        type: string
      vd:
        type: string
      vdt:
        type: string
      vn:
        type: number
      vo:
      vs:
        type: string
  ReportDataSetPage:
    type: object
    properties:
      data_set_uuid:
        description: A unique identifier assigned to the data set that is returned.
        type: string
      merchant_id:
        description: Merchant that owns this data set
        type: string
      next_page_token:
        type: string
      next_start_index:
        type: integer
        format: int32
      page_number:
        type: integer
        format: int32
      row_count:
        type: integer
        format: int32
      rows:
        description: Rows returned for the data set
        type: array
        items:
          $ref: '#/definitions/ReportDataSetRow'
      rows_s3_url:
        description: Signed S3 URL where the page rows can be downloaded from
        type: string
      start_index:
        description: Zero based index of the starting row
        type: integer
        format: int32
      table_id:
        description: The BigQuery destination table id that contains the result.
        type: string
  ReportDataSetPageResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      page:
        $ref: '#/definitions/ReportDataSetPage'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ReportDataSetQuery:
    type: object
    properties:
      comparison_results:
        description: True if a date range filter is provided with comparison date ranges and two results should be returned for the query.
        type: boolean
      data_set_query_uuid:
        description: A unique identifier assigned to the data set query that is returned.
        type: string
      data_source:
        $ref: '#/definitions/ReportDataSource'
      dimensions:
        type: array
        items:
          $ref: '#/definitions/ReportPageVisualizationDimension'
      filter:
        $ref: '#/definitions/ReportFilter'
      for_object_id:
        description: An identifier that can be used to help match up the returned data set
        type: string
      for_object_type:
        description: The type of object this data set is for
        type: string
        enum: [
          "schema",
          "filter",
          "visualization"
        ]
      metrics:
        type: array
        items:
          $ref: '#/definitions/ReportPageVisualizationMetric'
      order_by_columns:
        description: The columns to order by in the final result.  If not specified the dimensions will be used
        type: array
        items:
          $ref: '#/definitions/ReportDataSetQueryOrderByColumn'
      page_size:
        description: Result set page size.  The default value is 200 records.  Max is 10000.
        type: integer
        format: int32
      selected_filters:
        type: array
        items:
          $ref: '#/definitions/ReportFilter'
      skip_cache:
        description: True if the 15 minute cache should be skipped.
        type: boolean
      user_data:
        description: Any other data that needs to be returned with the response to help the UI
        type: string
  ReportDataSetQueryOrderByColumn:
    type: object
    properties:
      ascending:
        type: boolean
      column_name:
        type: string
  ReportDataSetResponse:
    type: object
    properties:
      data_set:
        $ref: '#/definitions/ReportDataSet'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ReportDataSetRow:
    type: object
    properties:
      c:
        type: array
        items:
          $ref: '#/definitions/ReportDataSetColumn'
  ReportDataSetSchema:
    type: object
    properties:
      config:
        description: A JSON representation of the configuration for this visualization
        type: string
      name:
        type: string
      type:
        description: Type of the column.
        type: string
        enum: [
          "BIGNUMERIC",
          "BOOL",
          "DATE",
          "DATETIME",
          "FLOAT64",
          "INT64",
          "JSON",
          "NUMERIC",
          "STRING",
          "TIME",
          "TIMESTAMP"
        ]
  ReportDataSource:
    type: object
    properties:
      data_source_uuid:
        description: A unique identifier assigned to the data source.
        type: string
      name:
        type: string
      partition_date_column:
        type: string
      partition_date_safety_days:
        type: integer
        format: int32
      partition_date_strategy:
        description: The partition date strategy, defaults to weekly sunday
        type: string
      schema:
        type: array
        items:
          $ref: '#/definitions/ReportDataSourceSchema'
      sql:
        type: string
  ReportDataSourceSchema:
    type: object
    properties:
      config:
        description: A JSON representation of the configuration for this visualization
        type: string
      dimension:
        description: Whether or not this column can be used as a dimension within a visualization
        type: boolean
      name:
        type: string
      type:
        description: Type of the column.  Only supporting the allowed values.  Any other types will be ignored.
        type: string
        enum: [
          "BIGNUMERIC",
          "BOOL",
          "DATE",
          "DATETIME",
          "FLOAT64",
          "INT64",
          "JSON",
          "NUMERIC",
          "STRING",
          "TIME",
          "TIMESTAMP"
        ]
  ReportDryRunQueriesRequest:
    type: object
    properties:
      connection_id:
        type: string
      default_dataset_id:
        type: string
      default_project_id:
        type: string
      merchant_id:
        type: string
      queries:
        type: array
        items:
          $ref: '#/definitions/ReportDataSetQuery'
      security_level:
        type: string
  ReportDryRunQueriesResponse:
    type: object
    properties:
      dry_run_query_results:
        type: array
        items:
          $ref: '#/definitions/ReportDryRunQueryResult'
  ReportDryRunQueryResult:
    type: object
    properties:
      error_message:
        type: string
      total_bytes_processed:
        type: integer
        format: int64
  ReportExecuteQueriesRequest:
    type: object
    properties:
      client_uuid:
        description: Unique UUID assigned to this client during the auth.  This will be used to locate the websocket connect id.
        type: string
      connection_id:
        description: The websocket connection id that should receive back notices of query completion.
        type: string
      default_dataset_id:
        type: string
      default_project_id:
        type: string
      merchant_id:
        type: string
      queries:
        description: An array of queries that we want the lambda function to execute.
        type: array
        items:
          $ref: '#/definitions/ReportDataSetQuery'
      request_dts:
        description: Date/Time of the client submitted the request.  Can be used to resolve out of order query completion results
        type: string
        format: dateTime
      security_level:
        description: Security level to execute report under
        type: string
        enum: [
          "standard",
          "low",
          "medium",
          "high"
        ]
  ReportFilter:
    type: object
    properties:
      connections:
        description: How this filter connects to the data sources and columns
        type: array
        items:
          $ref: '#/definitions/ReportFilterConnection'
      name:
        type: string
      timezone:
        description: The timezone that the date range is querying on.
        type: string
      type:
        description: Type of filter
        type: string
        enum: [
          "date range",
          "date comparison",
          "single value",
          "multiple values"
        ]
      uuid:
        description: Unique UUID assigned to the filter.  Assists when returning values that the filter can use.
        type: string
      values:
        description: The selected values for the filter.  When used, some type conversion will need to occur.
        type: array
        items:
          type: string
  ReportFilterConnection:
    type: object
    properties:
      column:
        type: string
      data_source_name:
        type: string
      data_source_uuid:
        description: A unique identifier assigned to the data source.
        type: string
  ReportPage:
    type: object
    properties:
      filters:
        type: array
        items:
          $ref: '#/definitions/ReportPageFilter'
      height:
        description: Height of the report page in inches
        type: number
      settings:
        description: A JSON representation of the settings for this report
        type: string
      title:
        type: string
      visualizations:
        description: Visualizations on the report page.
        type: array
        items:
          $ref: '#/definitions/ReportPageVisualization'
      width:
        description: Width of the report page in inches
        type: number
  ReportPageFilter:
    type: object
    properties:
      config:
        description: A JSON representation of the configuration for this visualization
        type: string
      name:
        type: string
      styles:
        description: A JSON representation of the style configuration for this visualization
        type: string
      uuid:
        description: Unique UUID assigned to the filter.  Assists when returning values that the filter can use.
        type: string
  ReportPageVisualization:
    type: object
    properties:
      config:
        description: A JSON representation of the configuration for this visualization
        type: string
      data_source_name:
        type: string
      data_source_uuid:
        description: A unique identifier assigned to the data source.
        type: string
      dimensions:
        type: array
        items:
          $ref: '#/definitions/ReportPageVisualizationDimension'
      metrics:
        type: array
        items:
          $ref: '#/definitions/ReportPageVisualizationMetric'
      name:
        type: string
      show_comparison:
        description: True if the visualization should show a comparison based upon the date range
        type: boolean
      styles:
        description: A JSON representation of the style configuration for this visualization
        type: string
      type:
        description: Type of visualization
        type: string
        enum: [
          "score card",
          "line chart",
          "bar chart",
          "text",
          "table",
          "gauge",
          "pie chart"
        ]
      visualization_uuid:
        description: A UUID for the visualization
        type: string
  ReportPageVisualizationDimension:
    type: object
    properties:
      as:
        description: Return the column as a different name
        type: string
      cast:
        description: Cast the column to a different data type such as DATETIME -> DATE
        type: string
      column:
        type: string
      datetime_timezone:
        description: The timezone to shift the date to
        type: string
      datetime_trunc:
        description: The type of truncation to perform on the date, DAY, WEEK(MONDAY), etc.
        type: string
      extract:
        description: Part of a datetime to extract
        type: string
      function:
        description: The function to perform around the column such as DATE_TRUNC(@column, day)
        type: string
  ReportPageVisualizationMetric:
    type: object
    properties:
      aggregation:
        description: Aggregation to perform
        type: string
        enum: [
          "sum",
          "count",
          "min",
          "max",
          "avg",
          "none"
        ]
      as:
        description: Return the column as a different name
        type: string
      column:
        type: string
      round:
        description: Number of places after the decimal point to round the number to.
        type: integer
        format: int32
  ReportResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      report:
        $ref: '#/definitions/Report'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ReportsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      reports:
        type: array
        items:
          $ref: '#/definitions/Report'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ReportWebsocketEvent:
    type: object
    properties:
      event_type:
        description: Event type
        type: string
        enum: [
          "ping",
          "query completion"
        ]
      query_completion:
        $ref: '#/definitions/ReportDataSet'
  ResponseMetadata:
    type: object
    properties:
      payload_name:
        description: Payload name
        type: string
      result_set:
        $ref: '#/definitions/ResultSet'
  ResultSet:
    type: object
    properties:
      count:
        description: Number of results in this set
        type: integer
        format: int32
      limit:
        description: Maximum number of results that can be returned in a set
        type: integer
        format: int32
      more:
        description: True if there are more results to query
        type: boolean
      next_offset:
        description: The next offset that you should query to retrieve more results
        type: integer
        format: int32
      offset:
        description: Offset of this result set (zero based)
        type: integer
        format: int32
      total_records:
        description: The total number of records in the result set.  May be null if the number is not known and the client should continue iterating as long as more is true.
        type: integer
        format: int32
  RulerValidationRequest:
    type: object
    properties:
      ruler:
        type: string
  RulerValidationResponse:
    type: object
    properties:
      error_message:
        type: string
      valid:
        type: boolean
  ScreenRecording:
    type: object
    properties:
      ad_platform:
        $ref: '#/definitions/ScreenRecordingAdPlatform'
      analytics_client_oid:
        type: integer
        format: int64
      analytics_session_dts:
        type: integer
        format: int64
      analytics_session_oid:
        type: integer
        format: int64
      communications_campaign_name:
        description: Campaign Name
        type: string
      communications_campaign_uuid:
        description: Campaign UUID
        type: string
      communications_email_subject:
        description: Email subject
        type: string
      communications_email_uuid:
        description: Email UUID
        type: string
      communications_flow_name:
        description: Flow Name
        type: string
      communications_flow_uuid:
        description: Flow UUID
        type: string
      email:
        type: string
      email_domain:
        type: string
      end_timestamp:
        description: Ending timestamp
        type: string
        format: dateTime
      esp_customer_uuid:
        type: string
      events_gz_size:
        type: integer
        format: int32
      events_json_key:
        type: string
      favorite:
        description: True if the user calling the API has favorited this particular screen recording.
        type: boolean
      favorites:
        description: Array of user ids that favorited this particular screen recording.
        type: array
        items:
          type: integer
      geolocation:
        $ref: '#/definitions/GeoPoint'
      geolocation_country:
        type: string
      geolocation_state:
        type: string
      language_iso_code:
        description: Language ISO code
        type: string
      merchant_id:
        type: string
      merchant_notes:
        type: string
      missing_external_tracking:
        description: True if external page view was not tracked
        type: boolean
      order_id:
        type: string
      page_view_count:
        type: integer
        format: int32
      page_views:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingPageView'
      preferred_language:
        description: ISO 3 Letter language code that the customer would prefer
        type: string
      referrer_domain:
        type: string
      rrweb_version:
        type: string
      screen_recording_uuid:
        type: string
      signed_download_url:
        type: string
      start_timestamp:
        description: Starting timestamp
        type: string
        format: dateTime
      storefront_oids:
        type: array
        items:
          type: integer
      storefronts:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingStoreFront'
      tags:
        type: array
        items:
          type: string
      time_on_site:
        type: integer
        format: int32
      ucacid:
        type: string
      user_agent:
        $ref: '#/definitions/ScreenRecordingUserAgent'
      user_agent_raw:
        type: string
      user_ip:
        type: string
      user_properties:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingUserProperty'
      utm_campaign:
        description: UTM Campaign
        type: string
      utm_source:
        description: UTM Source
        type: string
      visitor_first_seen:
        description: Timestamp this visitor was first seen
        type: string
        format: dateTime
      visitor_number:
        type: integer
        format: int32
      watched:
        type: boolean
      window_height:
        type: integer
        format: int32
      window_width:
        type: integer
        format: int32
  ScreenRecordingAdPlatform:
    type: object
    properties:
      fbc:
        description: Facebook Click Id (Cookie)
        type: string
      fbclid:
        description: Facebook Click Id Parameter (Parameter)
        type: string
      fbp:
        description: Facebook Browser Id (Cookie)
        type: string
      gacid:
        description: Google Analytics CID (Cookie)
        type: string
      glcid:
        description: Google Adwords Click Id (Parameter)
        type: string
      msclkid:
        description: Bing Click Id (Parameter
        type: string
      ttclid:
        description: TikTok Click Id (Parameter
        type: string
  ScreenRecordingFilter:
    type: object
    properties:
      affiliate_email:
        type: string
      affiliate_id:
        type: integer
        format: int32
      communications_campaign_name:
        type: string
      communications_campaign_name_filter:
        type: boolean
      communications_email_subject:
        type: string
      communications_email_subject_filter:
        type: boolean
      communications_flow_name:
        type: string
      communications_flow_name_filter:
        type: boolean
      email:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      email_domain:
        type: string
      email_domain_filter:
        type: boolean
      email_identified:
        type: boolean
      end_timestamp:
        $ref: '#/definitions/ScreenRecordingFilterRangeDate'
      esp_customer_uuid:
        type: string
      favorite:
        type: boolean
      geolocation:
        $ref: '#/definitions/ScreenRecordingFilterGeoDistance'
      geolocation_country:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      geolocation_country_filter:
        type: boolean
      geolocation_state:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      geolocation_state_filter:
        type: boolean
      language_iso_code:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      language_iso_code_filter:
        type: boolean
      last_x_days:
        type: integer
        format: int32
      max_filter_values:
        type: integer
        format: int32
      order_id:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      page_view_count:
        $ref: '#/definitions/ScreenRecordingFilterRangeInteger'
      page_views:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterPageView'
      placed_order:
        type: boolean
      preferred_language:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      preferred_language_filter:
        type: boolean
      referrer_domain:
        type: string
      referrer_domain_filter:
        type: boolean
      screen_recording_uuids:
        type: array
        items:
          type: string
      screen_sizes:
        type: array
        items:
          type: string
      skip_filter_values:
        type: boolean
      skip_histogram:
        type: boolean
      skip_hits:
        type: boolean
      start_timestamp:
        $ref: '#/definitions/ScreenRecordingFilterRangeDate'
      tags:
        type: array
        items:
          type: string
      time_on_site:
        $ref: '#/definitions/ScreenRecordingFilterRangeInteger'
      time_on_site_max_filter:
        type: boolean
      time_on_site_min_filter:
        type: boolean
      url_filter:
        type: boolean
      user_agent_device_name:
        type: string
      user_agent_device_name_filter:
        type: boolean
      user_agent_device_os_name_filter:
        type: boolean
      user_agent_device_os_version_filter:
        type: boolean
      user_agent_name:
        type: string
      user_agent_name_filter:
        type: boolean
      user_agent_original:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      user_agent_original_filter:
        type: boolean
      user_agent_os_name:
        type: string
      user_agent_os_version:
        type: string
      user_ip:
        $ref: '#/definitions/ScreenRecordingFilterIpSearch'
      utm_campaign:
        type: string
      utm_campaign_filter:
        type: boolean
      utm_source:
        type: string
      utm_source_filter:
        type: boolean
      visitor_number:
        type: integer
        format: int32
      watched:
        type: boolean
  ScreenRecordingFilterGeoDistance:
    type: object
    properties:
      distance:
        type: integer
        format: int32
      distance_uom:
        type: string
      from_address:
        type: string
      lat:
        type: number
      lon:
        type: number
  ScreenRecordingFilterIpSearch:
    type: object
    properties:
      does_not_exist:
        type: boolean
      exists:
        type: boolean
      is:
        type: string
      is_not:
        type: string
  ScreenRecordingFilterPageView:
    type: object
    properties:
      domain:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      domain_filter:
        type: boolean
      event_name_filter:
        type: boolean
      event_param_name_filter:
        type: boolean
      event_param_value_filter:
        type: boolean
      events:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterPageViewEvent'
      param_name_filter:
        type: boolean
      param_value_filter:
        type: boolean
      params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterPageViewParam'
      referrer:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      referrer_params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterPageViewReferrerParam'
      referrer_raw:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      time_on_page:
        $ref: '#/definitions/ScreenRecordingFilterRangeInteger'
      time_on_page_max_filter:
        type: boolean
      time_on_page_min_filter:
        type: boolean
      url:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
      url_filter:
        type: boolean
  ScreenRecordingFilterPageViewEvent:
    type: object
    properties:
      event_name:
        type: string
      event_params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterPageViewEventParam'
  ScreenRecordingFilterPageViewEventParam:
    type: object
    properties:
      name:
        type: string
      value_bd:
        $ref: '#/definitions/ScreenRecordingFilterRangeBigDecimal'
      value_bool:
        type: boolean
      value_num:
        $ref: '#/definitions/ScreenRecordingFilterRangeInteger'
      value_text:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
  ScreenRecordingFilterPageViewParam:
    type: object
    properties:
      name:
        type: string
      value:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
  ScreenRecordingFilterPageViewReferrerParam:
    type: object
    properties:
      name:
        type: string
      value:
        $ref: '#/definitions/ScreenRecordingFilterStringSearch'
  ScreenRecordingFilterRangeBigDecimal:
    type: object
    properties:
      eq:
        type: number
      gt:
        type: number
      gte:
        type: number
      lt:
        type: number
      lte:
        type: number
  ScreenRecordingFilterRangeDate:
    type: object
    properties:
      end:
        description: End of the range
        type: string
        format: dateTime
      start:
        description: Start of the range
        type: string
        format: dateTime
  ScreenRecordingFilterRangeInteger:
    type: object
    properties:
      eq:
        type: integer
        format: int32
      gt:
        type: integer
        format: int32
      gte:
        type: integer
        format: int32
      lt:
        type: integer
        format: int32
      lte:
        type: integer
        format: int32
  ScreenRecordingFilterStringSearch:
    type: object
    properties:
      does_not_exist:
        type: boolean
      exists:
        type: boolean
      is:
        type: string
      is_not:
        type: string
      starts_with:
        type: string
  ScreenRecordingFilterValues:
    type: object
    properties:
      communications_campaign_names:
        type: array
        items:
          type: string
      communications_email_subjects:
        type: array
        items:
          type: string
      communications_flow_names:
        type: array
        items:
          type: string
      email_domains:
        type: array
        items:
          type: string
      geolocation_countries:
        type: array
        items:
          type: string
      geolocation_states:
        type: array
        items:
          type: string
      language_iso_codes:
        type: array
        items:
          type: string
      max_values:
        type: integer
        format: int32
      page_views:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterValuesPageView'
      preferred_languages:
        type: array
        items:
          type: string
      referrer_domains:
        type: array
        items:
          type: string
      time_on_site_max:
        type: integer
        format: int32
      time_on_site_min:
        type: integer
        format: int32
      urls:
        type: array
        items:
          type: string
      user_agent_device_names:
        type: array
        items:
          type: string
      user_agent_device_os_names:
        type: array
        items:
          type: string
      user_agent_device_os_versions:
        type: array
        items:
          type: string
      user_agent_names:
        type: array
        items:
          type: string
      user_agent_originals:
        type: array
        items:
          type: string
      utm_campaigns:
        type: array
        items:
          type: string
      utm_sources:
        type: array
        items:
          type: string
  ScreenRecordingFilterValuesEvent:
    type: object
    properties:
      name:
        type: string
      params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterValuesEventParams'
  ScreenRecordingFilterValuesEventParams:
    type: object
    properties:
      name:
        type: string
      values_bd:
        type: array
        items:
          type: number
      values_bool:
        type: array
        items:
          type: boolean
      values_num:
        type: array
        items:
          type: integer
      values_text:
        type: array
        items:
          type: string
  ScreenRecordingFilterValuesPageParam:
    type: object
    properties:
      name:
        type: string
      values:
        type: array
        items:
          type: string
  ScreenRecordingFilterValuesPageView:
    type: object
    properties:
      domains:
        type: array
        items:
          type: string
      events:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterValuesEvent'
      page_params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingFilterValuesPageParam'
      time_on_page_max:
        type: integer
        format: int32
      time_on_page_min:
        type: integer
        format: int32
      urls:
        type: array
        items:
          type: string
  ScreenRecordingHeatmap:
    type: object
    properties:
      large_click_thumbnail_url:
        type: string
      large_click_url:
        type: string
      large_movement_thumbnail_url:
        type: string
      large_movement_url:
        type: string
      large_regular_thumbnail_url:
        type: string
      large_regular_url:
        type: string
      large_scroll_thumbnail_url:
        type: string
      large_scroll_url:
        type: string
      medium_click_thumbnail_url:
        type: string
      medium_click_url:
        type: string
      medium_movement_thumbnail_url:
        type: string
      medium_movement_url:
        type: string
      medium_regular_thumbnail_url:
        type: string
      medium_regular_url:
        type: string
      medium_scroll_thumbnail_url:
        type: string
      medium_scroll_url:
        type: string
      small_click_thumbnail_url:
        type: string
      small_click_url:
        type: string
      small_movement_thumbnail_url:
        type: string
      small_movement_url:
        type: string
      small_regular_thumbnail_url:
        type: string
      small_regular_url:
        type: string
      small_scroll_thumbnail_url:
        type: string
      small_scroll_url:
        type: string
  ScreenRecordingHeatmapIndexRequest:
    type: object
    properties:
      url_contains:
        type: string
  ScreenRecordingHeatmapIndexResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      heatmap_urls:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingHeatmapUrl'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingHeatmapRequest:
    type: object
    properties:
      range:
        $ref: '#/definitions/ScreenRecordingFilterRangeDate'
      screen_sizes:
        type: array
        items:
          type: string
      url:
        type: string
  ScreenRecordingHeatmapReset:
    type: object
    properties:
      url:
        type: string
  ScreenRecordingHeatmapResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      heatmap:
        $ref: '#/definitions/ScreenRecordingHeatmap'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingHeatmapUrl:
    type: object
    properties:
      histogram_data:
        type: array
        items:
          type: integer
      histogram_interval:
        type: string
      histogram_start_dts:
        type: string
      page_rank:
        type: integer
        format: int32
      session_count:
        type: integer
        format: int32
      url:
        type: string
  ScreenRecordingMerchantNotesRequest:
    type: object
    properties:
      merchant_notes:
        type: string
  ScreenRecordingMultifield:
    type: object
    properties:
      bd:
        type: number
      bool:
        type: boolean
      json:
        type: string
      num:
        type: integer
        format: int64
      text:
        type: string
  ScreenRecordingPageView:
    type: object
    properties:
      domain:
        type: string
      events:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingPageViewEvent'
      first_event_timestamp:
        description: First event timestamp
        type: string
        format: dateTime
      http_post:
        type: boolean
      last_event_timestamp:
        description: Last event timestamp
        type: string
        format: dateTime
      missing_events:
        type: boolean
      params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingPageViewParameter'
      range_end:
        type: integer
        format: int32
      range_start:
        type: integer
        format: int32
      referrer:
        type: string
      referrer_params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingPageViewParameter'
      referrer_raw:
        type: string
      screen_recording_page_view_uuid:
        type: string
      time_on_page:
        type: integer
        format: int32
      timing_dom_content_loaded:
        description: Amount of time for DOMContentLoaded event to fire (milliseconds)
        type: integer
        format: int32
      timing_loaded:
        description: Amount of time for loaded event to fire (milliseconds)
        type: integer
        format: int32
      truncated_events:
        type: boolean
      ucapv:
        type: string
      url:
        type: string
  ScreenRecordingPageViewDataResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      events_json:
        type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingPageViewEvent:
    type: object
    properties:
      name:
        type: string
      params:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingPageViewEventParameter'
      prior_page_view:
        type: boolean
      sub_text:
        type: string
      timestamp:
        description: Timestamp of the event
        type: string
        format: dateTime
      ts:
        type: integer
        format: int64
  ScreenRecordingPageViewEventParameter:
    type: object
    properties:
      name:
        type: string
      value:
        $ref: '#/definitions/ScreenRecordingMultifield'
  ScreenRecordingPageViewParameter:
    type: object
    properties:
      name:
        type: string
      value:
        type: string
  ScreenRecordingQueryRequest:
    type: object
    properties:
      filter:
        $ref: '#/definitions/ScreenRecordingFilter'
  ScreenRecordingQueryResponse:
    type: object
    properties:
      checkout_only:
        type: boolean
      error:
        $ref: '#/definitions/Error'
      filter:
        $ref: '#/definitions/ScreenRecordingFilter'
      filter_values:
        $ref: '#/definitions/ScreenRecordingFilterValues'
      histogram_data:
        type: array
        items:
          type: integer
      histogram_interval:
        type: string
      histogram_start_dts:
        type: string
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      screen_recordings:
        type: array
        items:
          $ref: '#/definitions/ScreenRecording'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingResponse:
    type: object
    properties:
      checkout_only:
        type: boolean
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      screen_recording:
        $ref: '#/definitions/ScreenRecording'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingSegment:
    type: object
    properties:
      create_dts:
        type: string
      description:
        type: string
      filter:
        $ref: '#/definitions/ScreenRecordingFilter'
      histogram_data:
        type: array
        items:
          type: integer
      histogram_interval:
        type: string
      histogram_start_dts:
        type: string
      name:
        type: string
      screen_recording_segment_oid:
        type: integer
        format: int32
      session_count:
        type: integer
        format: int32
      session_count_last_update_dts:
        type: string
  ScreenRecordingSegmentResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      segment:
        $ref: '#/definitions/ScreenRecordingSegment'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingSegmentsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      segments:
        type: array
        items:
          $ref: '#/definitions/ScreenRecordingSegment'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingSettings:
    type: object
    properties:
      cost_per_thousand:
        description: Cost per one thousand sessions
        type: number
      enabled:
        type: boolean
      retention_interval:
        description: How long screen recording data is retained
        type: string
      sessions_current_billing_period:
        type: integer
        format: int32
      sessions_last_billing_period:
        type: integer
        format: int32
      sessions_trial_billing_period:
        type: integer
        format: int32
      trial_expiration:
        type: string
      trial_expired:
        type: boolean
  ScreenRecordingSettingsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      settings:
        $ref: '#/definitions/ScreenRecordingSettings'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingStoreFront:
    type: object
    properties:
      storefront_host_name:
        type: string
      storefront_oid:
        type: integer
        format: int32
  ScreenRecordingTagsRequest:
    type: object
    properties:
      tags:
        type: array
        items:
          type: string
  ScreenRecordingTagsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      tags:
        type: array
        items:
          type: string
      warning:
        $ref: '#/definitions/Warning'
  ScreenRecordingUserAgent:
    type: object
    properties:
      device:
        $ref: '#/definitions/ScreenRecordingUserAgentDevice'
      name:
        type: string
      original:
        type: string
      os:
        $ref: '#/definitions/ScreenRecordingUserAgentOS'
      version:
        type: string
  ScreenRecordingUserAgentDevice:
    type: object
    properties:
      name:
        type: string
  ScreenRecordingUserAgentOS:
    type: object
    properties:
      full:
        type: string
      name:
        type: string
      version:
        type: string
  ScreenRecordingUserProperty:
    type: object
    properties:
      name:
        type: string
      value:
        $ref: '#/definitions/ScreenRecordingMultifield'
  ScreenshotsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      screenshots:
        description: List of screenshot urls related to the object (depends on which method was called).
        type: array
        items:
          type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  SelfConfig:
    type: object
    properties:
      exempt_from_colorado_retail_delivery_fee:
        description: True if the Colorado Retail Delivery Fee should not be collected
        type: boolean
      exempt_from_minnesota_retail_delivery_fee:
        description: True if the Minnesota Retail Delivery Fee should not be collected
        type: boolean
      tax_billing:
        description: True if sales tax should be collected based on billing address instead of shipping address
        type: boolean
  SimpleValue:
    type: object
    properties:
      display:
        description: A friendly display of this value suitable for human reading
        type: string
      value:
        description: The actual value
        type: string
  SingleSignOnAuthorizeRequest:
    type: object
    properties:
      redirect_uri:
        description: The URL that the customer should be redirected to after they have approved a single sign on session.
        type: string
      state:
        description: An optional state variable that you provide.  It will be returned to you on the redirect.  You can inspect the state to validate the request is legitimate.  We recommend using this field.
        type: string
  SingleSignOnAuthorizeResponse:
    type: object
    properties:
      expiration_dts:
        description: Expiration date/time after which the single sign-on login operation will have timed out
        type: string
        format: dateTime
      login_url:
        description: The URL that you should redirect the customer's browser to.  This URL will begin the login process.
        type: string
  SingleSignOnTokenRequest:
    type: object
    properties:
      code:
        description: The code received on the redirect URI after the customer approved the single sign on request.
        type: string
      grant_type:
        description: Grant type.  The value should be simple_key.
        type: string
  SingleSignOnTokenResponse:
    type: object
    properties:
      expiration_dts:
        description: Expiration date/time after which time the key is no longer valid
        type: string
        format: dateTime
      ip_address:
        description: IP address of the user which we recommend you lock the simple key's usage to.
        type: string
      simple_key:
        description: The simple key that can then be used to make SDK calls on the users behalf.
        type: string
  SovosConfig:
    type: object
    properties:
      access_key:
        description: Sovos access key
        type: string
      estimate_only:
        description: True if this Sovos configuration is to estimate taxes only and not report placed orders to Sovos
        type: boolean
      last_test_dts:
        description: Date/time of the connection test to Sovos
        type: string
        format: dateTime
      secret_key:
        description: Sovos secret key
        type: string
      send_test_orders:
        description: Send test orders through to Sovos.  The default is to not transmit test orders to Sovos.
        type: boolean
      test_results:
        description: Test results of the last connection test to Sovos
        type: string
      uat:
        description: True if this Sovos configuration is currently undergoing user acceptance testing
        type: boolean
  StateProvince:
    type: object
    properties:
      abbreviation:
        description: abbreviation
        type: string
      name:
        description: name
        type: string
        maxLength: 50
  StepWaiting:
    type: object
    properties:
      commseq_step_uuid:
        type: string
      number_waiting:
        type: integer
        format: int32
  StoreFront:
    type: object
    properties:
      host_alias1:
        type: string
      host_alias2:
        type: string
      host_alias3:
        type: string
      host_alias4:
        type: string
      host_alias5:
        type: string
      host_name:
        type: string
      locked:
        type: boolean
      merchant_id:
        type: string
      redirect_aliases:
        type: boolean
      storefront_oid:
        type: integer
        format: int32
      unlock_password:
        type: string
  StoreFrontPageContentAttribute:
    type: object
    properties:
      name:
        description: Attribute name
        type: string
        maxLength: 100000
      translated_text_instance_oid:
        description: Attribute translated text instance identifier
        type: integer
        format: int32
      type:
        description: Attribute type
        type: string
      value:
        description: Attribute value
        type: string
        maxLength: 100000
  StoreFrontsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      storeFronts:
        type: array
        items:
          $ref: '#/definitions/StoreFront'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  TaxCity:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      city:
        description: City
        type: string
      city_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      county_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      dont_collect_city:
        description: Flag instructing engine to not collect city tax for this city
        type: boolean
      dont_collect_postal_code:
        description: Flag instructing engine to not collect postal code tax for this city
        type: boolean
      postal_codes:
        description: Postal Codes within this city
        type: array
        items:
          $ref: '#/definitions/TaxPostalCode'
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
  TaxCountry:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      country_code:
        description: Country code (2 characters
        type: string
      country_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      states:
        description: States (or regions or territories) within this country
        type: array
        items:
          $ref: '#/definitions/TaxState'
      tax_gift_charge:
        description: True if taxation within this jurisdiction should charge tax on gift charge
        type: boolean
      tax_gift_wrap:
        description: True if taxation within this jurisdiction should charge tax on gift wrap
        type: boolean
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
      tax_shipping:
        description: True if taxation within this jurisdiction should charge tax on shipping
        type: boolean
  TaxCountryCode:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      country_code:
        description: Country code (2 characters
        type: string
      country_name:
        description: Country name
        type: string
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
  TaxCounty:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      cities:
        description: Cities within this city
        type: array
        items:
          $ref: '#/definitions/TaxCity'
      county:
        description: County
        type: string
      county_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      dont_collect_city:
        description: Flag instructing engine to not collect city tax for this county
        type: boolean
      dont_collect_county:
        description: Flag instructing engine to not collect county tax for this county
        type: boolean
      dont_collect_postal_code:
        description: Flag instructing engine to not collect postal code tax for this county
        type: boolean
      state_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
  TaxJarConfig:
    type: object
    properties:
      active:
        description: True if TaxJar is active for this merchant
        type: boolean
      api_key:
        description: TaxJar API key
        type: string
      estimate_only:
        description: True if this TaxJar configuration is to estimate taxes only and not report placed orders to TaxJar
        type: boolean
      send_outside_nexus:
        description: Send orders outside your nexus TaxJar.  The default is to not transmit outside orders to TaxJar to reduce API calls.  However, this will prevent TaxJar from dynamically creating new Nexus when thresholds are exceeded for a state.
        type: boolean
      send_test_orders:
        description: Send test orders through to TaxJar.  The default is to not transmit test orders to TaxJar.
        type: boolean
      skip_channel_orders:
        description: Do not send channel partner orders to TaxJar.  Set this to true if your channel partner reports tax on their own.
        type: boolean
      use_distribution_center_from:
        description: Use distribution center from address
        type: boolean
  TaxPostalCode:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      city_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      dont_collect_postal_code:
        description: Flag instructing engine to not collect postal code tax for this postal code
        type: boolean
      postal_code:
        description: Postal Code (5 digits)
        type: string
      postal_code_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
  TaxProviderActivateResult:
    type: object
    properties:
      details:
        type: string
      success:
        description: True if the connection was successful
        type: boolean
  TaxProviderAvalara:
    type: object
    properties:
      configuration:
        $ref: '#/definitions/AvalaraConfig'
      description:
        description: Description
        type: string
      selected:
        description: Selected
        type: boolean
      title:
        description: Title
        type: string
  TaxProviderAvalaraCompaniesResult:
    type: object
    properties:
      companies:
        description: Tax companies configured by the merchant
        type: array
        items:
          $ref: '#/definitions/TaxProviderAvalaraCompany'
  TaxProviderAvalaraCompany:
    type: object
    properties:
      company_code:
        description: Company code
        type: string
      company_name:
        description: Company name
        type: string
      description:
        description: Description
        type: string
      selected:
        description: Selected
        type: boolean
      title:
        description: Title
        type: string
  TaxProviderSelf:
    type: object
    properties:
      configuration:
        $ref: '#/definitions/SelfConfig'
      countries:
        description: Countries that collect sales tax
        type: array
        items:
          $ref: '#/definitions/TaxCountry'
      description:
        description: Description
        type: string
      selected:
        description: Selected
        type: boolean
      title:
        description: Title
        type: string
  TaxProviderSelfCountriesResponse:
    type: object
    properties:
      countries:
        description: countries
        type: array
        items:
          $ref: '#/definitions/TaxCountryCode'
  TaxProviderSelfRegionsResponse:
    type: object
    properties:
      regions:
        description: regions
        type: array
        items:
          $ref: '#/definitions/TaxStateCode'
  TaxProviderSovos:
    type: object
    properties:
      configuration:
        $ref: '#/definitions/SovosConfig'
      description:
        description: Description
        type: string
      selected:
        description: Selected
        type: boolean
      title:
        description: Title
        type: string
  TaxProvidersResponse:
    type: object
    properties:
      avalara:
        $ref: '#/definitions/TaxProviderAvalara'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      self:
        $ref: '#/definitions/TaxProviderSelf'
      sovos:
        $ref: '#/definitions/TaxProviderSovos'
      success:
        description: Indicates if API call was successful
        type: boolean
      taxjar:
        $ref: '#/definitions/TaxProviderTaxJar'
      ultracart:
        $ref: '#/definitions/TaxProviderUltraCart'
      warning:
        $ref: '#/definitions/Warning'
  TaxProviderTaxJar:
    type: object
    properties:
      configuration:
        $ref: '#/definitions/TaxJarConfig'
      description:
        description: Description
        type: string
      selected:
        description: Selected
        type: boolean
      title:
        description: Title
        type: string
  TaxProviderTestResult:
    type: object
    properties:
      details:
        type: string
      success:
        description: True if the connection was successful
        type: boolean
  TaxProviderUltraCart:
    type: object
    properties:
      configuration:
        $ref: '#/definitions/UltraCartConfig'
      description:
        description: Description
        type: string
      selected:
        description: Selected
        type: boolean
      states:
        description: States in the union showing their management status
        type: array
        items:
          $ref: '#/definitions/TaxProviderUltraCartState'
      title:
        description: Title
        type: string
  TaxProviderUltraCartState:
    type: object
    properties:
      enabled:
        description: True if this state taxes are managed by UltraCart
        type: boolean
      exempt_digital_items:
        description: True if digital items are exempt from sales tax in this state.
        type: boolean
      exempt_physical_items:
        description: True if physical items are exempt from sales tax in this state.
        type: boolean
      exempt_service_items:
        description: True if service items are exempt from sales tax in this state.
        type: boolean
      state_code:
        description: State Code (2 digits)
        type: string
      state_name:
        description: Fully spelled out state name
        type: string
      tax_gift_charge:
        description: True if gift charges should be taxed in this state.
        type: boolean
      tax_gift_wrap:
        description: True if gift wrap should be taxed in this state.
        type: boolean
      tax_rate_formatted:
        description: State tax rate formatted for display
        type: string
      tax_shipping:
        description: True if shipping should be taxed in this state.
        type: boolean
  TaxState:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      counties:
        description: Counties within this state
        type: array
        items:
          $ref: '#/definitions/TaxCounty'
      country_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      dont_collect_city:
        description: Flag instructing engine to not collect city tax for this state
        type: boolean
      dont_collect_county:
        description: Flag instructing engine to not collect county tax for this state
        type: boolean
      dont_collect_postal_code:
        description: Flag instructing engine to not collect postal code tax for this state
        type: boolean
      dont_collect_state:
        description: Flag instructing engine to not collect state tax for this state
        type: boolean
      exempt_digital_items:
        description: True if digital items are exempt from sales tax in this state.
        type: boolean
      exempt_physical_items:
        description: True if physical items are exempt from sales tax in this state.
        type: boolean
      exempt_service_items:
        description: True if service items are exempt from sales tax in this state.
        type: boolean
      state_code:
        description: State code
        type: string
      state_oid:
        description: Tax record object identifier used internally by database
        type: integer
        format: int32
      tax_gift_charge:
        description: True if taxation within this jurisdiction should charge tax on gift charge
        type: boolean
      tax_gift_wrap:
        description: True if taxation within this jurisdiction should charge tax on gift wrap
        type: boolean
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
      tax_shipping:
        description: True if taxation within this jurisdiction should charge tax on shipping
        type: boolean
      use_ultracart_managed_rates:
        description: If true, use UltraCart managed rates for this state
        type: boolean
  TaxStateCode:
    type: object
    properties:
      accounting_code:
        description: Accounting code for programs such as QuickBooks
        type: string
      state_code:
        description: State code (2 characters
        type: string
      state_name:
        description: State name
        type: string
      tax_rate:
        description: Tax Rate
        type: number
      tax_rate_formatted:
        description: Tax rate formatted
        type: string
  TempMultimedia:
    type: object
    properties:
      filename:
        description: Filename
        type: string
        maxLength: 75
      height:
        description: Height
        type: integer
        format: int32
      multimedia_type:
        description: Multimedia type
        type: string
        enum: [
          "Image",
          "PDF",
          "Text",
          "Video"
        ]
      size:
        description: Size
        type: integer
        format: int64
      temp_multimedia_oid:
        description: Temporary multimedia object identifier
        type: integer
        format: int32
      url:
        description: URL
        type: string
      width:
        description: Width
        type: integer
        format: int32
  TempMultimediaResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      temp_multimedia:
        $ref: '#/definitions/TempMultimedia'
      warning:
        $ref: '#/definitions/Warning'
  ThumbnailParametersRequest:
    type: object
    properties:
      height:
        type: integer
        format: int32
      pngFormat:
        type: boolean
      squareThumbnail:
        type: boolean
      webp:
        type: boolean
      width:
        type: integer
        format: int32
  ThumbnailParametersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      thumbnail_url_suffix:
        description: Suffix to append to the larger image URL to obtain the thumbnail
        type: string
      warning:
        $ref: '#/definitions/Warning'
  TransactionEmail:
    type: object
    properties:
      content:
        description: Actual template contents
        type: string
      esp_domain_uuid:
        description: The uuid of the sending domain
        type: string
      esp_friendly_name:
        description: Friendly from that will appear in customer email clients.
        type: string
      esp_user:
        description: The username of the sending email.  This is not the full email.  Only the username which is everything before the @ sign.
        type: string
      file_exists:
        description: An internal identifier used to aid in retrieving templates from the filesystem.
        type: boolean
      file_name:
        description: File name
        type: string
      group:
        description: Group
        type: string
      handlebar_variables:
        description: Handlebar Variables available for email template
        type: array
        items:
          type: string
      invalid:
        description: Invalid will be true if the template cannot compile
        type: boolean
      last_modified:
        description: Last modified timestamp
        type: string
        format: dateTime
      library_item_oid:
        description: If this item was ever added to the Code Library, this is the oid for that library item, or 0 if never added before.  This value is used to determine if a library item should be inserted or updated.
        type: integer
        format: int32
      options:
        description: Options that help govern how and when this template is used
        type: array
        items:
          $ref: '#/definitions/TransactionEmailOption'
      path:
        description: directory path where template is stored in file system
        type: string
      size:
        description: Size of file in friendly description
        type: string
      store_front_fs_directory_oid:
        description: Internal identifier used to store and retrieve template from filesystem
        type: integer
        format: int32
      store_front_fs_file_oid:
        description: Internal identifier used to store and retrieve template from filesystem
        type: integer
        format: int32
      subject:
        description: Subject
        type: string
      syntax_errors:
        description: Any syntax errors contained within the tempalate
        type: string
      template_path_relative_path:
        description: Internal value used to locate the template in the filesystem
        type: string
      theme_relative_path:
        description: Theme relative path in the filesystem.
        type: string
  TransactionEmailListResponse:
    type: object
    properties:
      email_names:
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  TransactionEmailOption:
    type: object
    properties:
      description:
        type: string
      merchantEmailDeliveryOptionOid:
        type: integer
        format: int32
      merchantId:
        type: string
      name:
        type: string
      selected:
        type: boolean
      storeFrontOid:
        type: integer
        format: int32
      templateDisplay:
        type: string
      templateType:
        type: string
  TransactionEmailResponse:
    type: object
    properties:
      email:
        $ref: '#/definitions/TransactionEmail'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  Twilio:
    type: object
    properties:
      account_sid:
        type: string
      api_key_id:
        type: string
      api_key_name:
        type: string
      auth_token:
        type: string
      esp_twilio_uuid:
        type: string
      inbound_twiml_app_sid:
        type: string
      outbound_twiml_app_sid:
        type: string
      phone_numbers:
        type: array
        items:
          type: string
      twilio_workspace_sid:
        type: string
  TwilioResponse:
    type: object
    properties:
      diagnostics:
        type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      twilio:
        $ref: '#/definitions/Twilio'
      warning:
        $ref: '#/definitions/Warning'
  TwiliosResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      twilios:
        type: array
        items:
          $ref: '#/definitions/Twilio'
      warning:
        $ref: '#/definitions/Warning'
  UltraCartConfig:
    type: object
    properties:
      exempt_from_colorado_retail_delivery_fee:
        description: True if the Colorado Retail Delivery Fee should not be collected
        type: boolean
      exempt_from_minnesota_retail_delivery_fee:
        description: True if the Minnesota Retail Delivery Fee should not be collected
        type: boolean
      tax_billing:
        description: True if sales tax should be collected based on billing address instead of shipping address
        type: boolean
  UploadCouponCodesRequest:
    type: object
    properties:
      coupon_codes:
        description: Coupon codes
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  UploadCouponCodesResponse:
    type: object
    properties:
      duplicate_codes:
        description: Duplicate codes
        type: array
        items:
          type: string
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      rejected_codes:
        description: Rejected codes
        type: array
        items:
          type: string
      success:
        description: Indicates if API call was successful
        type: boolean
      uploaded_codes:
        description: Uploaded codes
        type: array
        items:
          type: string
      warning:
        $ref: '#/definitions/Warning'
  User:
    type: object
    properties:
      api_ip_address_masks:
        description: A list of IP addresses whitelisted for any user with API Access permission.  Without this list, each ip address must be authenticated by a user, which can be a pain for some servers.
        type: array
        items:
          type: string
      change_ftp_password_to:
        description: Supply a new FTP password using this field.  Password are stored using one-way encryption, so they are never available anywhere in the system.  The FTP password cannot be the same as the normal password.
        type: string
      change_password_to:
        description: Supply a new password using this field.  Password are stored using one-way encryption, so they are never available anywhere in the system.
        type: string
      email:
        description: Email address of user
        type: string
        maxLength: 150
      full_name:
        description: Full name of user.  This is used solely for human assistance and so the UltraCart staff knows who they are calling when there is a problem.
        type: string
      groups:
        description: A list of groups for this merchant and whether or not this user is a member of those groups.
        type: array
        items:
          $ref: '#/definitions/UserGroupMembership'
      linked_accounts:
        description: A list of linked accounts and whether or not this user is mirrored to any of those accounts.
        type: array
        items:
          $ref: '#/definitions/LinkedAccount'
      login:
        description: User name of user.  Must be unique across a merchant account.
        type: string
      login_histories:
        description: A list of user logins over the past 90 days
        type: array
        items:
          $ref: '#/definitions/UserLogin'
      notifications:
        description: A list of notifications the user receives.
        type: array
        items:
          $ref: '#/definitions/Notification'
      otp_serial_number:
        description: OTP Serial Number such as Google Authenticator or Crypto Card.
        type: string
      permissions:
        description: A list of permissions the user enjoys for accessing the backend of UltraCart.
        type: array
        items:
          $ref: '#/definitions/Permission'
      phone:
        description: Phone number of user.  Please supply a valid phone number.  When something breaks on your account, we need to be able to reach you.
        type: string
      user_id:
        description: User id is a unique identifier for this user
        type: integer
        format: int32
  UserGroupMembership:
    type: object
    properties:
      group_oid:
        description: The unique object identifier (oid for short) for this group
        type: integer
        format: int32
      member:
        description: True if this user is a member of the group.
        type: boolean
      name:
        description: The name of this group.
        type: string
  UserLogin:
    type: object
    properties:
      ip_address:
        description: IP Address
        type: string
      login:
        description: login
        type: string
      login_dts:
        description: Login date/time
        type: string
        format: dateTime
      user_agent:
        description: User Agent
        type: string
  UserLoginsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      logins:
        description: Logins
        type: array
        items:
          $ref: '#/definitions/UserLogin'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  UserResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      user:
        $ref: '#/definitions/User'
      warning:
        $ref: '#/definitions/Warning'
  UsersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      users:
        type: array
        items:
          $ref: '#/definitions/User'
      warning:
        $ref: '#/definitions/Warning'
  VerificationRecord:
    type: object
    properties:
      name:
        type: string
      type:
        type: string
      value:
        type: string
  Warning:
    type: object
    properties:
      more_info:
        description: Additional information often a link to additional documentation
        type: string
      warning_message:
        description: A technical message meant to be read by a developer
        type: string
  Webhook:
    type: object
    properties:
      api_user_oid:
        description: Populated if webhook associated with an API user
        type: integer
        format: int32
      api_version:
        description: Version of the API objects that are sent in notifications
        type: string
        enum: [
          "2017-03-01"
        ]
      application_profile:
        $ref: '#/definitions/ApiUserApplicationProfile'
      authentication_type:
        description: The type of authentication this webhook will use when communicating with your server
        type: string
        enum: [
          "none",
          "basic",
          "api user",
          "aws iam"
        ]
      basic_password:
        description: Basic authentication password
        type: string
      basic_username:
        description: Basic authentication user name
        type: string
      compress_events:
        description: Compress events with GZIP then base 64 encode them as a string
        type: boolean
      consecutive_failures:
        description: The number of consecutive failures that have occurred trying to deliver notifications to the target server
        type: integer
        format: int32
      disabled:
        description: True if the webhook has been disabled
        type: boolean
      event_categories:
        description: The categories of events.  Individual events and subscriptions are handled in the child objects.  _placeholders parameter effects the population of this on a retrieval.
        type: array
        items:
          $ref: '#/definitions/WebhookEventCategory'
      iam_access_key:
        description: IAM Access Key for AWS SQS Delivery
        type: string
      iam_secret_key:
        description: IAM Secret Key for AWS SQS Delivery
        type: string
      maximum_events:
        description: The maximum number of events in the payload that UltraCart will deliver
        type: integer
        format: int32
      maximum_size:
        description: The maximum size of the payload that UltraCart will deliver
        type: integer
        format: int32
      merchant_id:
        description: The UltraCart merchant ID that owns this webhook
        type: string
      next_retry_after:
        description: The next time UltraCart will attempt delivery if failures have been occurring
        type: string
        format: dateTime
      pending:
        description: The number of pending events for this webhook
        type: integer
        format: int32
      webhook_oid:
        description: The object identifier for this webhook
        type: integer
        format: int32
      webhook_url:
        description: The URL to deliver events to.  Must be HTTPS for customer related information.
        type: string
  WebhookEventCategory:
    type: object
    properties:
      any_subscribed:
        description: True if any events are subscribed to.
        type: boolean
      available_expansions:
        description: Array of available expansion constants
        type: array
        items:
          type: string
      event_category:
        description: Name of the event category
        type: string
      events:
        description: The events within the category.  Individual subscription flags contained within the child object.
        type: array
        items:
          $ref: '#/definitions/WebhookEventSubscription'
      subscribed:
        description: True if all the events within this category are subscribed.  This is a convenience flag to make user interfaces easier.
        type: boolean
  WebhookEventSubscription:
    type: object
    properties:
      comments:
        description: Comment about the event to provide further clarification to the end user
        type: string
      deprecated_flag:
        description: True if the event is deprecated.  See the API change log for details on when it will be discontinued.
        type: boolean
      discontinued_flag:
        description: True if the event is discontinued.  See the API change log for details on migration details.
        type: boolean
      event_description:
        description: Description of the event
        type: string
      event_name:
        description: Event name
        type: string
      event_ruler:
        description: Optional - Event ruler expression to filter events to.  Only events that match this Ruler expression will be transmitted to the webhook.
        type: string
      expansion:
        description: The expand string for the notification object.  See the individual resource _expand documentation for valid values.
        type: string
      subscribed:
        description: True if this is event is subscribed to
        type: boolean
      supports_reflow:
        description: True if the event can be triggered to reflow existing records
        type: boolean
      webhook_event_oid:
        description: The webhook event object identifier
        type: integer
        format: int32
  WebhookLog:
    type: object
    properties:
      delivery_dts:
        description: Date/time of delivery
        type: string
        format: dateTime
      duration:
        description: Number of milliseconds to process the notification
        type: integer
        format: int32
      queue_delay:
        description: Number of milliseconds of delay caused by queuing
        type: integer
        format: int64
      request:
        description: Request payload (first 100,000 characters)
        type: string
      request_headers:
        description: Request headers sent to the server
        type: array
        items:
          $ref: '#/definitions/HTTPHeader'
      request_id:
        description: Request id is a unique string that you can look up in the logs
        type: string
      response:
        description: Response payload (first 100,000 characters)
        type: string
      response_headers:
        description: Response headers received from the server
        type: array
        items:
          $ref: '#/definitions/HTTPHeader'
      status_code:
        description: HTTP status code received from the server
        type: integer
        format: int32
      success:
        description: True if the delivery was successful
        type: boolean
      uri:
        description: URI of the webhook delivered to
        type: string
      webhook_oid:
        description: webhook oid
        type: integer
        format: int32
  WebhookLogResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      webhook_log:
        $ref: '#/definitions/WebhookLog'
  WebhookLogSummariesResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      webhook_log_summaries:
        description: Webhook log summaries
        type: array
        items:
          $ref: '#/definitions/WebhookLogSummary'
  WebhookLogSummary:
    type: object
    properties:
      delivery_dts:
        description: Date/time of the delivery
        type: string
        format: dateTime
      request_id:
        description: Request id
        type: string
      success:
        description: True if the notification was successful
        type: boolean
  WebhookReflow:
    type: object
    properties:
      event_name:
        type: string
      queued:
        type: boolean
  WebhookReflowResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      reflow:
        $ref: '#/definitions/WebhookReflow'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  WebhookResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      webhook:
        $ref: '#/definitions/Webhook'
  WebhooksResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      webhooks:
        type: array
        items:
          $ref: '#/definitions/Webhook'
  Weight:
    type: object
    properties:
      uom:
        description: Unit of measure
        type: string
        enum: [
          "KG",
          "G",
          "LB",
          "OZ"
        ]
      value:
        description: Weight
        type: number
  WorkflowAgentAuth:
    type: object
    properties:
      jwt:
        type: string
      merchant_id:
        type: string
      websocket_url:
        type: string
  WorkflowAgentAuthResponse:
    type: object
    properties:
      agent_auth:
        $ref: '#/definitions/WorkflowAgentAuth'
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  WorkflowAttachment:
    type: object
    properties:
      download_key:
        description: Temporary download URL
        type: string
      file_name:
        description: File name
        type: string
      file_uuid:
        description: File UUID
        type: string
      mime_type:
        description: Mime Type
        type: string
      upload_key:
        description: Temporary upload key
        type: string
  WorkflowAttachmentUploadUrl:
    type: object
    properties:
      key:
        type: string
      url:
        type: string
  WorkflowAttachmentUploadUrlResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
      workflow_attachment_upload_url:
        $ref: '#/definitions/WorkflowAttachmentUploadUrl'
  WorkflowGroup:
    type: object
    properties:
      group:
        description: The group
        type: string
      group_id:
        description: Group ID
        type: integer
        format: int32
  WorkflowGroupsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      groups:
        description: groups
        type: array
        items:
          $ref: '#/definitions/WorkflowGroup'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  WorkflowNote:
    type: object
    properties:
      attachments:
        description: Attachments to the Workflow Task
        type: array
        items:
          $ref: '#/definitions/WorkflowAttachment'
      edit_dts:
        description: Date/time that the note was edited
        type: string
        format: dateTime
      note:
        description: Note
        type: string
      note_dts:
        description: Date/time that the note was written
        type: string
        format: dateTime
      original_note:
        description: Note originally written before any edits
        type: string
      user:
        $ref: '#/definitions/WorkflowUser'
  WorkflowTask:
    type: object
    properties:
      assigned_to_group:
        description: Assigned to group
        type: string
      assigned_to_group_id:
        description: Assigned to group ID
        type: integer
        format: int32
      assigned_to_user:
        description: Assigned to user
        type: string
      assigned_to_user_id:
        description: Assigned to user ID
        type: integer
        format: int32
      assigned_to_user_or_group:
        description: Assigned to user or group (used for sorting)
        type: string
      attachments:
        description: Attachments to the Workflow Task
        type: array
        items:
          $ref: '#/definitions/WorkflowAttachment'
      created_by:
        $ref: '#/definitions/WorkflowUser'
      created_dts:
        description: Date/time that the workflow task was created
        type: string
        format: dateTime
      delay_until_dts:
        description: Date/time that the workflow task should delay until
        type: string
        format: dateTime
      dependant_workflow_task_uuid:
        description: Dependant Workflow Task UUID (must be completed before this task can be completed)
        type: string
      due_dts:
        description: Date/time that the workflow task is due
        type: string
        format: dateTime
      expiration_dts:
        description: Date/time that the workflow task will expire and be closed.  This is set by system generated tasks.
        type: string
        format: dateTime
      global_task_number:
        description: Global task number
        type: integer
        format: int32
      histories:
        description: Array of history records for the task
        type: array
        items:
          $ref: '#/definitions/WorkflowTaskHistory'
      last_update_dts:
        description: Date/time that the workflow task was last updated
        type: string
        format: dateTime
      merchant_id:
        description: Merchant ID
        type: string
      notes:
        description: Notes on the Workflow Task
        type: array
        items:
          $ref: '#/definitions/WorkflowNote'
      object_email:
        description: Object is associated with customer email
        type: string
      object_id:
        description: Object ID
        type: string
      object_task_number:
        description: Object specific task number
        type: integer
        format: int32
      object_type:
        description: Object Type
        type: string
        enum: [
          "order",
          "auto order",
          "item",
          "customer profile",
          "storefront"
        ]
      object_url:
        description: Object URL
        type: string
      priority:
        description: Priority
        type: string
        enum: [
          "1 - low",
          "2 - medium",
          "3 - high",
          "4 - critical"
        ]
      properties:
        description: Properties
        type: array
        items:
          $ref: '#/definitions/Property'
      related_workflow_task_uuid:
        description: Related Workflow Task UUID
        type: string
      status:
        description: Status of the workflow task
        type: string
        enum: [
          "open",
          "closed",
          "delayed",
          "awaiting customer feedback",
          "closed - system",
          "closed - customer",
          "closed - expiration"
        ]
      system_task_type:
        description: Constant for the type of system generated task
        type: string
        enum: [
          "order_accounts_receivable",
          "order_fraud_review",
          "auto_order_card_update_issue",
          "auto_order_canceled_payment",
          "item_low_stock",
          "item_out_of_stock"
        ]
      tags:
        description: Tags
        type: array
        items:
          type: string
      task_context:
        description: User friendly string of the task context
        type: string
      task_details:
        description: Task Details
        type: string
      task_name:
        description: Task Name
        type: string
      workflow_task_uuid:
        description: Workflow Task UUID
        type: string
  WorkflowTaskHistory:
    type: object
    properties:
      activity_dts:
        description: Date/time that the workflow task history record was created
        type: string
        format: dateTime
      description:
        description: Description of the activity
        type: string
      ip_address:
        description: IP Address that originated the activity
        type: string
      user:
        $ref: '#/definitions/WorkflowUser'
  WorkflowTaskOpenCountResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      open_count:
        description: Open Task Count
        type: integer
        format: int32
      success:
        description: Indicates if API call was successful
        type: boolean
      warning:
        $ref: '#/definitions/Warning'
  WorkflowTaskResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      task:
        $ref: '#/definitions/WorkflowTask'
      warning:
        $ref: '#/definitions/Warning'
  WorkflowTasksRequest:
    type: object
    properties:
      assigned_to_group:
        description: Assigned to group
        type: string
      assigned_to_group_id:
        description: Assigned to group ID
        type: integer
        format: int32
      assigned_to_me:
        description: Tasks are assigned to me either by direct user id or a group that the user is a member of
        type: boolean
      assigned_to_user:
        description: Assigned to user
        type: string
      assigned_to_user_id:
        description: Assigned to user ID
        type: integer
        format: int32
      created_by:
        $ref: '#/definitions/WorkflowUser'
      created_dts_begin:
        description: Date/time that the workflow task was created
        type: string
        format: dateTime
      created_dts_end:
        description: Date/time that the workflow task was created
        type: string
        format: dateTime
      delay_until_dts_begin:
        description: Date/time that the workflow task should delay until
        type: string
        format: dateTime
      delay_until_dts_end:
        description: Date/time that the workflow task should delay until
        type: string
        format: dateTime
      due_dts_begin:
        description: Date/time that the workflow task is due
        type: string
        format: dateTime
      due_dts_end:
        description: Date/time that the workflow task is due
        type: string
        format: dateTime
      last_update_dts_begin:
        description: Date/time that the workflow task was last updated
        type: string
        format: dateTime
      last_update_dts_end:
        description: Date/time that the workflow task was last updated
        type: string
        format: dateTime
      object_email:
        description: Object is associated with customer email
        type: string
      object_type:
        description: Object Type
        type: string
        enum: [
          "order",
          "auto order",
          "item",
          "customer profile"
        ]
      priority:
        description: Priority
        type: string
        enum: [
          "1 - low",
          "2 - medium",
          "3 - high",
          "4 - critical"
        ]
      status:
        description: Status of the workflow task
        type: string
        enum: [
          "open",
          "closed",
          "delayed",
          "awaiting customer feedback"
        ]
      tags:
        description: Tasks that are tagged with the specified tags
        type: array
        items:
          type: string
      unassigned:
        description: Tasks that are unassigned to a user or group
        type: boolean
  WorkflowTasksResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      task_context:
        description: User friendly string of the task context if querying for a specific object type/id
        type: string
      tasks:
        description: tasks
        type: array
        items:
          $ref: '#/definitions/WorkflowTask'
      warning:
        $ref: '#/definitions/Warning'
  WorkflowTaskTagsResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      tags:
        description: Tags
        type: array
        items:
          type: string
      warning:
        $ref: '#/definitions/Warning'
  WorkflowUser:
    type: object
    properties:
      user:
        description: The user
        type: string
      user_icon_url:
        description: The user icon URL if available
        type: string
      user_id:
        description: User ID
        type: integer
        format: int32
  WorkflowUserResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      success:
        description: Indicates if API call was successful
        type: boolean
      user:
        $ref: '#/definitions/WorkflowUser'
      warning:
        $ref: '#/definitions/Warning'
  WorkflowUsersResponse:
    type: object
    properties:
      error:
        $ref: '#/definitions/Error'
      metadata:
        $ref: '#/definitions/ResponseMetadata'
      my_user_id:
        description: User ID of myself
        type: integer
        format: int32
      success:
        description: Indicates if API call was successful
        type: boolean
      users:
        description: users
        type: array
        items:
          $ref: '#/definitions/WorkflowUser'
      warning:
        $ref: '#/definitions/Warning'
