Retrieve a lot (with inventory summary)
Returns a single Lot plus an inventory_summary aggregate computed from
inventory.inventory_transactions (sum of quantity for this lot
scoped to entity). The aggregate is included only on GET-by-id, not on
list. Supports ETag caching via If-None-Match. Requires the
lots:read scope.
Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_
Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Path Parameters
Response
Lot with inventory summary
A lot-tracked production batch of a product. Created when receiving lot- tracked inventory and consumed via FEFO (first-expiry-first-out) at allocation time. Status walks active -> on_hold -> expired -> recalled via the change-status endpoint. Soft-delete refuses when quantity_on_hand > 0 (HTTP 409). Scope: lots:read / lots:write / lots:delete. Rule 23 SSOT: quantity_on_hand is written only by canonical inventory_transactions postings; the API never writes it directly.
"lot"
Operator-supplied or vendor-supplied lot identifier. 1..100 chars.
Per-unit landed cost at receipt (USD).
Original receive quantity. Immutable after creation.
Current on-hand. SSOT: derived via inventory_transactions.
Lifecycle state. Changed via POST /lots/{id}/change-status with mandatory reason.
active, on_hold, expired, recalled "active"
Migration provenance (e.g. versa, bubble).
Free-form caller metadata. Default {}.
Computed aggregate joined on lot_id from inventory.inventory_transactions. Only on GET /lots/{id}, not on list.

