> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shipstream.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Product or Packaging

> Creates a new `Product` or `PackagingFeature` in ShipStream according to the request body.



## OpenAPI

````yaml POST /v1/inventory/products
openapi: 3.0.3
info:
  title: ShipStream
  version: '1.0'
  license:
    name: Commercial (Copyright 2025 - All Rights Reserved)
    url: https://shipstream.io
  contact:
    name: ShipStream Support
    email: help@shipstream.io
  termsOfService: https://shipstream.io/legal/api-terms/
servers:
  - url: https://{base_url_domain}/api/global
    description: Direct API Url
    variables:
      base_url_domain:
        default: example.shipstream.app
        description: >-
          The fully qualified domain name for your ShipStream WMS instance. This
          is either a custom domain, or a subdomain of shipstream.app,

          and will be the same as the domain name for the page which you use to
          login to ShipStream WMS.
security:
  - ShipStream_bearerAuth: []
tags:
  - name: Warehouses
    x-displayName: Warehouses
  - name: Products
    x-displayName: Products
  - name: Locations
    x-displayName: Locations
  - name: Levels
    x-displayName: Levels
  - name: HoldReasons
    x-displayName: HoldReasons
  - name: Holds
    x-displayName: Holds
  - name: Deliveries
    description: Every thing about a Delivery Receiving
    x-displayName: Deliveries
  - name: Shipments
    x-displayName: Shipments
  - name: Orders
    x-displayName: Orders
  - name: Retailers
    x-displayName: Retailers
  - name: Users
    x-displayName: Users
  - name: User Roles
    x-displayName: User Roles
  - name: Merchants
    x-displayName: Merchants
  - name: Healthcheck
    x-displayName: Healthcheck
paths:
  /v1/inventory/products:
    post:
      tags:
        - Products
      summary: Create Product or Packaging
      description: >-
        Creates a new `Product` or `PackagingFeature` in ShipStream according to
        the request body.
      operationId: createProduct
      requestBody:
        description: >-
          An object conforming to the Inventory `Product` or `PackagingFeature`
          schema to be created.
        content:
          application/json:
            schema:
              type: object
              properties:
                resource:
                  allOf:
                    - description: >-
                        A reference object that will be used to create a
                        `Product` or `Packaging` object.
                    - $ref: '#/components/schemas/Inventory_API_v1_CompositeProduct'
      responses:
        '201':
          $ref: '#/components/responses/Inventory_API_v1_201-created-single'
        '400':
          $ref: '#/components/responses/Inventory_API_v1_400-bad-request'
        '422':
          $ref: '#/components/responses/Inventory_API_v1_422-unprocessable'
        '500':
          $ref: '#/components/responses/Inventory_API_v1_500-internal-server-error'
