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

# Products

> Get a paginated list of products with optional filtering.

For detailed information about the filtering system and available operators, 
refer to the [Filter System Documentation](/filters).

## Available Filters
### String Filters
- `name`: Product name
- `description`: Product description
- `sku`: Product SKU (searches both internal SKU and alternate SKUs)
- `upc`: Product UPC/Barcode
- `tag`: Product tags
- `q`: General search matches name OR upc OR sku
- `category.name`: Filter by category name
- `sub_category.name`: Filter by sub-category name
- `supplier.name`: Filter by supplier name
- `priority_list.name`: Filter by fulfillment priority list name

### Integer Filters
- `category.id`: Filter by category ID
- `sub_category.id`: Filter by sub-category ID
- `supplier.id`: Filter by supplier ID
- `bom.id`: Filter by Bill of Materials ID (returns products attached to the specified BOM)
- `kit_items.product_id`: Filter by kit item product ID (returns kit products that contain the specified product as a component)
- `priority_list.id`: Filter by fulfillment priority list ID

### Enum Filters
- `type`: Filter by product type (PRODUCT or KIT)

### Float Filters
- `retail_price`: Product retail price
- `wholesale_price`: Product wholesale price
- `product_weight_oz`: Product weight total in ounces
- `product_weight_lb`: Product weight total in pounds
- `product_length`: Product length (in inches)
- `product_width`: Product width (in inches)
- `product_height`: Product height (in inches)
- `box_length`: Box length (in inches)
- `box_width`: Box width (in inches)
- `box_height`: Box height (in inches)
- `carton_length`: Carton length (in inches)
- `carton_width`: Carton width (in inches)
- `carton_height`: Carton height (in inches)
- `shipping_length`: Shipping length (in inches)
- `shipping_width`: Shipping width (in inches)
- `shipping_height`: Shipping height (in inches)
- `pallet_length`: Pallet length (in inches)
- `pallet_width`: Pallet width (in inches)
- `pallet_height`: Pallet height (in inches)

### Float Filters (Weight Totals)
Weight fields are stored as JSON with multiple unit support. Filter by total weight using:
- `box_weight_oz` / `box_weight_lb`: Box weight total
- `carton_weight_oz` / `carton_weight_lb`: Carton weight total
- `shipping_weight_oz` / `shipping_weight_lb`: Shipping weight total
- `pallet_weight_oz` / `pallet_weight_lb`: Pallet weight total
- `dimensional_weight_oz` / `dimensional_weight_lb`: Dimensional weight total

### Boolean Filters
- `sellable`: If the product is sellable or not
- `discontinued`: If the product is discontinued

### DateTime Filters
- `created_at`: When the product was created
- `updated_at`: When the product was last updated

## Examples
```
# Find products by SKU (includes alternate SKUs)
?sku[eq]=SKU-001

# Find products with specific price range
?retail_price[gte]=50.00&retail_price[lte]=100.00

# Find recently updated products
?updated_at[gte]=2024-01-01 00:00:00

# Search products by name
?name[contains]=Test Product

# Find products by category and sub-category
?category.name[eq]=Electronics&sub_category.name[eq]=Smartphones

# Find products by supplier
?supplier.name[contains]=Acme

# Find products by type
?type=PRODUCT
?type=KIT

# Find kit products that contain a specific product as a component
?kit_items.product_id=123

# Find products by dimension filters
?product_length[gt]=10.0&product_width[lt]=20.0
?box_length[eq]=12.5
?carton_height[gte]=10.0
?shipping_length[lte]=18.0
?pallet_width[gt]=40.0

# Find products by weight (filter by total oz or lb)
?shipping_weight_oz[gte]=64
?shipping_weight_lb[gt]=5.0
?product_weight_oz[lt]=200
```




## OpenAPI

````yaml /api-reference/build.yaml get /products
openapi: 3.0.0
info:
  title: Luminous API
  version: 1.0.0
  description: API documentation for Luminous
servers:
  - url: https://{companyName}.api.joinluminous.com/external/api/v1
    variables:
      companyName:
        default: companyName
        description: Your company-specific subdomain
