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

# Replace purchase order shipment cartons

> Replace every carton on the shipment with the given list. Send an empty `packages` array to remove the saved
cartons, so the shipment goes back to the suggested structure. Saved cartons are sent to the warehouse when the
shipment is pushed as an inbound shipment (for mappings that use cartons).

Returns the shipment's cartons after the save, in the same shape as the GET.




## OpenAPI

````yaml /api-reference/build.yaml put /purchase-order-shipments/{id}/packages
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:
  /purchase-order-shipments/{id}/packages:
    put:
      tags:
        - Purchase Order Shipments
      summary: Replace purchase order shipment cartons
      description: >
        Replace every carton on the shipment with the given list. Send an empty
        `packages` array to remove the saved

        cartons, so the shipment goes back to the suggested structure. Saved
        cartons are sent to the warehouse when the

        shipment is pushed as an inbound shipment (for mappings that use
        cartons).


        Returns the shipment's cartons after the save, in the same shape as the
        GET.
      operationId: replacePurchaseOrderShipmentPackages
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: integer
          description: Purchase order shipment ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - packages
              properties:
                packages:
                  type: array
                  description: The full carton list. May be empty.
                  items:
                    type: object
                    required:
                      - number_of_identical_packages
                      - items
                    properties:
                      number_of_identical_packages:
                        type: integer
                        minimum: 1
                      length:
                        type: number
                        minimum: 0
                        nullable: true
                      width:
                        type: number
                        minimum: 0
                        nullable: true
                      height:
                        type: number
                        minimum: 0
                        nullable: true
                      dimension_unit:
                        type: string
                        enum:
                          - in
                          - cm
                        nullable: true
                        default: in
                      weight:
                        type: number
                        minimum: 0
                        nullable: true
                        description: Weight of one carton.
                      weight_unit:
                        type: string
                        enum:
                          - lb
                          - oz
                          - kg
                          - g
                        nullable: true
                        default: lb
                      package_type:
                        type: string
                        enum:
                          - carton
                          - pallet
                        nullable: true
                        default: carton
                      carton_template_id:
                        type: integer
                        nullable: true
                      sscc:
                        type: string
                        maxLength: 20
                        nullable: true
                      tracking_number:
                        type: string
                        nullable: true
                        maxLength: 255
                      items:
                        type: array
                        minItems: 1
                        description: >-
                          Units of each shipment line in one carton of this
                          configuration.
                        items:
                          type: object
                          required:
                            - supplier_purchase_order_shipment_item_id
                            - quantity_per_package
                          properties:
                            supplier_purchase_order_shipment_item_id:
                              type: integer
                              description: >-
                                A current line of this shipment
                                (`shipment_items[].id`). Any other ID returns
                                `422`.
                            quantity_per_package:
                              type: number
                              exclusiveMinimum: true
                              minimum: 0
      responses:
        '200':
          description: Cartons replaced
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    description: >
                      Carton structure of a purchase order shipment. Each entry
                      in `packages` is one carton configuration:

                      `number_of_identical_packages` identical cartons, each
                      holding the listed line quantities.
                    properties:
                      is_saved:
                        type: boolean
                        description: >-
                          True when these are the shipment's saved cartons;
                          false when they are a suggestion (nothing saved).
                      packages:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              nullable: true
                              description: >-
                                Carton configuration ID. Null on suggested
                                (unsaved) cartons.
                            number_of_identical_packages:
                              type: integer
                            length:
                              type: number
                              nullable: true
                            width:
                              type: number
                              nullable: true
                            height:
                              type: number
                              nullable: true
                            dimension_unit:
                              type: string
                              enum:
                                - in
                                - cm
                            weight:
                              type: number
                              nullable: true
                              description: Weight of one carton.
                            weight_unit:
                              type: string
                              enum:
                                - lb
                                - oz
                                - kg
                                - g
                            package_type:
                              type: string
                              enum:
                                - carton
                                - pallet
                            carton_template_id:
                              type: integer
                              nullable: true
                            sscc:
                              type: string
                              nullable: true
                            tracking_number:
                              type: string
                              nullable: true
                            source:
                              type: string
                              enum:
                                - auto
                                - manual
                              description: >-
                                `auto` when built from line/SKU carton data,
                                `manual` when saved through the API or app.
                            items:
                              type: array
                              description: >-
                                Units of each shipment line in one carton of
                                this configuration.
                              items:
                                type: object
                                properties:
                                  supplier_purchase_order_shipment_item_id:
                                    type: integer
                                    description: >-
                                      Shipment line ID (`shipment_items[].id` on
                                      the purchase order shipment).
                                  quantity_per_package:
                                    type: number
                      coverage:
                        type: array
                        description: >
                          Packing check per shipment line: units on the line vs
                          units packed (sum of `quantity_per_package` ×

                          `number_of_identical_packages`). A push with saved
                          cartons is refused while any line has `matches:
                          false`.
                        items:
                          type: object
                          properties:
                            supplier_purchase_order_shipment_item_id:
                              type: integer
                            sku:
                              type: string
                              nullable: true
                            quantity:
                              type: number
                            packed:
                              type: number
                            matches:
                              type: boolean
                      box_labels_available:
                        type: boolean
                        description: >-
                          True when the shipment has a pushed inbound at a 3PL
                          that generates box content labels (Flexport).
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
        '404':
          description: Shipment not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
        '422':
          description: >-
            Validation error, or an item references a line that is not on the
            shipment
          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.