SIGNALS Documentation
API Reference

Containers

Container lifecycle — pack, seal, dispatch, return, and repack serialised assets.

Containers API

Containers group serialised assets into dispatchable units (kits, hybrid kits, transport boxes). The API covers the full pack/seal/dispatch/return lifecycle.

Packing a kit or hybrid-fixed container holds its contents from individual availability via container demand; unpacking releases it.

Endpoints

Method URL Description
GET /api/v1/containers List containers
POST /api/v1/containers Create container
POST /api/v1/containers/temporary Create temporary container
GET /api/v1/containers/{container} Show container with packed contents
PATCH /api/v1/containers/{container} Update container metadata
GET /api/v1/containers/{container}/compliance Compliance manifest (sealed)
POST /api/v1/containers/{container}/pack Pack serialised item
POST /api/v1/containers/{container}/unpack Unpack serialised item
POST /api/v1/containers/{container}/transfer Transfer packed items between containers
POST /api/v1/containers/{container}/seal Seal container
POST /api/v1/containers/{container}/unseal Unseal container
POST /api/v1/containers/{container}/dissolve Dissolve container
POST /api/v1/containers/{container}/dispatch Dispatch kit to opportunity
POST /api/v1/containers/{container}/return Return kit from opportunity
POST /api/v1/containers/repack/start Start repack session
POST /api/v1/containers/{container}/repack Repack single item
POST /api/v1/containers/{container}/verify-checkin Verify check-in scan

Product container templates: GET/PUT /api/v1/products/{product}/container_template.

Authentication

Requires containers:read (GET) or containers:write (POST/PATCH) with matching containers.view, containers.pack, containers.seal, etc. permissions.

List containers

GET /api/v1/containers

Ransack filters: name, barcode, status, scan_mode, is_temporary, product_id, store_id, opportunity_id, created_at, updated_at.

Includes: ?include=product,store,active_items

Lifecycle notes

Action Constraint
Pack / unpack Container must be open
Seal Requires packed contents; produces compliance manifest
Dissolve Warn-and-resolve nested packing; may transfer items
Dispatch / return Kit mode — ties container to opportunity
Repack Post-return scan workflow

Transport containers may use dissolve-on-dispatch (configured on product template) — see Containers & Kits platform doc.

Pack item

POST /api/v1/containers/{container}/pack
Field Type Required Description
serialised_item_id int Yes Serialised stock level to pack
position string No Slot/position label
notes string No Free-text note

Returns 201 with container_item. Rejected with 422 when container is not open, item is at wrong store, already packed, or committed to another opportunity.

Unpack item

POST /api/v1/containers/{container}/unpack

Body: { "serialised_item_id": 88 }. Returns 200 with closed membership row.

Webhooks

container.created, container.item.packed, container.item.unpacked, container.sealed, container.unsealed, container.dissolved, container.dispatched, container.returned, container.repack.started, container.repack.item — see Webhooks.