> ## 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.

# Build a package plan

> Package Builder's "Auto-create Structure" for a fulfillment order: packs the order's lines into
pallets/cases/boxes using the products' pallet standards, carton sizes and weights, and the
tenant's saved auto-create defaults. The plan is **not saved**. Use `freight_items` as the `items` of
`POST /fulfillment-orders/{id}/freight/quotes`, and `packages` as the body of
`POST /sales-orders/{id}/shipments/{id}/packages` once the shipment exists.

`config` keys override the tenant defaults for this call only. With `generate_sscc: true` every
package gets an SSCC — each one consumes a tenant serial whether or not the plan is saved, so leave
it off unless you will save the packages.




## OpenAPI

````yaml /api-reference/build.yaml post /fulfillment-orders/{fulfillmentOrderId}/freight/package-plan
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: Freight
    description: >-
      Freightview LTL freight — quotes, booking and documents for fulfillment
      orders
  - name: Fulfillment Priority Lists
    description: Configure fulfillment routing priority lists
  - name: Purchase Orders
    description: Get and modify purchase orders
  - name: Supplier Portal
    description: >-
      Read a supplier's response to a purchase order and control the one-click
      portal link
  - 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 Warehouse
    description: >-
      Warehouse-floor lookups for PickFlow — barcode resolution, bin and product
      stock, bin search, and receivables
  - 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: Drive
    description: >
      Browse, upload, tag and manage files in your Luminous Drive. An API token
      sees the shared

      drive only, never My Files or restricted folders and files. Every write
      and download made

      through the API is recorded in the file's activity log (`GET
      /file-cabinet/files/{id}/activity`)

      with `actor_kind: api_token`.
  - name: Integration Mappings
    description: Manage integration mappings for external systems
  - name: Integration Field Mappings
    description: Manage field-level mappings between Luminous and external systems
  - name: Automations
    description: Create, test, and inspect automation rules and their runs
paths:
  /fulfillment-orders/{fulfillmentOrderId}/freight/package-plan:
    post:
      tags:
        - Fulfillment Orders
      summary: Build a package plan
      description: >
        Package Builder's "Auto-create Structure" for a fulfillment order: packs
        the order's lines into

        pallets/cases/boxes using the products' pallet standards, carton sizes
        and weights, and the

        tenant's saved auto-create defaults. The plan is **not saved**. Use
        `freight_items` as the `items` of

        `POST /fulfillment-orders/{id}/freight/quotes`, and `packages` as the
        body of

        `POST /sales-orders/{id}/shipments/{id}/packages` once the shipment
        exists.


        `config` keys override the tenant defaults for this call only. With
        `generate_sscc: true` every

        package gets an SSCC — each one consumes a tenant serial whether or not
        the plan is saved, so leave

        it off unless you will save the packages.
      operationId: planFulfillmentOrderFreightPackages
      parameters:
        - in: path
          name: fulfillmentOrderId
          required: true
          schema:
            type: integer
          description: ID of the fulfillment order
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                config:
                  type: object
                  nullable: true
                  description: >-
                    Auto-create overrides (camelCase, as saved in the tenant's
                    defaults). Unknown or mistyped keys are ignored.
                  properties:
                    maxBoxWeight:
                      type: number
                      description: Pounds. Default `50`.
                    maxItemsPerBox:
                      type: number
                      description: Default is the order's suggested max units, else `10`.
                    useBoxes:
                      type: boolean
                    useCases:
                      type: boolean
                    usePallets:
                      type: boolean
                    useSkuPalletStandards:
                      type: boolean
                      description: Use each SKU's units-per-pallet and pallet dimensions.
                    defaultPalletTareWeight:
                      type: number
                      description: Pounds. Default `75`.
                    groupBy:
                      type: string
                      enum:
                        - sku
                        - category
                        - none
                    keepSkusTogether:
                      type: boolean
                    allowMixedCategories:
                      type: boolean
                generate_sscc:
                  type: boolean
                  default: false
      responses:
        '200':
          description: Package plan built
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      fulfillment_order_id:
                        type: integer
                      config:
                        type: object
                        description: The effective configuration used.
                        additionalProperties: true
                      packages:
                        type: array
                        items:
                          type: object
                          description: >-
                            One top-level package from the package plan — the
                            shape `POST
                            /sales-orders/{id}/shipments/{id}/packages` takes,
                            so it can be saved on the booked shipment as-is.
                          properties:
                            external_package_id:
                              type: string
                              example: auto-1
                            sscc:
                              type: string
                              nullable: true
                              description: Only set when `generate_sscc` was true.
                            package_type:
                              type: string
                              enum:
                                - pallet
                                - case
                                - box
                            package_quantity:
                              type: integer
                            length_in:
                              type: number
                            width_in:
                              type: number
                            height_in:
                              type: number
                            weight_lb:
                              type: number
                              description: Gross weight including tare.
                            tare_weight_lb:
                              type: number
                              nullable: true
                            freight_class:
                              type: string
                              nullable: true
                            nmfc_number:
                              type: string
                              nullable: true
                            contained_items:
                              type: array
                              items:
                                type: object
                                properties:
                                  fulfillment_order_item_id:
                                    type: integer
                                  order_item_id:
                                    type: integer
                                    nullable: true
                                    description: >-
                                      The sales-order line, which is what the
                                      packages endpoint validates and matches
                                      on.
                                  sku:
                                    type: string
                                    nullable: true
                                  description:
                                    type: string
                                    nullable: true
                                  line_item_key:
                                    type: string
                                    nullable: true
                                  quantity:
                                    type: number
                                  lot_id:
                                    type: integer
                                    nullable: true
                                  lot_number:
                                    type: string
                                    nullable: true
                                  expiration_date:
                                    type: string
                                    nullable: true
                      freight_items:
                        type: array
                        description: >-
                          One quote item per top-level package (default freight
                          class `55`, NMFC `37860` when the product has none).
                        items:
                          type: object
                          description: >-
                            One handling unit (pallet, crate, box, drum) to be
                            quoted. The package plan's `freight_items` are in
                            this shape.
                          required:
                            - quantity
                            - weight
                            - freight_class
                            - type
                            - length
                            - width
                            - height
                          properties:
                            quantity:
                              type: integer
                              minimum: 1
                              description: Number of identical handling units.
                            weight:
                              type: number
                              minimum: 0
                              description: Weight of one handling unit, in pounds.
                            freight_class:
                              type: number
                              description: NMFC freight class (e.g. `55`, `70`, `125`).
                            type:
                              type: string
                              enum:
                                - pallet
                                - case
                                - crate
                                - box
                                - drum
                              description: >-
                                Handling-unit type. `case` is accepted and sent
                                to Freightview as `box`.
                            length:
                              type: number
                              minimum: 0
                              description: Inches.
                            width:
                              type: number
                              minimum: 0
                              description: Inches.
                            height:
                              type: number
                              minimum: 0
                              description: Inches.
                            nmfc_number:
                              type: string
                              nullable: true
                            stackable:
                              type: boolean
                              nullable: true
                            pieces:
                              type: integer
                              minimum: 1
                              nullable: true
                              description: >-
                                Pieces on one handling unit, sent to Freightview
                                as the unit's contents.
                            contents:
                              type: string
                              nullable: true
                              description: >-
                                Short contents summary (e.g. `36 x Nakan
                                Signature / Micro / Box`).
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
        '422':
          description: Fulfillment order not found, or it has no items to pack
          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.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.