# Send products for matching

`POST /v1/product-matches`

Sends up to 500 products. Returns one match for each product, in the same order. The matches belong to the
logged-in user's company, and other companies' matches are not visible.

`externalId` is unique within the company. Sending the same `externalId` again returns the existing match. The
same `externalId` twice in one request fails with `validation_failed`. A product with a barcode can come back
`matched` right away.


```yaml
requestBody:
  required: true
  content:
    application/json:
      schema:
        type: object
        required:
          - products
        properties:
          products:
            type: array
            minItems: 1
            maxItems: 500
            items:
              type: object
              required:
                - externalId
                - name
              properties:
                externalId:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: Your own ID, any string up to 128 characters.
                name:
                  type: string
                  description: The product name as your user typed it.
                barcode:
                  type: string
                brand:
                  type: string
                size:
                  type: string
                details:
                  type: string
                  description: Anything else that helps identify the product.
                images:
                  type: array
                  maxItems: 10
                  items:
                    type: string
                    format: uri
                    pattern: ^https://
                  description: Up to 10 photos of the product, as HTTPS URLs that Beauty Router
                    downloads.
      examples:
        Two products:
          value:
            products:
              - externalId: inv-10482
                name: Amberlin bond shampoo liter
                barcode: "850012345678"
                brand: Amberlin
                size: 33.8 fl oz
              - externalId: inv-10517
                name: Jadewell 6N
                brand: Jadewell
                details: Hair color tube, dark natural blonde
                images:
                  - https://app.example.com/uploads/inv-10517-front.jpg
responses:
  "200":
    description: One match for each product.
    content:
      application/json:
        schema:
          type: object
          required:
            - data
          properties:
            data:
              type: array
              description: One match for each product you sent.
              items:
                type: object
                required:
                  - id
                  - externalId
                  - status
                  - createdAt
                  - updatedAt
                properties:
                  id:
                    type: string
                    description: The product match ID.
                    examples:
                      - match-3Pa8sDf2Gh
                  externalId:
                    type: string
                    minLength: 1
                    maxLength: 128
                    description: Your own ID, any string up to 128 characters.
                  status:
                    type: string
                    description: >
                      `in_review`: Beauty Router is matching the product.
                      `needs_reply`: Beauty Router needs more information, asked

                      in `question`. `matched`: final, with `productId`.
                    enum:
                      - in_review
                      - needs_reply
                      - matched
                  productId:
                    type: string
                    description: The matched product ID. Only when `status` is `matched`.
                    examples:
                      - prod-4Fz9QbX2kL
                  question:
                    type: string
                    description: What Beauty Router needs to know. Only when `status` is
                      `needs_reply`.
                  createdAt:
                    type: string
                    format: date-time
                  updatedAt:
                    type: string
                    format: date-time
        examples:
          One matched, one in review:
            value:
              data:
                - id: match-3Pa8sDf2Gh
                  externalId: inv-10482
                  status: matched
                  productId: prod-4Fz9QbX2kL
                  createdAt: 2026-10-27T09:14:02Z
                  updatedAt: 2026-10-27T09:14:02Z
                - id: match-9Lk4jHg7Fd
                  externalId: inv-10517
                  status: in_review
                  createdAt: 2026-10-27T09:14:02Z
                  updatedAt: 2026-10-27T09:14:02Z
  "400":
    description: "`validation_failed`: a field is missing or has a wrong value.
      `field` names it."
    content:
      application/json:
        schema:
          type: object
          description: The body of every error response.
          required:
            - error
          properties:
            error:
              type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                  description: A stable error code.
                  enum:
                    - invalid_app_token
                    - invalid_user_token
                    - user_token_expired
                    - origin_not_allowed
                    - ip_not_allowed
                    - user_cannot_manage_company
                    - user_cannot_order
                    - company_blocked
                    - company_not_verified
                    - app_setup_incomplete
                    - not_found
                    - validation_failed
                    - email_invalid_format
                    - email_domain_not_found
                    - email_mailbox_not_found
                    - address_state_without_license
                    - hazmat_destination
                    - ship_to_restricted
                    - verification_data_missing
                    - document_locked
                    - document_already_uploaded
                    - file_too_large
                    - file_type_not_supported
                    - reply_not_expected
                    - order_action_not_allowed
                    - supplier_refused_cancel
                    - order_total_changed
                    - order_has_problems
                    - idempotency_key_reused
                    - idempotency_key_in_use
                    - rate_limit_exceeded
                    - internal_error
                message:
                  type: string
                  description: A sentence for developers. It can change, so do not match on it.
                field:
                  type: string
                  description: The request field that caused the error. Only some errors have it.
                missing:
                  type: array
                  items:
                    type: string
                  description: Only on `verification_data_missing` and `app_setup_incomplete`.
                    What still needs to be set.
                quote:
                  type: object
                  required:
                    - groups
                    - unresolvedLines
                    - companyProblems
                    - total
                    - currency
                  properties:
                    groups:
                      type: array
                      description: One group per supplier. Each group becomes one order.
                      items:
                        type: object
                        required:
                          - supplierId
                          - lines
                          - productsTotal
                          - orderDiscount
                          - shipping
                          - freeShippingRemaining
                          - salesTax
                          - taxExemption
                          - total
                          - chargeTiming
                          - problems
                        properties:
                          supplierId:
                            type: string
                            examples:
                              - sup-1Ry6tUi3Op
                          lines:
                            type: array
                            items:
                              type: object
                              required:
                                - productId
                                - quantity
                                - unitPrice
                                - discount
                                - total
                              properties:
                                productId:
                                  type: string
                                quantity:
                                  type: integer
                                unitPrice:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                                discount:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                                total:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                          productsTotal:
                            type: number
                            description: An amount in dollars, with up to two decimal places.
                          orderDiscount:
                            type: number
                            description: An amount in dollars, with up to two decimal places.
                          shipping:
                            type: object
                            required:
                              - amount
                              - kind
                            properties:
                              amount:
                                type:
                                  - number
                                  - "null"
                                description: The shipping charge in US dollars, or `null` when it cannot be
                                  worked out.
                              kind:
                                type: string
                                enum:
                                  - free
                                  - flat
                                  - carrier
                          freeShippingRemaining:
                            type:
                              - number
                              - "null"
                            description: How much more to order for free shipping, or `null` when it does
                              not apply.
                          salesTax:
                            type:
                              - number
                              - "null"
                            description: The sales tax in US dollars, or `null` when it cannot be worked
                              out.
                          taxExemption:
                            type: object
                            required:
                              - certificateId
                              - notAppliedReason
                            properties:
                              certificateId:
                                type:
                                  - string
                                  - "null"
                                description: The exemption certificate used, or `null`.
                              notAppliedReason:
                                type:
                                  - string
                                  - "null"
                                enum:
                                  - no_certificate
                                  - other_state
                                  - not_reviewed
                                  - null
                                description: Why no certificate applies, or `null` when one does.
                          total:
                            type:
                              - number
                              - "null"
                            description: >
                              The amount the salon pays for this group in US
                              dollars, or `null` when it cannot be worked out.
                              Send it back as

                              `expectedTotal`. A group with problems has no
                              `expectedTotal`.
                          chargeTiming:
                            type: string
                            enum:
                              - now
                              - after_verification
                            description: >
                              `now`: Beauty Router charges the card when the
                              order is created. `after_verification`: the
                              company is

                              `prequalified`, so the charge waits until its
                              verification ends.
                          problems:
                            type: array
                            items:
                              type: object
                              required:
                                - code
                                - message
                              properties:
                                code:
                                  type: string
                                  description: What stops a group or the whole request. See
                                    [Problems](/create-orders/#problems).
                                  enum:
                                    - buying_suspended
                                    - supplier_unavailable
                                    - address_state_without_license
                                    - ship_to_restricted
                                    - hazmat_destination
                                    - address_not_deliverable
                                    - connection_required
                                    - connection_blocked
                                    - insufficient_stock
                                    - product_unavailable
                                    - shipping_unavailable
                                    - tax_unavailable
                                    - delivery_address_required
                                    - delivery_phone_required
                                    - payment_card_required
                                    - payment_card_unusable
                                    - quantity_limit_exceeded
                                    - order_limit_exceeded
                                    - order_below_minimum
                                message:
                                  type: string
                                  description: A sentence you can show. It can change, so do not match on it.
                                productId:
                                  type: string
                                  description: The product. Only on problems with one product.
                                supplierId:
                                  type: string
                                  description: The supplier. Only on problems with one supplier.
                                available:
                                  type: integer
                                  description: How many units can be ordered. Only on `insufficient_stock`.
                    unresolvedLines:
                      type: array
                      description: The lines no supplier can take.
                      items:
                        type: object
                        required:
                          - productId
                          - quantity
                          - problems
                        properties:
                          productId:
                            type: string
                          quantity:
                            type: integer
                          problems:
                            type: array
                            items:
                              type: object
                              required:
                                - code
                                - message
                              properties:
                                code:
                                  type: string
                                  description: What stops a group or the whole request. See
                                    [Problems](/create-orders/#problems).
                                  enum:
                                    - buying_suspended
                                    - supplier_unavailable
                                    - address_state_without_license
                                    - ship_to_restricted
                                    - hazmat_destination
                                    - address_not_deliverable
                                    - connection_required
                                    - connection_blocked
                                    - insufficient_stock
                                    - product_unavailable
                                    - shipping_unavailable
                                    - tax_unavailable
                                    - delivery_address_required
                                    - delivery_phone_required
                                    - payment_card_required
                                    - payment_card_unusable
                                    - quantity_limit_exceeded
                                    - order_limit_exceeded
                                    - order_below_minimum
                                message:
                                  type: string
                                  description: A sentence you can show. It can change, so do not match on it.
                                productId:
                                  type: string
                                  description: The product. Only on problems with one product.
                                supplierId:
                                  type: string
                                  description: The supplier. Only on problems with one supplier.
                                available:
                                  type: integer
                                  description: How many units can be ordered. Only on `insufficient_stock`.
                    companyProblems:
                      type: array
                      description: What stops every group.
                      items:
                        type: object
                        required:
                          - code
                          - message
                        properties:
                          code:
                            type: string
                            description: What stops a group or the whole request. See
                              [Problems](/create-orders/#problems).
                            enum:
                              - buying_suspended
                              - supplier_unavailable
                              - address_state_without_license
                              - ship_to_restricted
                              - hazmat_destination
                              - address_not_deliverable
                              - connection_required
                              - connection_blocked
                              - insufficient_stock
                              - product_unavailable
                              - shipping_unavailable
                              - tax_unavailable
                              - delivery_address_required
                              - delivery_phone_required
                              - payment_card_required
                              - payment_card_unusable
                              - quantity_limit_exceeded
                              - order_limit_exceeded
                              - order_below_minimum
                          message:
                            type: string
                            description: A sentence you can show. It can change, so do not match on it.
                          productId:
                            type: string
                            description: The product. Only on problems with one product.
                          supplierId:
                            type: string
                            description: The supplier. Only on problems with one supplier.
                          available:
                            type: integer
                            description: How many units can be ordered. Only on `insufficient_stock`.
                    total:
                      type:
                        - number
                        - "null"
                      description: The sum of all the groups in US dollars, or `null` when a group's
                        total is.
                    currency:
                      type: string
                      const: usd
                      description: Always `usd`.
        examples:
          validation_failed:
            value:
              error:
                code: validation_failed
                message: ein must have 9 digits.
                field: ein
  "401":
    description: >
      `invalid_user_token`: the user token is missing or wrong.
      `user_token_expired`: the user token expired. Log the

      user in again with `POST /v1/login`.
    content:
      application/json:
        schema:
          type: object
          description: The body of every error response.
          required:
            - error
          properties:
            error:
              type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                  description: A stable error code.
                  enum:
                    - invalid_app_token
                    - invalid_user_token
                    - user_token_expired
                    - origin_not_allowed
                    - ip_not_allowed
                    - user_cannot_manage_company
                    - user_cannot_order
                    - company_blocked
                    - company_not_verified
                    - app_setup_incomplete
                    - not_found
                    - validation_failed
                    - email_invalid_format
                    - email_domain_not_found
                    - email_mailbox_not_found
                    - address_state_without_license
                    - hazmat_destination
                    - ship_to_restricted
                    - verification_data_missing
                    - document_locked
                    - document_already_uploaded
                    - file_too_large
                    - file_type_not_supported
                    - reply_not_expected
                    - order_action_not_allowed
                    - supplier_refused_cancel
                    - order_total_changed
                    - order_has_problems
                    - idempotency_key_reused
                    - idempotency_key_in_use
                    - rate_limit_exceeded
                    - internal_error
                message:
                  type: string
                  description: A sentence for developers. It can change, so do not match on it.
                field:
                  type: string
                  description: The request field that caused the error. Only some errors have it.
                missing:
                  type: array
                  items:
                    type: string
                  description: Only on `verification_data_missing` and `app_setup_incomplete`.
                    What still needs to be set.
                quote:
                  type: object
                  required:
                    - groups
                    - unresolvedLines
                    - companyProblems
                    - total
                    - currency
                  properties:
                    groups:
                      type: array
                      description: One group per supplier. Each group becomes one order.
                      items:
                        type: object
                        required:
                          - supplierId
                          - lines
                          - productsTotal
                          - orderDiscount
                          - shipping
                          - freeShippingRemaining
                          - salesTax
                          - taxExemption
                          - total
                          - chargeTiming
                          - problems
                        properties:
                          supplierId:
                            type: string
                            examples:
                              - sup-1Ry6tUi3Op
                          lines:
                            type: array
                            items:
                              type: object
                              required:
                                - productId
                                - quantity
                                - unitPrice
                                - discount
                                - total
                              properties:
                                productId:
                                  type: string
                                quantity:
                                  type: integer
                                unitPrice:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                                discount:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                                total:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                          productsTotal:
                            type: number
                            description: An amount in dollars, with up to two decimal places.
                          orderDiscount:
                            type: number
                            description: An amount in dollars, with up to two decimal places.
                          shipping:
                            type: object
                            required:
                              - amount
                              - kind
                            properties:
                              amount:
                                type:
                                  - number
                                  - "null"
                                description: The shipping charge in US dollars, or `null` when it cannot be
                                  worked out.
                              kind:
                                type: string
                                enum:
                                  - free
                                  - flat
                                  - carrier
                          freeShippingRemaining:
                            type:
                              - number
                              - "null"
                            description: How much more to order for free shipping, or `null` when it does
                              not apply.
                          salesTax:
                            type:
                              - number
                              - "null"
                            description: The sales tax in US dollars, or `null` when it cannot be worked
                              out.
                          taxExemption:
                            type: object
                            required:
                              - certificateId
                              - notAppliedReason
                            properties:
                              certificateId:
                                type:
                                  - string
                                  - "null"
                                description: The exemption certificate used, or `null`.
                              notAppliedReason:
                                type:
                                  - string
                                  - "null"
                                enum:
                                  - no_certificate
                                  - other_state
                                  - not_reviewed
                                  - null
                                description: Why no certificate applies, or `null` when one does.
                          total:
                            type:
                              - number
                              - "null"
                            description: >
                              The amount the salon pays for this group in US
                              dollars, or `null` when it cannot be worked out.
                              Send it back as

                              `expectedTotal`. A group with problems has no
                              `expectedTotal`.
                          chargeTiming:
                            type: string
                            enum:
                              - now
                              - after_verification
                            description: >
                              `now`: Beauty Router charges the card when the
                              order is created. `after_verification`: the
                              company is

                              `prequalified`, so the charge waits until its
                              verification ends.
                          problems:
                            type: array
                            items:
                              type: object
                              required:
                                - code
                                - message
                              properties:
                                code:
                                  type: string
                                  description: What stops a group or the whole request. See
                                    [Problems](/create-orders/#problems).
                                  enum:
                                    - buying_suspended
                                    - supplier_unavailable
                                    - address_state_without_license
                                    - ship_to_restricted
                                    - hazmat_destination
                                    - address_not_deliverable
                                    - connection_required
                                    - connection_blocked
                                    - insufficient_stock
                                    - product_unavailable
                                    - shipping_unavailable
                                    - tax_unavailable
                                    - delivery_address_required
                                    - delivery_phone_required
                                    - payment_card_required
                                    - payment_card_unusable
                                    - quantity_limit_exceeded
                                    - order_limit_exceeded
                                    - order_below_minimum
                                message:
                                  type: string
                                  description: A sentence you can show. It can change, so do not match on it.
                                productId:
                                  type: string
                                  description: The product. Only on problems with one product.
                                supplierId:
                                  type: string
                                  description: The supplier. Only on problems with one supplier.
                                available:
                                  type: integer
                                  description: How many units can be ordered. Only on `insufficient_stock`.
                    unresolvedLines:
                      type: array
                      description: The lines no supplier can take.
                      items:
                        type: object
                        required:
                          - productId
                          - quantity
                          - problems
                        properties:
                          productId:
                            type: string
                          quantity:
                            type: integer
                          problems:
                            type: array
                            items:
                              type: object
                              required:
                                - code
                                - message
                              properties:
                                code:
                                  type: string
                                  description: What stops a group or the whole request. See
                                    [Problems](/create-orders/#problems).
                                  enum:
                                    - buying_suspended
                                    - supplier_unavailable
                                    - address_state_without_license
                                    - ship_to_restricted
                                    - hazmat_destination
                                    - address_not_deliverable
                                    - connection_required
                                    - connection_blocked
                                    - insufficient_stock
                                    - product_unavailable
                                    - shipping_unavailable
                                    - tax_unavailable
                                    - delivery_address_required
                                    - delivery_phone_required
                                    - payment_card_required
                                    - payment_card_unusable
                                    - quantity_limit_exceeded
                                    - order_limit_exceeded
                                    - order_below_minimum
                                message:
                                  type: string
                                  description: A sentence you can show. It can change, so do not match on it.
                                productId:
                                  type: string
                                  description: The product. Only on problems with one product.
                                supplierId:
                                  type: string
                                  description: The supplier. Only on problems with one supplier.
                                available:
                                  type: integer
                                  description: How many units can be ordered. Only on `insufficient_stock`.
                    companyProblems:
                      type: array
                      description: What stops every group.
                      items:
                        type: object
                        required:
                          - code
                          - message
                        properties:
                          code:
                            type: string
                            description: What stops a group or the whole request. See
                              [Problems](/create-orders/#problems).
                            enum:
                              - buying_suspended
                              - supplier_unavailable
                              - address_state_without_license
                              - ship_to_restricted
                              - hazmat_destination
                              - address_not_deliverable
                              - connection_required
                              - connection_blocked
                              - insufficient_stock
                              - product_unavailable
                              - shipping_unavailable
                              - tax_unavailable
                              - delivery_address_required
                              - delivery_phone_required
                              - payment_card_required
                              - payment_card_unusable
                              - quantity_limit_exceeded
                              - order_limit_exceeded
                              - order_below_minimum
                          message:
                            type: string
                            description: A sentence you can show. It can change, so do not match on it.
                          productId:
                            type: string
                            description: The product. Only on problems with one product.
                          supplierId:
                            type: string
                            description: The supplier. Only on problems with one supplier.
                          available:
                            type: integer
                            description: How many units can be ordered. Only on `insufficient_stock`.
                    total:
                      type:
                        - number
                        - "null"
                      description: The sum of all the groups in US dollars, or `null` when a group's
                        total is.
                    currency:
                      type: string
                      const: usd
                      description: Always `usd`.
        examples:
          invalid_user_token:
            value:
              error:
                code: invalid_user_token
                message: The user token is missing or not valid.
          user_token_expired:
            value:
              error:
                code: user_token_expired
                message: The user token expired. Log the user in again.
  "500":
    description: "`internal_error`: something failed on Beauty Router's side. Try
      again later."
    content:
      application/json:
        schema:
          type: object
          description: The body of every error response.
          required:
            - error
          properties:
            error:
              type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                  description: A stable error code.
                  enum:
                    - invalid_app_token
                    - invalid_user_token
                    - user_token_expired
                    - origin_not_allowed
                    - ip_not_allowed
                    - user_cannot_manage_company
                    - user_cannot_order
                    - company_blocked
                    - company_not_verified
                    - app_setup_incomplete
                    - not_found
                    - validation_failed
                    - email_invalid_format
                    - email_domain_not_found
                    - email_mailbox_not_found
                    - address_state_without_license
                    - hazmat_destination
                    - ship_to_restricted
                    - verification_data_missing
                    - document_locked
                    - document_already_uploaded
                    - file_too_large
                    - file_type_not_supported
                    - reply_not_expected
                    - order_action_not_allowed
                    - supplier_refused_cancel
                    - order_total_changed
                    - order_has_problems
                    - idempotency_key_reused
                    - idempotency_key_in_use
                    - rate_limit_exceeded
                    - internal_error
                message:
                  type: string
                  description: A sentence for developers. It can change, so do not match on it.
                field:
                  type: string
                  description: The request field that caused the error. Only some errors have it.
                missing:
                  type: array
                  items:
                    type: string
                  description: Only on `verification_data_missing` and `app_setup_incomplete`.
                    What still needs to be set.
                quote:
                  type: object
                  required:
                    - groups
                    - unresolvedLines
                    - companyProblems
                    - total
                    - currency
                  properties:
                    groups:
                      type: array
                      description: One group per supplier. Each group becomes one order.
                      items:
                        type: object
                        required:
                          - supplierId
                          - lines
                          - productsTotal
                          - orderDiscount
                          - shipping
                          - freeShippingRemaining
                          - salesTax
                          - taxExemption
                          - total
                          - chargeTiming
                          - problems
                        properties:
                          supplierId:
                            type: string
                            examples:
                              - sup-1Ry6tUi3Op
                          lines:
                            type: array
                            items:
                              type: object
                              required:
                                - productId
                                - quantity
                                - unitPrice
                                - discount
                                - total
                              properties:
                                productId:
                                  type: string
                                quantity:
                                  type: integer
                                unitPrice:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                                discount:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                                total:
                                  type: number
                                  description: An amount in dollars, with up to two decimal places.
                          productsTotal:
                            type: number
                            description: An amount in dollars, with up to two decimal places.
                          orderDiscount:
                            type: number
                            description: An amount in dollars, with up to two decimal places.
                          shipping:
                            type: object
                            required:
                              - amount
                              - kind
                            properties:
                              amount:
                                type:
                                  - number
                                  - "null"
                                description: The shipping charge in US dollars, or `null` when it cannot be
                                  worked out.
                              kind:
                                type: string
                                enum:
                                  - free
                                  - flat
                                  - carrier
                          freeShippingRemaining:
                            type:
                              - number
                              - "null"
                            description: How much more to order for free shipping, or `null` when it does
                              not apply.
                          salesTax:
                            type:
                              - number
                              - "null"
                            description: The sales tax in US dollars, or `null` when it cannot be worked
                              out.
                          taxExemption:
                            type: object
                            required:
                              - certificateId
                              - notAppliedReason
                            properties:
                              certificateId:
                                type:
                                  - string
                                  - "null"
                                description: The exemption certificate used, or `null`.
                              notAppliedReason:
                                type:
                                  - string
                                  - "null"
                                enum:
                                  - no_certificate
                                  - other_state
                                  - not_reviewed
                                  - null
                                description: Why no certificate applies, or `null` when one does.
                          total:
                            type:
                              - number
                              - "null"
                            description: >
                              The amount the salon pays for this group in US
                              dollars, or `null` when it cannot be worked out.
                              Send it back as

                              `expectedTotal`. A group with problems has no
                              `expectedTotal`.
                          chargeTiming:
                            type: string
                            enum:
                              - now
                              - after_verification
                            description: >
                              `now`: Beauty Router charges the card when the
                              order is created. `after_verification`: the
                              company is

                              `prequalified`, so the charge waits until its
                              verification ends.
                          problems:
                            type: array
                            items:
                              type: object
                              required:
                                - code
                                - message
                              properties:
                                code:
                                  type: string
                                  description: What stops a group or the whole request. See
                                    [Problems](/create-orders/#problems).
                                  enum:
                                    - buying_suspended
                                    - supplier_unavailable
                                    - address_state_without_license
                                    - ship_to_restricted
                                    - hazmat_destination
                                    - address_not_deliverable
                                    - connection_required
                                    - connection_blocked
                                    - insufficient_stock
                                    - product_unavailable
                                    - shipping_unavailable
                                    - tax_unavailable
                                    - delivery_address_required
                                    - delivery_phone_required
                                    - payment_card_required
                                    - payment_card_unusable
                                    - quantity_limit_exceeded
                                    - order_limit_exceeded
                                    - order_below_minimum
                                message:
                                  type: string
                                  description: A sentence you can show. It can change, so do not match on it.
                                productId:
                                  type: string
                                  description: The product. Only on problems with one product.
                                supplierId:
                                  type: string
                                  description: The supplier. Only on problems with one supplier.
                                available:
                                  type: integer
                                  description: How many units can be ordered. Only on `insufficient_stock`.
                    unresolvedLines:
                      type: array
                      description: The lines no supplier can take.
                      items:
                        type: object
                        required:
                          - productId
                          - quantity
                          - problems
                        properties:
                          productId:
                            type: string
                          quantity:
                            type: integer
                          problems:
                            type: array
                            items:
                              type: object
                              required:
                                - code
                                - message
                              properties:
                                code:
                                  type: string
                                  description: What stops a group or the whole request. See
                                    [Problems](/create-orders/#problems).
                                  enum:
                                    - buying_suspended
                                    - supplier_unavailable
                                    - address_state_without_license
                                    - ship_to_restricted
                                    - hazmat_destination
                                    - address_not_deliverable
                                    - connection_required
                                    - connection_blocked
                                    - insufficient_stock
                                    - product_unavailable
                                    - shipping_unavailable
                                    - tax_unavailable
                                    - delivery_address_required
                                    - delivery_phone_required
                                    - payment_card_required
                                    - payment_card_unusable
                                    - quantity_limit_exceeded
                                    - order_limit_exceeded
                                    - order_below_minimum
                                message:
                                  type: string
                                  description: A sentence you can show. It can change, so do not match on it.
                                productId:
                                  type: string
                                  description: The product. Only on problems with one product.
                                supplierId:
                                  type: string
                                  description: The supplier. Only on problems with one supplier.
                                available:
                                  type: integer
                                  description: How many units can be ordered. Only on `insufficient_stock`.
                    companyProblems:
                      type: array
                      description: What stops every group.
                      items:
                        type: object
                        required:
                          - code
                          - message
                        properties:
                          code:
                            type: string
                            description: What stops a group or the whole request. See
                              [Problems](/create-orders/#problems).
                            enum:
                              - buying_suspended
                              - supplier_unavailable
                              - address_state_without_license
                              - ship_to_restricted
                              - hazmat_destination
                              - address_not_deliverable
                              - connection_required
                              - connection_blocked
                              - insufficient_stock
                              - product_unavailable
                              - shipping_unavailable
                              - tax_unavailable
                              - delivery_address_required
                              - delivery_phone_required
                              - payment_card_required
                              - payment_card_unusable
                              - quantity_limit_exceeded
                              - order_limit_exceeded
                              - order_below_minimum
                          message:
                            type: string
                            description: A sentence you can show. It can change, so do not match on it.
                          productId:
                            type: string
                            description: The product. Only on problems with one product.
                          supplierId:
                            type: string
                            description: The supplier. Only on problems with one supplier.
                          available:
                            type: integer
                            description: How many units can be ordered. Only on `insufficient_stock`.
                    total:
                      type:
                        - number
                        - "null"
                      description: The sum of all the groups in US dollars, or `null` when a group's
                        total is.
                    currency:
                      type: string
                      const: usd
                      description: Always `usd`.
        examples:
          internal_error:
            value:
              error:
                code: internal_error
                message: Something went wrong. Try again later.
parameters: []
```