security: []
tags:
  - name: Products
    description: Get and manage products
  - name: Pricing
    description: Manage price schedules, levels, and customizations
  - name: BOMs
    description: Manage Bills of Materials (BOMs)
  - name: Labels
    description: Label rendering via Labelary ZPL service
  - name: Companies
    description: Manage business accounts and their associated data
  - name: Contacts
    description: Manage contact information for individuals
  - name: Suppliers
    description: Manage suppliers (factories) — vendors used on purchase orders
  - name: Supplier SKUs
    description: Manage per-supplier SKU and unit-cost overrides for products
  - name: Locations
    description: Manage warehouses and locations
  - name: Inventory
    description: Get and adjust product stock levels
  - name: Lots
    description: Create, update, and delete product lots (batches)
  - name: Transfer Orders
    description: Manage transfer orders
  - name: Fulfillment Orders
    description: Manage fulfillment orders and picklists
  - name: Purchase Orders
    description: Get and modify purchase orders
  - name: Receiving Reports
    description: Manage receiving reports
  - name: Payment Obligations
    description: Manage payment obligations for purchase orders
  - name: Sales Orders
    description: Manage sales orders and sales order shipments
  - name: Purgatory
    description: >-
      Inspect and resolve non-posted sales orders in the purgatory staging
      workflow
  - name: PickFlow Shipping
    description: >-
      Provider-agnostic shipping rates, services, packages, and label purchase
      for PickFlow
  - name: Cycle Counts
    description: >-
      Create, drive, and post PickFlow cycle counts — batches, per-warehouse
      sessions, and CSV import/export
  - name: Print Stations
    description: List paired print stations and enqueue print jobs to them
  - name: Invoices
    description: Get and manage invoices
  - name: Work Orders
    description: >-
      Manage work orders — production lifecycle, steps, materials, links,
      shipments, and comments
  - name: Production Batches
    description: Group and manage work orders as production batches
  - name: Bills
    description: >-
      Accounts payable bill management, payments, attachments, allocations, and
      variance
  - name: Prepayments
    description: Manage vendor prepayments and applications
  - name: Vendor Credits
    description: Manage vendor credits and applications
  - name: Vendor Returns
    description: Manage vendor returns and credit generation
  - name: Customer Returns
    description: Manage customer returns (sales returns), receiving, and restock behavior
  - name: Stock Snapshot
    description: Point-in-time stock snapshots with export support
  - name: Consumption
    description: Consumption reports and exports
  - name: Inventory Aging
    description: Cost-layer-based inventory aging reports
  - name: Bills Reports
    description: Accounts payable bills aging reports
  - name: Forecast
    description: Materialized forecast data
  - name: Reports
    description: Close the books, inventory discrepancy, transaction COGS, and EDI reports
  - name: Tags
    description: Add/remove tags across various resources
  - name: Custom Fields
    description: Get and set custom fields across various resources
  - name: Currency
    description: Currency configuration, exchange rates, and conversion
  - name: Integration Mappings
    description: Manage integration mappings for external systems
  - name: Integration Field Mappings
    description: Manage field-level mappings between Luminous and external systems