components:
  schemas:
    Inventory_API_v1_CompositeProduct:
      anyOf:
        - $ref: '#/components/schemas/Inventory_API_v1_Product'
        - $ref: '#/components/schemas/Inventory_API_v1_PackagingContainer'
        - $ref: '#/components/schemas/Inventory_API_v1_PackagingSupplies'
        - $ref: '#/components/schemas/Inventory_API_v1_PackagingDataCollection'
        - $ref: '#/components/schemas/Inventory_API_v1_PackagingInstruction'
        - $ref: '#/components/schemas/Inventory_API_v1_PackagingInfill'
      discriminator:
        propertyName: type
    Inventory_API_v1_Product:
      title: Product
      description: A Product contains information about a sellable item.
      allOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - Product
              description: This property describes the type of object in the response body.
            id:
              type: integer
              description: >-
                The internal, read-only, `id` property used as a path parameter
                in a resource lookup.
              readOnly: true
            vendor_sku:
              type: string
              description: >-
                For informational use only. Displayed during delivery processing
                to help match products.\
                  `Optional Field`
              nullable: true
              example: Vendor-SKU-1AD2
            external_id:
              type: string
              nullable: true
              example: 11-993-9048
              description: May be used for external product sync.
            barcodes:
              anyOf:
                - type: array
                  items:
                    type: string
                  nullable: true
                  example:
                    - 956623520-4
                    - O-VS-Oregano-p3
                - type: string
                  nullable: true
                  example: 956623520-4
              description: A comma separated list of unique packaging feature barcodes.
            goods_type:
              type: string
              enum:
                - NORMAL
                - ORM_D
                - LIMITED_QUANTITIES_COMMODITIES
                - HAZMAT
              description: >-
                This defines the regulations, if any, assigned to a `Product`.

                - `NORMAL` Not Regulated

                - `ORM_D`  ORM-D

                - `LIMITED_QUANTITIES_COMMODITIES`  Limited Quantities: Consumer
                Commodity

                - `HAZMAT` Regulated
            is_available:
              type: boolean
              enum:
                - true
                - false
              default: true
              description: This flag must be `true` to allow the `Product` to be ordered.
            is_visible:
              type: boolean
              enum:
                - true
                - false
              default: true
              description: >-
                This flag must be `true` to show the `Product` in the inventory
                feed.
            lot_type:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_LotTypeRef'
                - description: >-
                    This `LotType` determines how a `Product` should be "burned"
                    and whether lots with dissimilar data

                    can be "mixed".\
                      `Optional Field`
            weight:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                - description: >-
                    This object defines the weight of the `Product` in imperial
                    or metric units.\
                      `Optional Field`
            dimensions:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_Dimensions'
                - description: >-
                    This object defines the length, width, and height of the
                    `Product` in imperial or metric units.\
                      `Optional Field`
            volume:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_Volume'
                - description: >-
                    This object defines the cubic size of the `Product` in
                    imperial or metric units.\
                      `Optional Field`
            inventory:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_Inventory'
                - description: >-
                    This object describes how the `Product` Stock is defined,
                    such as real config values, or Virtual Inventory, and how to
                    handle Backorders.\
                      `Optional Field`
            export:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_Export'
                - description: >-
                    This object contains fields for describing and codifying an
                    internationally exportable `Product`.\
                      `Optional Field`
            regulated_goods:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_RegulatedGoods'
                - description: >-
                    This object only applies a `Product` using the "Regulated"
                    Goods Type, and describes the `Regulation` and container
                    specifications for the `Product`.\
                      `Optional Field`
            packaging:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_Packaging'
                - description: >-
                    This object defines how the shipping container/box for the
                    `Product` is to be processed and whether there are any
                    special instructions during packing.\
                      `Optional Field`
            custom_fields:
              allOf:
                - $ref: '#/components/schemas/Inventory_API_v1_custom_fields'
                - description: >-
                    This will set any Product Attributes, pre-defined by the
                    user, for the `Product`.\
                      `Optional Field`
        - $ref: '#/components/schemas/Inventory_API_v1_AbstractProduct'
    Inventory_API_v1_PackagingContainer:
      title: PackagingContainer
      description: >-
        A reference to the `PackagingContainer` object linked with Warehouse
        Inventory Location.
      allOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - PackagingContainer
              description: This property describes the type of object in the response body.
            id:
              type: integer
              description: >-
                The internal, read-only, `id` property used as a path parameter
                in a resource lookup.
              readOnly: true
            container_options:
              type: object
              properties:
                barcodes:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_barcodes'
                    - description: >-
                        A comma separated list of unique packaging feature
                        barcodes.\
                          `Optional Field`
                weight:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: >-
                        The weight of the container when packed with the
                        shipment items.
                dimensions:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Dimensions'
                    - description: >-
                        The dimensions of the container in imperial or metric
                        units.
                volume:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Volume'
                    - description: >-
                        The total volume of the container in imperial or metric
                        units.
                      readOnly: true
                manage_stock:
                  type: boolean
                  description: >-
                    This flag indicates whether or not to adjust the inventory
                    quantity of the packaging feature with each use. If `true`
                    then the inventory levels will decrease with each use. If
                    `no` then the inventory will not adjust with each use.
                  enum:
                    - true
                    - false
                associated_products:
                  type: array
                  description: >-
                    A list of products with this packaging feature selected in
                    its "Other Special Features" option in the product's
                    "Packaging" tab.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_ProductRef'
                allow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                disallow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will not be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                billing_amount:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Monetary'
                    - description: >-
                        The amount that will be billable for consumption of one
                        unit of this packaging feature.\
                          `Optional Field`
                allow_for_warehouses:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected warehouses.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_WarehouseRef'
                allow_for_shipping_methods:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected carriers/shipping methods.
                  items:
                    type: string
                satisfies_overbox:
                  type: boolean
                  description: >-
                    Will be a valid container for products which have `Requires
                    Overbox: Yes`.
                  enum:
                    - true
                    - false
                use_for_bin_packing:
                  type: string
                  description: >-
                    Containers with "Use for Bin Packing: No" will not be used
                    by packing solution providers.
                  enum:
                    - 'yes'
                    - 'no'
                    - fallback
                weight_capacity:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: >-
                        Maximum allowed weight of the container, including tare
                        weight.

                        `Optional Field`
                container_style:
                  type: string
                  description: >-
                    Specify the container type. Currently, only "Rigid Box" is
                    supported.
                  enum:
                    - rigid_box
                packaging_handling_surcharge:
                  type: boolean
                  description: >-
                    The Packaging Surcharge is applicable for this packaging
                    feature (e.g. cylindrical, non-fiberboard material,
                    protrusions, non-conveyable, etc.)
                  enum:
                    - true
                    - false
        - $ref: '#/components/schemas/Inventory_API_v1_AbstractProduct'
    Inventory_API_v1_PackagingSupplies:
      title: PackagingSupplies
      description: >-
        A reference to the `PackagingSupplies` object linked with Warehouse
        Inventory Location.
      allOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - PackagingSupplies
              description: This property describes the type of object in the response body.
            id:
              type: integer
              description: >-
                The internal, read-only, `id` property used as a path parameter
                in a resource lookup.
              readOnly: true
            supplies_options:
              type: object
              properties:
                barcodes:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_barcodes'
                    - description: >-
                        A comma separated list of unique packaging feature
                        barcodes.\
                          `Optional Field`
                weight:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: |-
                        The weight of the infill.
                        `Optional Field`
                manage_stock:
                  type: boolean
                  description: >-
                    This flag indicates whether or not to adjust the inventory
                    quantity of the packaging feature with each use. If `true`
                    then the inventory levels will decrease with each use. If
                    `no` then the inventory will not adjust with each use.
                  enum:
                    - true
                    - false
                associated_products:
                  type: array
                  description: >-
                    A list of products with this packaging feature selected in
                    its "Other Special Features" option in the product's
                    "Packaging" tab.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_ProductRef'
                allow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                disallow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will not be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                billing_amount:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Monetary'
                    - description: >-
                        The amount that will be billable for consumption of one
                        unit of this packaging feature.\
                          `Optional Field`
                allow_for_warehouses:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected warehouses.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_WarehouseRef'
                allow_for_shipping_methods:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected carriers/shipping methods.
                  items:
                    type: string
                packaging_handling_surcharge:
                  type: boolean
                  description: >-
                    The Packaging Surcharge is applicable for this packaging
                    feature (e.g. cylindrical, non-fiberboard material,
                    protrusions, non-conveyable, etc.)
                  enum:
                    - true
                    - false
                apply_to_goods_type:
                  type: string
                  enum:
                    - any
                    - NORMAL
                    - ORM_D
                  description: >-
                    This packaging feature will be applied to all shipments
                    which do not contain an item with this Goods Type.

                    - `NORMAL` Not Regulated

                    - `ORM_D`  ORM-D

                    `Optional Field`
                never_apply_to_goods_type:
                  type: string
                  enum:
                    - NORMAL
                    - LIMITED_QUANTITIES_COMMODITIES
                    - HAZMAT
                  description: >-
                    This packaging feature will be applied to all shipments
                    which do not contain an item with this Goods Type.

                    - `NORMAL` Not Regulated

                    - `LIMITED_QUANTITIES_COMMODITIES`  Limited Quantities:
                    Consumer Commodity

                    - `HAZMAT` Regulated

                    `Optional Field`
                apply_only_above_weight:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: >-
                        If specified, this packaging supply is not a requirement
                        for packages under the given weight when "Always/Never
                        Apply to Goods Type" is specified.

                        `Optional Field`
                one_per:
                  type: string
                  description: >-
                    The expected number of scans per shipment. The product "Unit
                    Quantity" is used as a multiplier for "One Scan Per: Each".
                  enum:
                    - order
                    - package
                    - item
                    - each
                require_scan_timing:
                  type: string
                  description: >-
                    Choose how the scan timer should begin recording time data
                    on this product or packaging feature.
                  enum:
                    - after_product_scan|on_full
                    - on_start
                disable_confirm_button:
                  type: boolean
                  description: >-
                    If "No", the user will be able to tap "Confirm" rather than
                    scanning a barcode.
                  enum:
                    - true
                    - false
                require_packaging_type:
                  type: string
                  description: >-
                    If specified, this packaging feature will only be applicable
                    when the container meets the chosen criteria based on the
                    container's "Satisfies Overbox" attribute when "Always/Never
                    Apply to Goods Type" is specified.
                  enum:
                    - overbox
                    - non_overbox
                apply_to_region:
                  type: string
                  description: >-
                    Unless specified, this packaging feature will apply to all
                    regions when "Always/Never Apply to Goods Type" is
                    specified.
                apply_unless_container_meets_hazmat:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will be applicable unless a
                    package contains a DG item with "Container Meets Hazmat
                    Specs: Yes" when "Always/Never Apply to Goods Type" is
                    specified.
                  enum:
                    - true
                    - false
                apply_to_multi_sku_package:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will only be applied to
                    packages containing more than one SKU when "Always/Never
                    Apply to Goods Type" is specified.
                  enum:
                    - true
                    - false
        - $ref: '#/components/schemas/Inventory_API_v1_AbstractProduct'
    Inventory_API_v1_PackagingDataCollection:
      title: PackagingDataCollection
      description: >-
        A reference to the `PackagingDataCollection` object linked with
        Warehouse Inventory Location.
      allOf:
        - $ref: '#/components/schemas/Inventory_API_v1_AbstractProduct'
        - type: object
          properties:
            type:
              type: string
              enum:
                - PackagingDataCollection
              description: This property describes the type of object in the response body.
            id:
              type: integer
              description: >-
                The internal, read-only, `id` property used as a path parameter
                in a resource lookup.
              readOnly: true
            data_collection_options:
              type: object
              properties:
                associated_products:
                  type: array
                  description: >-
                    A list of products with this packaging feature selected in
                    its "Other Special Features" option in the product's
                    "Packaging" tab.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_ProductRef'
                allow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                disallow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will not be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                billing_amount:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Monetary'
                    - description: >-
                        The amount that will be billable for consumption of one
                        unit of this packaging feature.\
                          `Optional Field`
                allow_for_shipping_methods:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected carriers/shipping methods.
                  items:
                    type: string
                apply_to_goods_type:
                  type: string
                  enum:
                    - any
                    - NORMAL
                    - ORM_D
                  description: >-
                    This packaging feature will be applied to all shipments
                    containing an item with this Goods Type. \

                    - `NORMAL` Not Regulated

                    - `ORM_D`  ORM-D

                    `Optional Field`
                never_apply_to_goods_type:
                  type: string
                  enum:
                    - NORMAL
                    - LIMITED_QUANTITIES_COMMODITIES
                    - HAZMAT
                  description: >-
                    This packaging feature will be applied to all shipments
                    which do not contain an item with this Goods Type. \

                    - `NORMAL` Not Regulated

                    - `LIMITED_QUANTITIES_COMMODITIES`  Limited Quantities:
                    Consumer Commodity

                    - `HAZMAT` Regulated

                    `Optional Field`
                apply_only_above_weight:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: >-
                        If specified, this packaging product is not a
                        requirement for packages under the given weight when
                        "Always/Never Apply to Goods Type" is specified.

                        `Optional Field`
                one_per:
                  type: string
                  description: >-
                    The expected number of scans per shipment. The product "Unit
                    Quantity" is used as a multiplier for "One Scan Per: Each".
                  enum:
                    - order
                    - package
                    - item
                    - each
                require_scan_timing:
                  type: string
                  description: >-
                    Choose how the scan timer should begin recording time data
                    on this product or packaging feature.
                  enum:
                    - after_product_scan|on_full
                    - on_start
                disable_confirm_button:
                  type: boolean
                  description: >-
                    If "No", the user will be able to tap "Confirm" rather than
                    scanning a barcode.
                  enum:
                    - true
                    - false
                require_packaging_type:
                  type: string
                  description: >-
                    If specified, this packaging feature will only be applicable
                    when the container meets the chosen criteria based on the
                    container's "Satisfies Overbox" attribute when "Always/Never
                    Apply to Goods Type" is specified.
                  enum:
                    - overbox
                    - non_overbox
                apply_unless_container_meets_hazmat:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will be applicable unless a
                    package contains a DG item with "Container Meets Hazmat
                    Specs: Yes" when "Always/Never Apply to Goods Type" is
                    specified.
                  enum:
                    - true
                    - false
                apply_to_multi_sku_package:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will only be applied to
                    packages containing more than one SKU when "Always/Never
                    Apply to Goods Type" is specified.
                  enum:
                    - true
                    - false
                collect_data_pattern:
                  type: string
                  description: >-
                    Specify a Javascript-compatible regular expression which
                    describes the format of the data to be collected. Examples:
                    ".+" for anything, or "^[0-9]{15}$" for a 15-digit number.
                    See http://regexpal.com/
                apply_to_region:
                  type: string
                  description: >-
                    Unless specified, this packaging feature will apply to all
                    regions when "Always/Never Apply to Goods Type" is
                    specified.
                is_collected_data_unique:
                  type: boolean
                  description: >-
                    Prevent the same data collection value from being collected
                    more than once on the same shipment.
                  enum:
                    - true
                    - false
    Inventory_API_v1_PackagingInstruction:
      title: PackagingInstruction
      description: >-
        A reference to the `PackagingInstruction` object linked with Warehouse
        Inventory Location.
      allOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - PackagingInstruction
              description: This property describes the type of object in the response body.
            id:
              type: integer
              description: >-
                The internal, read-only, `id` property used as a path parameter
                in a resource lookup.
              readOnly: true
            instruction_options:
              type: object
              properties:
                barcodes:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_barcodes'
                    - description: >-
                        A comma separated list of unique packaging feature
                        barcodes.\
                          `Optional Field`
                associated_products:
                  type: array
                  description: >-
                    A list of products with this packaging feature selected in
                    its "Other Special Features" option in the product's
                    "Packaging" tab.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_ProductRef'
                allow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                disallow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will not be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                billing_amount:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Monetary'
                    - description: >-
                        The amount that will be billable for consumption of one
                        unit of this packaging feature.\
                          `Optional Field`
                allow_for_shipping_methods:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected carriers/shipping methods.
                  items:
                    type: string
                apply_to_goods_type:
                  type: string
                  enum:
                    - any
                    - NORMAL
                    - ORM_D
                  description: >-
                    This packaging feature will be applied to all shipments
                    containing an item with this Goods Type.

                    - `NORMAL` Not Regulated

                    - `ORM_D`  ORM-D

                    `Optional Field`
                never_apply_to_goods_type:
                  type: string
                  enum:
                    - NORMAL
                    - LIMITED_QUANTITIES_COMMODITIES
                    - HAZMAT
                  description: >-
                    This packaging feature will be applied to all shipments
                    which do not contain an item with this Goods Type.

                    - `NORMAL` Not Regulated

                    - `LIMITED_QUANTITIES_COMMODITIES`  Limited Quantities:
                    Consumer Commodity

                    - `HAZMAT` Regulated

                    `Optional Field`
                apply_only_above_weight:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: >-
                        If specified, this packaging product is not a
                        requirement for packages under the given weight when
                        "Always/Never Apply to Goods Type" is specified. \

                        `Optional Field`
                one_per:
                  type: string
                  description: >-
                    The expected number of scans per shipment. The product "Unit
                    Quantity" is used as a multiplier for "One Scan Per: Each".
                  enum:
                    - order
                    - package
                    - item
                    - each
                require_scan_timing:
                  type: string
                  description: >-
                    Choose how the scan timer should begin recording time data
                    on this product or packaging feature.
                  enum:
                    - after_product_scan|on_full
                    - on_start
                disable_confirm_button:
                  type: boolean
                  description: >-
                    If "No", the user will be able to tap "Confirm" rather than
                    scanning a barcode.
                  enum:
                    - true
                    - false
                require_packaging_type:
                  type: string
                  description: >-
                    If specified, this packaging feature will only be applicable
                    when the container meets the chosen criteria based on the
                    container's "Satisfies Overbox" attribute when "Always/Never
                    Apply to Goods Type" is specified.
                  enum:
                    - overbox
                    - non_overbox
                apply_to_region:
                  type: string
                  description: >-
                    Unless specified, this packaging feature will apply to all
                    regions when "Always/Never Apply to Goods Type" is
                    specified.
                apply_unless_container_meets_hazmat:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will be applicable unless a
                    package contains a DG item with "Container Meets Hazmat
                    Specs: Yes" when "Always/Never Apply to Goods Type" is
                    specified.
                  enum:
                    - true
                    - false
                apply_to_multi_sku_package:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will only be applied to
                    packages containing more than one SKU when "Always/Never
                    Apply to Goods Type" is specified.
                  enum:
                    - true
                    - false
        - $ref: '#/components/schemas/Inventory_API_v1_AbstractProduct'
    Inventory_API_v1_PackagingInfill:
      title: PackagingInfill
      description: >-
        A reference to the `PackagingInfill` object linked with Warehouse
        Inventory Location.
      allOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - PackagingInfill
              description: This property describes the type of object in the response body.
            id:
              type: integer
              description: >-
                The internal, read-only, `id` property used as a path parameter
                in a resource lookup.
              readOnly: true
            infill_options:
              type: object
              properties:
                barcodes:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_barcodes'
                    - description: >-
                        A comma separated list of unique packaging feature
                        barcodes.\
                          `Optional Field`
                weight:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Weight'
                    - description: |-
                        The weight of the infill.
                        `Optional Field`
                manage_stock:
                  type: boolean
                  description: >-
                    This flag indicates whether or not to adjust the inventory
                    quantity of the packaging feature with each use. If `true`
                    then the inventory levels will decrease with each use. If
                    `no` then the inventory will not adjust with each use.
                  enum:
                    - true
                    - false
                associated_products:
                  type: array
                  description: >-
                    A list of products with this packaging feature selected in
                    its "Other Special Features" option in the product's
                    "Packaging" tab.
                  items:
                    $ref: '#/components/schemas/Inventory_API_v1_ProductRef'
                allow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will only be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                disallow_for_brands:
                  type: array
                  description: >-
                    If specified, this packaging feature will not be applicable
                    to the selected merchants/brands.
                  items:
                    anyOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
                      - $ref: '#/components/schemas/Inventory_API_v1_BrandRef'
                billing_amount:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Monetary'
                    - description: >-
                        The amount that will be billable for consumption of one
                        unit of this packaging feature.\
                          `Optional Field`
                disable_confirm_button:
                  type: boolean
                  description: >-
                    If "No", the user will be able to tap "Confirm" rather than
                    scanning a barcode.
                  enum:
                    - true
                    - false
                apply_unless_container_meets_hazmat:
                  type: boolean
                  description: >-
                    If "Yes", this packaging product will be applicable unless a
                    package contains a DG item with "Container Meets Hazmat
                    Specs: Yes" when "Always/Never Apply to Goods Type" is
                    specified.
                  enum:
                    - true
                    - false
                is_confirmation_required:
                  type: boolean
                  description: >-
                    If "Yes", this packer will be prompted and required to
                    confirm the use of infill.
                  enum:
                    - true
                    - false
                infill_horizontal:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Length'
                    - description: >-
                        The amount of space to reserve on each horizontal side
                        of the package for infill. \

                        `Optional Field`
                infill_vertical:
                  allOf:
                    - $ref: '#/components/schemas/Inventory_API_v1_Length'
                    - description: >-
                        The amount of space to reserve on each vertical side of
                        the package for infill.

                        `Optional Field`
                infill_priority:
                  type: integer
                  description: >-
                    If multiple infill types are prescribed for a mix of items,
                    the infill with the lowest Infill Priority number will
                    prevail.
        - $ref: '#/components/schemas/Inventory_API_v1_AbstractProduct'
    Inventory_API_v1_LotTypeRef:
      title: LotTypeRef
      description: LotType
      type: object
      properties:
        type:
          type: string
          enum:
            - LotType
          description: This property describes the type of object in the response body.
        id:
          type: integer
          format: int64
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
          example: 4
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_Weight:
      title: Weight
      type: object
      nullable: true
      properties:
        value:
          type: number
          description: >-
            The weight quantity defined as a floating point value of up to 4
            decimal places.
          format: float
          example: 20
        unit:
          $ref: '#/components/schemas/Inventory_API_v1_WeightUnit'
    Inventory_API_v1_Dimensions:
      title: Dimensions
      type: object
      nullable: true
      properties:
        length:
          type: number
          description: >-
            This distance value is usually assigned to the longest side of the
            object and is defined as a floating-point number up to 4 decimal
            places.
          format: float
          example: 8
        width:
          type: number
          description: >-
            This value describes the horizontal distance of the subject defined
            as a floating-point number up to 4 decimal places.
          format: float
          example: 6
        height:
          type: number
          description: >-
            This value describes the vertical distance of the subject defined as
            a floating-point number up to 4 decimal places.
          format: float
          example: 4
        unit:
          $ref: '#/components/schemas/Inventory_API_v1_LengthUnit'
    Inventory_API_v1_Volume:
      title: Volume
      type: object
      nullable: true
      properties:
        value:
          type: number
          description: >-
            This value describes the cubic size of the subject as a
            floating-point number up to 4 decimal places.
          format: float
          example: 300
        unit:
          $ref: '#/components/schemas/Inventory_API_v1_VolumeUnit'
    Inventory_API_v1_Inventory:
      title: Inventory
      type: object
      description: Product Inventory information
      properties:
        backorders:
          description: >-
            This determines if `Product` that is no longer in stock may be
            backordered or whether or not to use ShipStream's scoped
            configurations.
          anyOf:
            - type: boolean
              example: true
            - type: string
              enum:
                - use_config
        dynamic_allocation:
          description: >-
            This will allow the `Product` to source from inventory in other
            warehouses in real-time if enabled, and can be set to use
            ShipStream's scoped configurations.
          anyOf:
            - type: boolean
              example: true
            - type: string
              enum:
                - use_config
        virtual_inventory:
          type: string
          description: >-
            This is the method used to predict an esitmate of inventory
            available when kitting from the `Product`.
          enum:
            - none
            - optimistic
            - realistic
            - pessimistic
          example: optimistic
    Inventory_API_v1_Export:
      title: Export
      type: object
      description: Product Export and Custom information
      properties:
        description:
          type: string
          description: >-
            This is used to describe in detail the `Product` for international
            shipping and customs regulations.
          nullable: true
          example: Plastic children's toy with steel weights and ball bearings
        customs_value:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_Monetary'
            - description: >-
                The value of the products the purpose of calculating duties and
                taxes in the destination country.
        country_of_manufacture:
          type: string
          nullable: true
          description: 2 letters Country ISO Code
          example: TW
        hs_base_code:
          type: string
          description: >-
            This is the Harmonized System Code (HS Code); a standardized
            numerical method of classifying traded products. These are 6 digit
            codes in the format \#\#\#.\#\# which are associated with a standard
            HS Code Description.
          nullable: true
          example: '8518.30'
        hs_country_extension:
          $ref: '#/components/schemas/Inventory_API_v1_country_extension'
    Inventory_API_v1_RegulatedGoods:
      title: RegulatedGoods
      type: object
      description: Product Regulation Information
      properties:
        regulation:
          $ref: '#/components/schemas/Inventory_API_v1_RegulationRef'
        technical_name:
          type: string
          nullable: true
          description: Must match against Regulation's Technical Name Pattern if specified.
          example: Hydro Polymer Acetylene Coating
        additional_information:
          type: string
          nullable: true
          description: >-
            Must match against Regulation's Additional Regulatory Information
            Pattern if specified.
          example: Flamable Liquid
        net_weight:
          $ref: '#/components/schemas/Inventory_API_v1_Weight'
        container_type:
          $ref: '#/components/schemas/Inventory_API_v1_container_type'
        container_meets_hazmat_specs:
          type: boolean
          description: >-
            This flag indicates that the `RegulatedGoods` container is
            sufficient for a regulated (HAZMAT) product.
          example: true
        regulation_units:
          type: number
          description: >-
            These units are arbitrary and should be relative to the Regulation's
            Pickup Weight Limit. E.g. it could be in pounds, kilowatt/hours,
            etc.
          format: float
          example: 5
    Inventory_API_v1_Packaging:
      title: Packaging
      type: object
      description: Product Packaging information
      properties:
        require_packaging:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                If Yes, packaging will require a Box with "Satisfies Overbox:
                Yes".
        require_weight_check:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                If Yes, the associated product will require the use of a scale
                to verify that the package's weight falls within the expected
                amount. If this is set to No, this step will be skipped by the
                packer.
        require_confirmation_per_item:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                If Yes, Packaging Products with "One Scan Per: Item" will
                require a scan for each item packed rather than just one for the
                first item in a package.
        unit_quantity:
          type: integer
          example: 1
          nullable: true
          description: >-
            Number of individually packaged items contained therein for purposes
            of special packaging features.
        bulk_quantity:
          type: integer
          nullable: true
          example: 10
          description: >-
            Prefer to split into packages when necessary using multiples of this
            amount.
        max_per_package:
          type: integer
          nullable: true
          example: 15
          description: >-
            The maximum quantity of this product to ever include in the same
            package. 

            Multiply by "Unit Quantity" to achieve common units between other
            products with the same "Ship Separate Tag" value.
        is_ship_separately:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                This item cannot ship in the same package as other items (unless
                they have the same "Ship Separate Tag").
        ship_separately_tag:
          type: string
          nullable: true
          description: >-
            Applies only if "Ship Separate" is "Yes". Assign the same tag to
            treat similar products as interchangeable 

            with respect to the "Ship Separate" and "Max Per Package" attribute.
          example: PVC
        can_tip:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                If Yes, the item is allowed to be rotated vertically when
                packed.
        can_contain_other_items:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                If Yes then other smaller items are allowed to be placed within
                this larger item. This is useful when the item is hollow or is a
                bin/bucket.
        is_handling_surcharge:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_boolean'
            - description: >-
                The Packaging Surcharge is applicable when shipped without an
                Overbox.
    Inventory_API_v1_custom_fields:
      type: array
      description: Custom field values as an array of code/value pairs.
      items:
        type: object
        properties:
          code:
            type: string
            description: The custom field code/identifier.
          value:
            description: The field value (type depends on field configuration).
          label:
            type: string
            description: For select fields, the display label of the selected option.
          options:
            type: object
            description: For multiselect fields, a map of option IDs to labels.
            additionalProperties:
              type: string
        required:
          - code
      example:
        - code: color
          value: 13
          label: Red and Black
        - code: cost_of_goods
          value: 41.32
        - code: allow_mailer
          value: true
    Inventory_API_v1_AbstractProduct:
      type: object
      properties:
        sku:
          type: string
          description: >-
            The Stock Keeping Unit (SKU) is a unique identifier for the
            `Product`.
          example: SKU-1AD
        name:
          type: string
          description: This is displayed as a short, descriptive title for the `Product`.
          example: Test Product
        is_enabled:
          type: boolean
          description: Disabled products are effectively deleted.
          enum:
            - true
            - false
          default: true
        merchant:
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_MerchantRef'
            - description: The `Merchant` to which the product belongs.
        created_at:
          $ref: '#/components/schemas/Inventory_API_v1_created_at-optional'
        updated_at:
          $ref: '#/components/schemas/Inventory_API_v1_updated_at-optional'
    Inventory_API_v1_barcodes:
      anyOf:
        - type: string
          nullable: true
          example: 956623520-4
        - type: array
          items:
            type: string
          nullable: true
          example:
            - 956623520-4
            - O-VS-Oregano-p3
    Inventory_API_v1_ProductRef:
      title: ProductRef
      type: object
      description: A reference to a `Product` object by `id`.
      properties:
        type:
          type: string
          enum:
            - Product
          description: This property describes the type of object in the response body.
        id:
          type: integer
          format: int32
          example: 3
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      additionalProperties: false
    Inventory_API_v1_MerchantRef:
      title: MerchantRef
      type: object
      description: Reference a `Merchant` by `id`.
      properties:
        type:
          type: string
          enum:
            - Merchant
        id:
          type: integer
          format: int32
          example: 4
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      additionalProperties: false
    Inventory_API_v1_BrandRef:
      title: BrandRef
      type: object
      description: Reference a `Brand` by `id`.
      properties:
        type:
          type: string
          enum:
            - Brand
        id:
          type: integer
          format: int32
          description: The numeric `id` of a particular resource being updated.
          example: 4
      required:
        - type
        - id
      additionalProperties: false
    Inventory_API_v1_Monetary:
      title: Monetary
      type: object
      nullable: true
      properties:
        amount:
          type: number
          description: This is the monetary value..
          format: float
          example: 99
        currency:
          type: string
          description: An ISO 3166-1 alpha-3 currency code.
          example: USD
    Inventory_API_v1_WarehouseRef:
      title: WarehouseRef
      type: object
      description: A reference to a `Warehouse` by `id`.
      properties:
        type:
          type: string
          enum:
            - Warehouse
          description: This property describes the type of object in the response body.
        id:
          type: integer
          format: int32
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_Length:
      title: Length
      type: object
      nullable: true
      properties:
        value:
          type: number
          description: >-
            This value describes the length of the object as a floating-point
            number up to 4 decimal places.
          format: float
          example: 12
        unit:
          $ref: '#/components/schemas/Inventory_API_v1_LengthUnit'
    Inventory_API_v1_WeightUnit:
      type: string
      description: This can be an imperial or metric unit for weight.
      enum:
        - lb
        - oz
        - kg
        - g
    Inventory_API_v1_LengthUnit:
      type: string
      description: The imperical or metric unit of measurement.
      enum:
        - in
        - mm
        - cm
        - m
    Inventory_API_v1_VolumeUnit:
      type: string
      description: The imperical or metric unit of measurement as a cubic value.
      enum:
        - in^3
        - mm^3
        - cm^3
        - m^3
    Inventory_API_v1_country_extension:
      type: array
      nullable: true
      items:
        type: object
        properties:
          country_id:
            type: string
            description: This is the two-digit ISO (Alpha-2) country code.
          extension:
            type: string
            description: >-
              This is the Schedule C Country Code; a 4 digit code that
              identifies a country.
      example:
        - country_id: TW
          extension: '002'
        - country_id: US
          extension: '011'
    Inventory_API_v1_RegulationRef:
      title: Regulation
      type: object
      description: A reference to a `Regulation` by `id`.
      properties:
        type:
          type: string
          enum:
            - Regulation
          description: This property describes the type of object in the response body.
        id:
          type: integer
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_container_type:
      type: string
      nullable: true
      description: >-
        The Overpack Container Type can be a combination of material and
        container type such as Aluminum Box, Steel Drum, or a combination of a
        material and container type from these two lists:
          - `Material:` Aluminum, Fiberboard, Glass, Plywood, Plastic, Steel, Wood
          - `Container:` Bag, Bottle, Box, Bucket, Cylinder, Drum, Jerrican, Pail
      example: Plastic Box
    Inventory_API_v1_boolean:
      type: boolean
      enum:
        - true
        - false
      example: true
    Inventory_API_v1_created_at-optional:
      type: string
      format: date-time
      description: >-
        The date and time the object was created in RFC 3339 section 5.6
        notation.\
          `Optional Field`
      example: '2017-07-21T17:32:28Z'
      nullable: true
      readOnly: true
    Inventory_API_v1_updated_at-optional:
      type: string
      format: date-time
      description: >-
        The date and time the object was last updated in RFC 3339 section 5.6
        notation.
      example: '2017-07-21T17:39:43Z'
      nullable: true
      readOnly: true
  responses:
    Inventory_API_v1_201-created-single:
      description: Created - The resource was created successfully.
      content:
        application/json:
          schema:
            type: object
            properties:
              resource:
                type: object
                description: An object describing the resource that was created.
                properties:
                  type:
                    type: string
                    description: A resource type identifier.
                  id:
                    type: number
                    format: int32
                    example: 1
                    description: The primary key ID of the resource created.
              meta:
                type: object
                properties:
                  processing_time:
                    type: number
                    description: >-
                      Total time in which request is processed and response is
                      sent back.
                    format: float
            additionalProperties: false
    Inventory_API_v1_400-bad-request:
      description: >-
        The request was invalid. The client must change the request. See the
        response body for more details.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The error type code.
                      enum:
                        - parser
                        - parameters
                        - openapi
                    message:
                      type: string
                      description: An English sentence describing the error type.
                    details:
                      type: array
                      description: >-
                        An array of objects describing which keys are
                        responsible for the error and detailed messages
                        describing why they are not valid.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The path to the key which relates to the error.
                          message:
                            type: string
                            description: >-
                              An English sentence describing the details of the
                              error.
                        additionalProperties: false
                  additionalProperties: false
                minItems: 1
            additionalProperties: false
          example:
            errors:
              - type: parameters
                message: The supplied parameters are invalid.
                details:
                  - key: hold_until_date
                    message: The date must be in the future.
    Inventory_API_v1_422-unprocessable:
      description: >-
        There was an error processing the request. See the response body for
        more details.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The error type code.
                      enum:
                        - application
                        - unable_to_process
                    message:
                      type: string
                      description: An English sentence describing the error type.
                    details:
                      type: array
                      description: >-
                        An array of objects describing which keys are
                        responsible for the error and detailed messages
                        describing why they are not valid.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The path to the key which relates to the error.
                          message:
                            type: string
                            description: >-
                              An English sentence describing the details of the
                              error.
                        additionalProperties: false
                  additionalProperties: false
                minItems: 1
            additionalProperties: false
          example:
            errors:
              - type: unable_to_process
                message: The supplied parameters are invalid.
                details:
                  - key: hold_until_date
                    message: The date must be in the future.
    Inventory_API_v1_500-internal-server-error:
      description: >-
        Internal Server Error - Something wrong happened at server side. Contact
        server administrator for more details.
  securitySchemes:
    ShipStream_bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Generate a JWT access token through a Custom Global Integration and
        provide it with each request in the `Authorization` header prefixed with
        "Bearer" and then a single space.

````