paths:
  /products:
    get:
      tags:
        - Products
      summary: Products
      description: >
        Get a paginated list of products with optional filtering.


        For detailed information about the filtering system and available
        operators, 

        refer to the [Filter System Documentation](/filters).


        ## Available Filters

        ### String Filters

        - `name`: Product name

        - `description`: Product description

        - `sku`: Product SKU (searches both internal SKU and alternate SKUs)

        - `upc`: Product UPC/Barcode

        - `tag`: Product tags

        - `q`: General search matches name OR upc OR sku

        - `category.name`: Filter by category name

        - `sub_category.name`: Filter by sub-category name

        - `supplier.name`: Filter by supplier name

        - `priority_list.name`: Filter by fulfillment priority list name


        ### Integer Filters

        - `category.id`: Filter by category ID

        - `sub_category.id`: Filter by sub-category ID

        - `supplier.id`: Filter by supplier ID

        - `bom.id`: Filter by Bill of Materials ID (returns products attached to
        the specified BOM)

        - `kit_items.product_id`: Filter by kit item product ID (returns kit
        products that contain the specified product as a component)

        - `priority_list.id`: Filter by fulfillment priority list ID


        ### Enum Filters

        - `type`: Filter by product type (PRODUCT or KIT)


        ### Float Filters

        - `retail_price`: Product retail price

        - `wholesale_price`: Product wholesale price

        - `product_weight_oz`: Product weight total in ounces

        - `product_weight_lb`: Product weight total in pounds

        - `product_length`: Product length (in inches)

        - `product_width`: Product width (in inches)

        - `product_height`: Product height (in inches)

        - `box_length`: Box length (in inches)

        - `box_width`: Box width (in inches)

        - `box_height`: Box height (in inches)

        - `carton_length`: Carton length (in inches)

        - `carton_width`: Carton width (in inches)

        - `carton_height`: Carton height (in inches)

        - `shipping_length`: Shipping length (in inches)

        - `shipping_width`: Shipping width (in inches)

        - `shipping_height`: Shipping height (in inches)

        - `pallet_length`: Pallet length (in inches)

        - `pallet_width`: Pallet width (in inches)

        - `pallet_height`: Pallet height (in inches)


        ### Float Filters (Weight Totals)

        Weight fields are stored as JSON with multiple unit support. Filter by
        total weight using:

        - `box_weight_oz` / `box_weight_lb`: Box weight total

        - `carton_weight_oz` / `carton_weight_lb`: Carton weight total

        - `shipping_weight_oz` / `shipping_weight_lb`: Shipping weight total

        - `pallet_weight_oz` / `pallet_weight_lb`: Pallet weight total

        - `dimensional_weight_oz` / `dimensional_weight_lb`: Dimensional weight
        total


        ### Boolean Filters

        - `sellable`: If the product is sellable or not

        - `discontinued`: If the product is discontinued


        ### DateTime Filters

        - `created_at`: When the product was created

        - `updated_at`: When the product was last updated


        ## Examples

        ```

        # Find products by SKU (includes alternate SKUs)

        ?sku[eq]=SKU-001


        # Find products with specific price range

        ?retail_price[gte]=50.00&retail_price[lte]=100.00


        # Find recently updated products

        ?updated_at[gte]=2024-01-01 00:00:00


        # Search products by name

        ?name[contains]=Test Product


        # Find products by category and sub-category

        ?category.name[eq]=Electronics&sub_category.name[eq]=Smartphones


        # Find products by supplier

        ?supplier.name[contains]=Acme


        # Find products by type

        ?type=PRODUCT

        ?type=KIT


        # Find kit products that contain a specific product as a component

        ?kit_items.product_id=123


        # Find products by dimension filters

        ?product_length[gt]=10.0&product_width[lt]=20.0

        ?box_length[eq]=12.5

        ?carton_height[gte]=10.0

        ?shipping_length[lte]=18.0

        ?pallet_width[gt]=40.0


        # Find products by weight (filter by total oz or lb)

        ?shipping_weight_oz[gte]=64

        ?shipping_weight_lb[gt]=5.0

        ?product_weight_oz[lt]=200

        ```
      operationId: getProducts
      parameters:
        - in: query
          name: page
          schema:
            type: integer
            default: 1
          description: Page number for pagination
        - in: query
          name: per_page
          schema:
            type: integer
            default: 10
            maximum: 100
          description: Number of items per page (max 100)
        - in: query
          name: q
          schema:
            type: string
          description: Filter by name OR upc OR sku
        - in: query
          name: name
          schema:
            type: string
          description: Filter by product name
        - in: query
          name: description
          schema:
            type: string
          description: Filter by product description
        - in: query
          name: sku
          schema:
            type: string
          description: Filter by SKU (searches both internal and alternate SKUs)
        - in: query
          name: upc
          schema:
            type: string
          description: Filter by UPC/Barcode
        - in: query
          name: sellable
          schema:
            type: boolean
          description: Filter by sellable status
        - in: query
          name: discontinued
          schema:
            type: boolean
          description: Filter by whether the product is discontinued
        - in: query
          name: retail_price
          schema:
            type: number
            format: float
          description: Filter by retail price
        - in: query
          name: wholesale_price
          schema:
            type: number
            format: float
          description: Filter by wholesale price
        - in: query
          name: created_at
          schema:
            type: string
            format: date-time
          description: Filter by creation date
        - in: query
          name: updated_at
          schema:
            type: string
            format: date-time
          description: Filter by last update date
        - in: query
          name: tag
          schema:
            type: string
          description: Filter by product tags
        - in: query
          name: category.id
          schema:
            type: integer
          description: Filter by category ID
        - in: query
          name: category.name
          schema:
            type: string
          description: Filter by category name
        - in: query
          name: sub_category.id
          schema:
            type: integer
          description: Filter by sub-category ID
        - in: query
          name: sub_category.name
          schema:
            type: string
          description: Filter by sub-category name
        - in: query
          name: supplier.id
          schema:
            type: integer
          description: Filter by supplier ID
        - in: query
          name: supplier.name
          schema:
            type: string
          description: Filter by supplier name
        - in: query
          name: bom.id
          schema:
            type: integer
          description: >-
            Filter by Bill of Materials ID (returns products attached to the
            specified BOM)
        - in: query
          name: kit_items.product_id
          schema:
            type: integer
          description: >-
            Filter by kit item product ID (returns kit products that contain the
            specified product as a component)
        - in: query
          name: priority_list.id
          schema:
            type: integer
          description: Filter by fulfillment priority list ID
        - in: query
          name: priority_list.name
          schema:
            type: string
          description: Filter by fulfillment priority list name
        - in: query
          name: type
          schema:
            type: string
            enum:
              - PRODUCT
              - KIT
          description: >-
            Filter by product type (PRODUCT for regular products, KIT for kit
            products)
        - in: query
          name: product_weight_oz
          schema:
            type: number
            format: float
          description: Filter by product weight total in ounces
        - in: query
          name: product_weight_lb
          schema:
            type: number
            format: float
          description: Filter by product weight total in pounds
        - in: query
          name: product_length
          schema:
            type: number
            format: float
          description: Filter by product length (in inches)
        - in: query
          name: product_width
          schema:
            type: number
            format: float
          description: Filter by product width (in inches)
        - in: query
          name: product_height
          schema:
            type: number
            format: float
          description: Filter by product height (in inches)
        - in: query
          name: box_weight_oz
          schema:
            type: number
            format: float
          description: Filter by box weight total in ounces
        - in: query
          name: box_weight_lb
          schema:
            type: number
            format: float
          description: Filter by box weight total in pounds
        - in: query
          name: box_length
          schema:
            type: number
            format: float
          description: Filter by box length (in inches)
        - in: query
          name: box_width
          schema:
            type: number
            format: float
          description: Filter by box width (in inches)
        - in: query
          name: box_height
          schema:
            type: number
            format: float
          description: Filter by box height (in inches)
        - in: query
          name: carton_weight_oz
          schema:
            type: number
            format: float
          description: Filter by carton weight total in ounces
        - in: query
          name: carton_weight_lb
          schema:
            type: number
            format: float
          description: Filter by carton weight total in pounds
        - in: query
          name: carton_length
          schema:
            type: number
            format: float
          description: Filter by carton length (in inches)
        - in: query
          name: carton_width
          schema:
            type: number
            format: float
          description: Filter by carton width (in inches)
        - in: query
          name: carton_height
          schema:
            type: number
            format: float
          description: Filter by carton height (in inches)
        - in: query
          name: shipping_weight_oz
          schema:
            type: number
            format: float
          description: Filter by shipping weight total in ounces
        - in: query
          name: shipping_weight_lb
          schema:
            type: number
            format: float
          description: Filter by shipping weight total in pounds
        - in: query
          name: shipping_length
          schema:
            type: number
            format: float
          description: Filter by shipping length (in inches)
        - in: query
          name: shipping_width
          schema:
            type: number
            format: float
          description: Filter by shipping width (in inches)
        - in: query
          name: shipping_height
          schema:
            type: number
            format: float
          description: Filter by shipping height (in inches)
        - in: query
          name: pallet_weight_oz
          schema:
            type: number
            format: float
          description: Filter by pallet weight total in ounces
        - in: query
          name: pallet_weight_lb
          schema:
            type: number
            format: float
          description: Filter by pallet weight total in pounds
        - in: query
          name: dimensional_weight_oz
          schema:
            type: number
            format: float
          description: Filter by dimensional weight total in ounces
        - in: query
          name: dimensional_weight_lb
          schema:
            type: number
            format: float
          description: Filter by dimensional weight total in pounds
        - in: query
          name: pallet_length
          schema:
            type: number
            format: float
          description: Filter by pallet length (in inches)
        - in: query
          name: pallet_width
          schema:
            type: number
            format: float
          description: Filter by pallet width (in inches)
        - in: query
          name: pallet_height
          schema:
            type: number
            format: float
          description: Filter by pallet height (in inches)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: Unique identifier for the product
                        name:
                          type: string
                          description: Product name
                        description:
                          type: string
                          nullable: true
                          description: Product description
                        retail_price:
                          type: number
                          format: float
                          description: Retail price
                        wholesale_price:
                          type: number
                          format: float
                          description: Wholesale price
                        unit_cost:
                          type: number
                          format: float
                          description: Cost per unit
                        landed_cost:
                          type: number
                          format: float
                          nullable: true
                          description: Landed cost per unit
                        manufacturing_fee:
                          type: number
                          format: float
                          nullable: true
                          description: Manufacturing fee per unit
                        product_weight:
                          type: array
                          nullable: true
                          items:
                            type: object
                            required:
                              - unit
                              - value
                            properties:
                              unit:
                                type: string
                                enum:
                                  - lb
                                  - oz
                                description: Weight unit
                              value:
                                type: number
                                format: float
                                minimum: 0
                                description: Weight value
                        product_weight_oz:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total product weight in ounces (computed from
                            product_weight)
                        product_weight_lb:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total product weight in pounds (computed from
                            product_weight)
                        dimensional_weight:
                          type: array
                          nullable: true
                          items:
                            type: object
                            required:
                              - unit
                              - value
                            properties:
                              unit:
                                type: string
                                enum:
                                  - lb
                                  - oz
                                description: Weight unit
                              value:
                                type: number
                                format: float
                                minimum: 0
                                description: Weight value
                        dimensional_weight_oz:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total dimensional weight in ounces (computed from
                            dimensional_weight)
                        dimensional_weight_lb:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total dimensional weight in pounds (computed from
                            dimensional_weight)
                        product_length:
                          type: number
                          format: float
                          description: Length of the product (in inches)
                        product_width:
                          type: number
                          format: float
                          description: Width of the product (in inches)
                        product_height:
                          type: number
                          format: float
                          description: Height of the product (in inches)
                        box_weight:
                          type: array
                          nullable: true
                          items:
                            type: object
                            required:
                              - unit
                              - value
                            properties:
                              unit:
                                type: string
                                enum:
                                  - lb
                                  - oz
                                description: Weight unit
                              value:
                                type: number
                                format: float
                                minimum: 0
                                description: Weight value
                        box_weight_oz:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total box weight in ounces (computed from
                            box_weight)
                        box_weight_lb:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total box weight in pounds (computed from
                            box_weight)
                        box_length:
                          type: number
                          format: float
                          nullable: true
                          description: Length of the box (in inches)
                        box_width:
                          type: number
                          format: float
                          nullable: true
                          description: Width of the box (in inches)
                        box_height:
                          type: number
                          format: float
                          nullable: true
                          description: Height of the box (in inches)
                        carton_weight:
                          type: array
                          nullable: true
                          items:
                            type: object
                            required:
                              - unit
                              - value
                            properties:
                              unit:
                                type: string
                                enum:
                                  - lb
                                  - oz
                                description: Weight unit
                              value:
                                type: number
                                format: float
                                minimum: 0
                                description: Weight value
                        carton_weight_oz:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total carton weight in ounces (computed from
                            carton_weight)
                        carton_weight_lb:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total carton weight in pounds (computed from
                            carton_weight)
                        carton_length:
                          type: number
                          format: float
                          nullable: true
                          description: Length of the carton (in inches)
                        carton_width:
                          type: number
                          format: float
                          nullable: true
                          description: Width of the carton (in inches)
                        carton_height:
                          type: number
                          format: float
                          nullable: true
                          description: Height of the carton (in inches)
                        shipping_weight:
                          type: array
                          nullable: true
                          items:
                            type: object
                            required:
                              - unit
                              - value
                            properties:
                              unit:
                                type: string
                                enum:
                                  - lb
                                  - oz
                                description: Weight unit
                              value:
                                type: number
                                format: float
                                minimum: 0
                                description: Weight value
                        shipping_weight_oz:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total shipping weight in ounces (computed from
                            shipping_weight)
                        shipping_weight_lb:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total shipping weight in pounds (computed from
                            shipping_weight)
                        shipping_length:
                          type: number
                          format: float
                          nullable: true
                          description: Shipping length (in inches)
                        shipping_width:
                          type: number
                          format: float
                          nullable: true
                          description: Shipping width (in inches)
                        shipping_height:
                          type: number
                          format: float
                          nullable: true
                          description: Shipping height (in inches)
                        pallet_weight:
                          type: array
                          nullable: true
                          items:
                            type: object
                            required:
                              - unit
                              - value
                            properties:
                              unit:
                                type: string
                                enum:
                                  - lb
                                  - oz
                                description: Weight unit
                              value:
                                type: number
                                format: float
                                minimum: 0
                                description: Weight value
                        pallet_weight_oz:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total pallet weight in ounces (computed from
                            pallet_weight)
                        pallet_weight_lb:
                          type: number
                          format: float
                          nullable: true
                          description: >-
                            Total pallet weight in pounds (computed from
                            pallet_weight)
                        pallet_length:
                          type: number
                          format: float
                          nullable: true
                          description: Length of the pallet (in inches)
                        pallet_width:
                          type: number
                          format: float
                          nullable: true
                          description: Width of the pallet (in inches)
                        pallet_height:
                          type: number
                          format: float
                          nullable: true
                          description: Height of the pallet (in inches)
                        sellable:
                          type: boolean
                          description: Whether the product can be sold
                        discontinued:
                          type: boolean
                          description: >-
                            Whether the product is discontinued. Discontinued
                            products will be hidden in the Luminous UI by
                            default.
                        lot_tracking:
                          type: boolean
                          description: >-
                            Whether lot (batch) tracking is enabled for this
                            product. When true, on-hand stock is tracked per lot
                            and lot-aware endpoints (e.g. `/lots`, the
                            `lot_stocks` breakdown on inventory stock, and lot
                            fields on adjustments/receiving) apply.
                        default_supply_method:
                          type: string
                          nullable: true
                          enum:
                            - purchase
                            - vendor_supplied
                            - assemble
                            - on_hand
                            - assembly_order
                            - buy_and_ship
                            - brand_supplied
                          description: >-
                            Default supply mode used when planning replenishment
                            for this product
                        image_url:
                          type: string
                          nullable: true
                          description: URL to the product's main image
                        category:
                          type: object
                          nullable: true
                          properties:
                            id:
                              type: integer
                            name:
                              type: string
                          description: Product category information
                        subcategory:
                          type: object
                          nullable: true
                          properties:
                            id:
                              type: integer
                            name:
                              type: string
                          description: Product subcategory information
                        custom_fields:
                          type: object
                          description: Dynamic custom fields with key-value pairs
                          additionalProperties:
                            type: string
                        attachments:
                          type: array
                          description: Product attachments
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: Unique identifier for the attachment
                              name:
                                type: string
                                description: Filename of the attachment
                              type:
                                type: string
                                description: MIME type of the attachment
                              size:
                                type: integer
                                description: File size in bytes
                              full_url:
                                type: string
                                description: Full resolution URL of the attachment
                              thumb_url:
                                type: string
                                description: >-
                                  Thumbnail URL of the attachment (if
                                  applicable)
                            required:
                              - id
                              - name
                              - type
                              - size
                              - full_url
                        variants:
                          type: array
                          description: Product variants
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                              name:
                                type: string
                              description:
                                type: string
                                nullable: true
                              product_weight:
                                type: array
                                nullable: true
                                items:
                                  type: object
                                  required:
                                    - unit
                                    - value
                                  properties:
                                    unit:
                                      type: string
                                      enum:
                                        - lb
                                        - oz
                                      description: Weight unit
                                    value:
                                      type: number
                                      format: float
                                      minimum: 0
                                      description: Weight value
                              product_weight_oz:
                                type: number
                                format: float
                                nullable: true
                              product_weight_lb:
                                type: number
                                format: float
                                nullable: true
                              dimensional_weight:
                                type: array
                                nullable: true
                                items:
                                  type: object
                                  required:
                                    - unit
                                    - value
                                  properties:
                                    unit:
                                      type: string
                                      enum:
                                        - lb
                                        - oz
                                      description: Weight unit
                                    value:
                                      type: number
                                      format: float
                                      minimum: 0
                                      description: Weight value
                              dimensional_weight_oz:
                                type: number
                                format: float
                                nullable: true
                              dimensional_weight_lb:
                                type: number
                                format: float
                                nullable: true
                              box_weight:
                                type: array
                                nullable: true
                                items:
                                  type: object
                                  required:
                                    - unit
                                    - value
                                  properties:
                                    unit:
                                      type: string
                                      enum:
                                        - lb
                                        - oz
                                      description: Weight unit
                                    value:
                                      type: number
                                      format: float
                                      minimum: 0
                                      description: Weight value
                              box_weight_oz:
                                type: number
                                format: float
                                nullable: true
                              box_weight_lb:
                                type: number
                                format: float
                                nullable: true
                              carton_weight:
                                type: array
                                nullable: true
                                items:
                                  type: object
                                  required:
                                    - unit
                                    - value
                                  properties:
                                    unit:
                                      type: string
                                      enum:
                                        - lb
                                        - oz
                                      description: Weight unit
                                    value:
                                      type: number
                                      format: float
                                      minimum: 0
                                      description: Weight value
                              carton_weight_oz:
                                type: number
                                format: float
                                nullable: true
                              carton_weight_lb:
                                type: number
                                format: float
                                nullable: true
                              shipping_weight:
                                type: array
                                nullable: true
                                items:
                                  type: object
                                  required:
                                    - unit
                                    - value
                                  properties:
                                    unit:
                                      type: string
                                      enum:
                                        - lb
                                        - oz
                                      description: Weight unit
                                    value:
                                      type: number
                                      format: float
                                      minimum: 0
                                      description: Weight value
                              shipping_weight_oz:
                                type: number
                                format: float
                                nullable: true
                              shipping_weight_lb:
                                type: number
                                format: float
                                nullable: true
                              pallet_weight:
                                type: array
                                nullable: true
                                items:
                                  type: object
                                  required:
                                    - unit
                                    - value
                                  properties:
                                    unit:
                                      type: string
                                      enum:
                                        - lb
                                        - oz
                                      description: Weight unit
                                    value:
                                      type: number
                                      format: float
                                      minimum: 0
                                      description: Weight value
                              pallet_weight_oz:
                                type: number
                                format: float
                                nullable: true
                              pallet_weight_lb:
                                type: number
                                format: float
                                nullable: true
                              attachments:
                                type: array
                                description: Variant-specific attachments
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: Unique identifier for the attachment
                                    name:
                                      type: string
                                      description: Filename of the attachment
                                    type:
                                      type: string
                                      description: MIME type of the attachment
                                    size:
                                      type: integer
                                      description: File size in bytes
                                    full_url:
                                      type: string
                                      description: Full resolution URL of the attachment
                                    thumb_url:
                                      type: string
                                      description: >-
                                        Thumbnail URL of the attachment (if
                                        applicable)
                                  required:
                                    - id
                                    - name
                                    - type
                                    - size
                                    - full_url
                              retail_price:
                                type: number
                                format: float
                              wholesale_price:
                                type: number
                                format: float
                              custom_fields:
                                type: array
                                items:
                                  type: object
                              variant_attributes:
                                type: array
                                nullable: true
                                description: >
                                  The variant option terms this child SKU is
                                  assigned to (e.g. Size=Large, Color=Red).

                                  Returned in the same `[{variant_name,
                                  variant_terms[]}]` shape as the parent
                                  product's

                                  `variant_attributes` taxonomy, with each entry
                                  holding the term(s) selected for this child

                                  on that axis.
                                items:
                                  type: object
                                  properties:
                                    variant_name:
                                      type: string
                                      description: Name of the variant axis (e.g. "Size")
                                    variant_terms:
                                      type: array
                                      description: >-
                                        Term value(s) selected for this child on
                                        that axis
                                      items:
                                        type: string
                              sku:
                                type: string
                              upc:
                                type: string
                              created_at:
                                type: string
                                format: date-time
                              updated_at:
                                type: string
                                format: date-time
                        variant_attributes:
                          type: array
                          nullable: true
                          description: >
                            Variant option taxonomy for this product — the axes
                            (e.g. Size, Color) and the allowed terms on

                            each axis. On a parent product, this is the union of
                            all terms used by its child variants. On a

                            child variant, this holds the specific term(s) the
                            child is assigned to.


                            Set via the request field `product_variants` (same
                            shape) on create/update.
                          items:
                            type: object
                            properties:
                              variant_name:
                                type: string
                                description: >-
                                  Name of the variant axis (e.g. "Size",
                                  "Color")
                              variant_terms:
                                type: array
                                description: Terms on this axis
                                items:
                                  type: string
                        sku:
                          type: string
                          description: Internal SKU
                        alternate_skus:
                          type: array
                          description: Alternate SKUs
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                              sku:
                                type: string
                        upc:
                          type: string
                          description: UPC/Barcode
                        tags:
                          type: array
                          description: Tags associated with the product
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: Unique identifier for the tag
                              name:
                                type: string
                                description: Name of the tag
                              description:
                                type: string
                                nullable: true
                                description: Description of the tag
                              icon:
                                type: string
                                nullable: true
                                description: Icon identifier or URL for the tag
                              color:
                                type: string
                                nullable: true
                                description: Color code for the tag
                            required:
                              - id
                              - name
                        substitutions:
                          type: array
                          description: >-
                            Product substitutions, these products may be
                            substituted if the main product is out of stock
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: Substitution record ID
                              priority:
                                type: integer
                                description: >-
                                  Substitution priority (lower number = higher
                                  priority)
                              product:
                                type: object
                                description: The substitute product
                                properties:
                                  id:
                                    type: integer
                                    description: Unique identifier for the product
                                  name:
                                    type: string
                                    description: Product name
                                  description:
                                    type: string
                                    nullable: true
                                    description: Product description
                                  retail_price:
                                    type: number
                                    format: float
                                    description: Retail price
                                  wholesale_price:
                                    type: number
                                    format: float
                                    description: Wholesale price
                                  unit_cost:
                                    type: number
                                    format: float
                                    description: Cost per unit
                                  product_weight:
                                    type: array
                                    nullable: true
                                    items:
                                      type: object
                                      required:
                                        - unit
                                        - value
                                      properties:
                                        unit:
                                          type: string
                                          enum:
                                            - lb
                                            - oz
                                          description: Weight unit
                                        value:
                                          type: number
                                          format: float
                                          minimum: 0
                                          description: Weight value
                                  product_weight_oz:
                                    type: number
                                    format: float
                                    nullable: true
                                  product_weight_lb:
                                    type: number
                                    format: float
                                    nullable: true
                                  dimensional_weight:
                                    type: array
                                    nullable: true
                                    items:
                                      type: object
                                      required:
                                        - unit
                                        - value
                                      properties:
                                        unit:
                                          type: string
                                          enum:
                                            - lb
                                            - oz
                                          description: Weight unit
                                        value:
                                          type: number
                                          format: float
                                          minimum: 0
                                          description: Weight value
                                  dimensional_weight_oz:
                                    type: number
                                    format: float
                                    nullable: true
                                  dimensional_weight_lb:
                                    type: number
                                    format: float
                                    nullable: true
                                  product_length:
                                    type: number
                                    format: float
                                    description: Length of the product (in inches)
                                  product_width:
                                    type: number
                                    format: float
                                    description: Width of the product (in inches)
                                  product_height:
                                    type: number
                                    format: float
                                    description: Height of the product (in inches)
                                  box_weight:
                                    type: array
                                    nullable: true
                                    items:
                                      type: object
                                      required:
                                        - unit
                                        - value
                                      properties:
                                        unit:
                                          type: string
                                          enum:
                                            - lb
                                            - oz
                                          description: Weight unit
                                        value:
                                          type: number
                                          format: float
                                          minimum: 0
                                          description: Weight value
                                  box_weight_oz:
                                    type: number
                                    format: float
                                    nullable: true
                                  box_weight_lb:
                                    type: number
                                    format: float
                                    nullable: true
                                  box_length:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Length of the box (in inches)
                                  box_width:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Width of the box (in inches)
                                  box_height:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Height of the box (in inches)
                                  carton_weight:
                                    type: array
                                    nullable: true
                                    items:
                                      type: object
                                      required:
                                        - unit
                                        - value
                                      properties:
                                        unit:
                                          type: string
                                          enum:
                                            - lb
                                            - oz
                                          description: Weight unit
                                        value:
                                          type: number
                                          format: float
                                          minimum: 0
                                          description: Weight value
                                  carton_weight_oz:
                                    type: number
                                    format: float
                                    nullable: true
                                  carton_weight_lb:
                                    type: number
                                    format: float
                                    nullable: true
                                  carton_length:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Length of the carton (in inches)
                                  carton_width:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Width of the carton (in inches)
                                  carton_height:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Height of the carton (in inches)
                                  shipping_weight:
                                    type: array
                                    nullable: true
                                    items:
                                      type: object
                                      required:
                                        - unit
                                        - value
                                      properties:
                                        unit:
                                          type: string
                                          enum:
                                            - lb
                                            - oz
                                          description: Weight unit
                                        value:
                                          type: number
                                          format: float
                                          minimum: 0
                                          description: Weight value
                                  shipping_weight_oz:
                                    type: number
                                    format: float
                                    nullable: true
                                  shipping_weight_lb:
                                    type: number
                                    format: float
                                    nullable: true
                                  shipping_length:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Shipping length (in inches)
                                  shipping_width:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Shipping width (in inches)
                                  shipping_height:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Shipping height (in inches)
                                  pallet_weight:
                                    type: array
                                    nullable: true
                                    items:
                                      type: object
                                      required:
                                        - unit
                                        - value
                                      properties:
                                        unit:
                                          type: string
                                          enum:
                                            - lb
                                            - oz
                                          description: Weight unit
                                        value:
                                          type: number
                                          format: float
                                          minimum: 0
                                          description: Weight value
                                  pallet_weight_oz:
                                    type: number
                                    format: float
                                    nullable: true
                                  pallet_weight_lb:
                                    type: number
                                    format: float
                                    nullable: true
                                  pallet_length:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Length of the pallet (in inches)
                                  pallet_width:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Width of the pallet (in inches)
                                  pallet_height:
                                    type: number
                                    format: float
                                    nullable: true
                                    description: Height of the pallet (in inches)
                                  sellable:
                                    type: boolean
                                    description: Whether the product can be sold
                                  discontinued:
                                    type: boolean
                                    description: Whether the product is discontinued
                                  image_url:
                                    type: string
                                    nullable: true
                                    description: URL to the product's main image
                                  sku:
                                    type: string
                                    description: Internal SKU
                                  upc:
                                    type: string
                                    description: UPC/Barcode
                                  created_at:
                                    type: string
                                    format: date-time
                                    description: Timestamp when the product was created
                                  updated_at:
                                    type: string
                                    format: date-time
                                    description: >-
                                      Timestamp when the product was last
                                      updated
                        supplier:
                          type: object
                          nullable: true
                          description: Supplier information
                        type:
                          type: string
                          enum:
                            - PRODUCT
                            - KIT
                          description: >-
                            Product type. PRODUCT for regular products, KIT for
                            kit products that contain other products as
                            components.
                        kit_items:
                          type: array
                          nullable: true
                          description: >-
                            Kit items (components) for kit products. Only
                            present when type = KIT.
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: Unique identifier for the kit item
                              product_id:
                                type: integer
                                description: ID of the product component
                              quantity:
                                type: number
                                format: float
                                description: Quantity of this component in the kit
                              uom_id:
                                type: integer
                                description: Unit of measure ID for the quantity
                              base_uom_quantity:
                                type: number
                                format: float
                                description: Quantity converted to base unit of measure
                              price:
                                type: number
                                format: float
                                description: Price for this kit item
                              original_price:
                                type: number
                                format: float
                                description: Original price for this kit item
                              total:
                                type: number
                                format: float
                                description: Calculated total (quantity * price)
                              product:
                                type: object
                                nullable: true
                                description: >-
                                  Product information for this kit item (when
                                  loaded)
                                properties:
                                  id:
                                    type: integer
                                  name:
                                    type: string
                                  sku:
                                    type: string
                                  description:
                                    type: string
                                    nullable: true
                                  retail_price:
                                    type: number
                                    format: float
                                  wholesale_price:
                                    type: number
                                    format: float
                              unit_of_measure:
                                type: object
                                nullable: true
                                description: Unit of measure information (when loaded)
                                properties:
                                  id:
                                    type: integer
                                  name:
                                    type: string
                                  description:
                                    type: string
                                    nullable: true
                                  base_unit:
                                    type: boolean
                        priority_list:
                          type: object
                          nullable: true
                          description: Fulfillment priority list assigned to this product
                          properties:
                            id:
                              type: integer
                              description: Priority list ID
                            name:
                              type: string
                              description: Priority list name
                            description:
                              type: string
                              nullable: true
                              description: Priority list description
                        boms:
                          type: array
                          description: >-
                            BOMs (Bills of Materials) associated with this
                            product
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: Unique identifier for the BOM
                              name:
                                type: string
                                description: BOM name
                              items:
                                type: array
                                description: BOM items (components/products)
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: Unique identifier for the BOM item
                                    bom_id:
                                      type: integer
                                      description: ID of the BOM this item belongs to
                                    product_id:
                                      type: integer
                                      description: ID of the product/component
                                    product:
                                      type: object
                                      nullable: true
                                      description: Product information (when loaded)
                                      properties:
                                        id:
                                          type: integer
                                        name:
                                          type: string
                                        sku:
                                          type: string
                                        description:
                                          type: string
                                          nullable: true
                                    quantity:
                                      type: number
                                      format: float
                                      description: Quantity required for this item
                                    base_quantity:
                                      type: number
                                      format: float
                                      description: >-
                                        Base quantity (converted to base unit of
                                        measure)
                                    note:
                                      type: string
                                      nullable: true
                                      description: Optional note for this item
                                    uom_id:
                                      type: integer
                                      nullable: true
                                      description: Unit of measure ID
                                    unit_of_measure:
                                      type: object
                                      nullable: true
                                      description: >-
                                        Unit of measure information (when
                                        loaded)
                                      properties:
                                        id:
                                          type: integer
                                        name:
                                          type: string
                                    order:
                                      type: integer
                                      nullable: true
                                      description: Display order for this item
                                    consumption_basis:
                                      type: string
                                      enum:
                                        - planned
                                        - actual
                                      description: >-
                                        Determines how much of this component an
                                        assembly/work order consumes. `planned`
                                        consumes the BOM-defined quantity;
                                        `actual` consumes the quantity actually
                                        reported during production. Defaults to
                                        `planned`.
                                    created_at:
                                      type: string
                                      format: date-time
                                      description: Timestamp when the item was created
                                    updated_at:
                                      type: string
                                      format: date-time
                                      description: Timestamp when the item was last updated
                                  required:
                                    - id
                                    - bom_id
                                    - product_id
                                    - quantity
                              extra_costs:
                                type: array
                                description: Additional costs associated with the BOM
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: Unique identifier for the extra cost
                                    name:
                                      type: string
                                      description: Name/description of the extra cost
                                    quantity:
                                      type: number
                                      format: float
                                      description: Quantity for this cost item
                                    unit_price:
                                      type: number
                                      format: float
                                      description: Unit price for this cost item
                                    line_total:
                                      type: number
                                      format: float
                                      description: >-
                                        Total cost (quantity × unit_price),
                                        calculated automatically on the backend.
                                        This field is read-only and should not
                                        be provided when creating or updating
                                        extra costs.
                                    created_at:
                                      type: string
                                      format: date-time
                                      description: >-
                                        Timestamp when the extra cost was
                                        created
                                    updated_at:
                                      type: string
                                      format: date-time
                                      description: >-
                                        Timestamp when the extra cost was last
                                        updated
                                  required:
                                    - id
                                    - name
                                    - quantity
                                    - unit_price
                                    - line_total
                              created_at:
                                type: string
                                format: date-time
                                description: Timestamp when the BOM was created
                              updated_at:
                                type: string
                                format: date-time
                                description: Timestamp when the BOM was last updated
                            required:
                              - id
                              - name
                        created_at:
                          type: string
                          format: date-time
                          description: Timestamp when the product was created
                        updated_at:
                          type: string
                          format: date-time
                          description: Timestamp when the product was last updated
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        description: The current page number
                        example: 1
                      from:
                        type: integer
                        description: The starting index of the paginated results
                        example: 1
                      last_page:
                        type: integer
                        description: The last page number
                        example: 5
                      per_page:
                        type: integer
                        description: Number of items per page
                        example: 10
                      to:
                        type: integer
                        description: The ending index of the paginated results
                        example: 10
                      total:
                        type: integer
                        description: Total number of items across all pages
                        example: 50
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Authenticate using a bearer token. To create a token, navigate to
        /settings/api-tokens and click Create API Token.

````