Inventory

Spare parts, consumables, and provisioning stock.

POST/inventory

Create an inventory item

Requires `vesselId` and `itemType`. Accepts either `vesselSystemId` or `category` (the server derives whichever is omitted); neither is required for provisions/consumables not tied to a system.

Request body
FieldTypeRequiredDescription
vesselIdstring (uuid)required
itemTypeenum(spare_part | safety_equipment | consumable | provision | interior | exterior | cleaning | tools | electronics | medical | lines_rigging | navigation | tender_equipment | water_toys | other)required
namestringrequired
vesselSystemIdstring (uuid)optional
categorystringoptional
quantityintegeroptional
unitstringoptional
locationstringoptional
partNumberstringoptional
costPerUnitstringoptionalSerialized as string to preserve Decimal precision.
currencystringoptional
supplierstringoptional
reorderThresholdintegeroptional
expirationDatestring (date-time)optional
notesstringoptional
Response
FieldTypeRequiredDescription
dataobjectrequired
data.idstring (uuid)optional
data.vesselIdstring (uuid)optional
data.vesselSystemIdstring (uuid) | nulloptional
data.vesselSystemobject | nulloptional
data.vesselSystem.idstring (uuid)optional
data.vesselSystem.systemKeystringoptional
data.vesselSystem.namestringoptional
data.itemTypestringoptionalInventoryType enum, e.g. spare_part, safety_equipment, consumable, provision.
data.namestringoptional
data.categorystring | nulloptional
data.subcategorystring | nulloptional
data.quantityintegeroptional
data.unitstring | nulloptional
data.locationstring | nulloptional
data.deckLevelstring | nulloptional
data.sectionstring | nulloptional
data.partNumberstring | nulloptional
data.fitsEquipmentarray<string>optional
data.brandstring | nulloptional
data.modelstring | nulloptional
data.costPerUnitstring | nulloptionalSerialized as string to preserve Decimal precision.
data.currencystringoptional
data.supplierstring | nulloptional
data.reorderThresholdinteger | nulloptional
data.reorderQuantityinteger | nulloptional
data.autoReorderEnabledbooleanoptional
data.preferredSupplierIdstring (uuid) | nulloptional
data.expirationDatestring (date-time) | nulloptional
data.barcodestring | nulloptional
data.photostring | nulloptional
data.notesstring | nulloptional
data.sourceDescriptionstring | nulloptional
data.catalogPartIdstring (uuid) | nulloptional
data.dataHealthFlagsarray<object>optionalDerived data-quality warnings for this row (e.g. missing reorder threshold).
data.hasOpenAutoDraftbooleanoptionalWhether a suppressed purchase-order auto-draft exists for this item's low-stock trigger.
data.vesselobjectoptional
data.vessel.idstring (uuid)optional
data.vessel.vesselNamestringoptional
data.createdAtstring (date-time)optional
data.updatedAtstring (date-time)optional
GET/inventory/{id}

Get an inventory item

Returns a single inventory item with vessel and vessel-system summaries.

Path parameters
NameInTypeRequiredDescription
idpathstring (uuid)required
Response
FieldTypeRequiredDescription
dataobjectrequired
data.idstring (uuid)optional
data.vesselIdstring (uuid)optional
data.vesselSystemIdstring (uuid) | nulloptional
data.vesselSystemobject | nulloptional
data.vesselSystem.idstring (uuid)optional
data.vesselSystem.systemKeystringoptional
data.vesselSystem.namestringoptional
data.itemTypestringoptionalInventoryType enum, e.g. spare_part, safety_equipment, consumable, provision.
data.namestringoptional
data.categorystring | nulloptional
data.subcategorystring | nulloptional
data.quantityintegeroptional
data.unitstring | nulloptional
data.locationstring | nulloptional
data.deckLevelstring | nulloptional
data.sectionstring | nulloptional
data.partNumberstring | nulloptional
data.fitsEquipmentarray<string>optional
data.brandstring | nulloptional
data.modelstring | nulloptional
data.costPerUnitstring | nulloptionalSerialized as string to preserve Decimal precision.
data.currencystringoptional
data.supplierstring | nulloptional
data.reorderThresholdinteger | nulloptional
data.reorderQuantityinteger | nulloptional
data.autoReorderEnabledbooleanoptional
data.preferredSupplierIdstring (uuid) | nulloptional
data.expirationDatestring (date-time) | nulloptional
data.barcodestring | nulloptional
data.photostring | nulloptional
data.notesstring | nulloptional
data.sourceDescriptionstring | nulloptional
data.catalogPartIdstring (uuid) | nulloptional
data.dataHealthFlagsarray<object>optionalDerived data-quality warnings for this row (e.g. missing reorder threshold).
data.hasOpenAutoDraftbooleanoptionalWhether a suppressed purchase-order auto-draft exists for this item's low-stock trigger.
data.vesselobjectoptional
data.vessel.idstring (uuid)optional
data.vessel.vesselNamestringoptional
data.createdAtstring (date-time)optional
data.updatedAtstring (date-time)optional
PATCH/inventory/{id}

Update an inventory item

Partial update — any writable `InventoryItem` field. `category` and `vesselSystemId` are dual-accept (supplying one derives the other when possible).

Path parameters
NameInTypeRequiredDescription
idpathstring (uuid)required
Request body
FieldTypeRequiredDescription
namestringoptional
vesselSystemIdstring (uuid) | nulloptional
categorystring | nulloptional
quantityintegeroptional
unitstring | nulloptional
locationstring | nulloptional
costPerUnitstring | nulloptionalSerialized as string to preserve Decimal precision.
currencystringoptional
reorderThresholdinteger | nulloptional
notesstring | nulloptional
Response
FieldTypeRequiredDescription
dataobjectrequired
data.idstring (uuid)optional
data.vesselIdstring (uuid)optional
data.vesselSystemIdstring (uuid) | nulloptional
data.vesselSystemobject | nulloptional
data.vesselSystem.idstring (uuid)optional
data.vesselSystem.systemKeystringoptional
data.vesselSystem.namestringoptional
data.itemTypestringoptionalInventoryType enum, e.g. spare_part, safety_equipment, consumable, provision.
data.namestringoptional
data.categorystring | nulloptional
data.subcategorystring | nulloptional
data.quantityintegeroptional
data.unitstring | nulloptional
data.locationstring | nulloptional
data.deckLevelstring | nulloptional
data.sectionstring | nulloptional
data.partNumberstring | nulloptional
data.fitsEquipmentarray<string>optional
data.brandstring | nulloptional
data.modelstring | nulloptional
data.costPerUnitstring | nulloptionalSerialized as string to preserve Decimal precision.
data.currencystringoptional
data.supplierstring | nulloptional
data.reorderThresholdinteger | nulloptional
data.reorderQuantityinteger | nulloptional
data.autoReorderEnabledbooleanoptional
data.preferredSupplierIdstring (uuid) | nulloptional
data.expirationDatestring (date-time) | nulloptional
data.barcodestring | nulloptional
data.photostring | nulloptional
data.notesstring | nulloptional
data.sourceDescriptionstring | nulloptional
data.catalogPartIdstring (uuid) | nulloptional
data.dataHealthFlagsarray<object>optionalDerived data-quality warnings for this row (e.g. missing reorder threshold).
data.hasOpenAutoDraftbooleanoptionalWhether a suppressed purchase-order auto-draft exists for this item's low-stock trigger.
data.vesselobjectoptional
data.vessel.idstring (uuid)optional
data.vessel.vesselNamestringoptional
data.createdAtstring (date-time)optional
data.updatedAtstring (date-time)optional
GET/inventory/vessel/{vesselId}

List a vessel's inventory

Supports `?cursor=` pagination on the standard path only — the `status=lowstock` filter (raw SQL comparing `quantity` to `reorderThreshold`) is a bounded result set and does not support cursor.

Path parameters
NameInTypeRequiredDescription
vesselIdpathstring (uuid)required
Query parameters
NameInTypeRequiredDescription
cursorquerystringoptionalOpaque pagination cursor from a previous response's `pagination.cursor`. Omit this param entirely for the first page of cursor mode; pass `cursor=` (empty) is also accepted as "start from the beginning in cursor mode." Omitting `cursor` altogether (not even as an empty string) falls back to legacy `?page=` semantics on endpoints that still support it.
limitqueryintegeroptional
Response
FieldTypeRequiredDescription
dataarray<object>required
data[].idstring (uuid)optional
data[].vesselIdstring (uuid)optional
data[].vesselSystemIdstring (uuid) | nulloptional
data[].vesselSystemobject | nulloptional
data[].vesselSystem.idstring (uuid)optional
data[].vesselSystem.systemKeystringoptional
data[].vesselSystem.namestringoptional
data[].itemTypestringoptionalInventoryType enum, e.g. spare_part, safety_equipment, consumable, provision.
data[].namestringoptional
data[].categorystring | nulloptional
data[].subcategorystring | nulloptional
data[].quantityintegeroptional
data[].unitstring | nulloptional
data[].locationstring | nulloptional
data[].deckLevelstring | nulloptional
data[].sectionstring | nulloptional
data[].partNumberstring | nulloptional
data[].fitsEquipmentarray<string>optional
data[].brandstring | nulloptional
data[].modelstring | nulloptional
data[].costPerUnitstring | nulloptionalSerialized as string to preserve Decimal precision.
data[].currencystringoptional
data[].supplierstring | nulloptional
data[].reorderThresholdinteger | nulloptional
data[].reorderQuantityinteger | nulloptional
data[].autoReorderEnabledbooleanoptional
data[].preferredSupplierIdstring (uuid) | nulloptional
data[].expirationDatestring (date-time) | nulloptional
data[].barcodestring | nulloptional
data[].photostring | nulloptional
data[].notesstring | nulloptional
data[].sourceDescriptionstring | nulloptional
data[].catalogPartIdstring (uuid) | nulloptional
data[].dataHealthFlagsarray<object>optionalDerived data-quality warnings for this row (e.g. missing reorder threshold).
data[].hasOpenAutoDraftbooleanoptionalWhether a suppressed purchase-order auto-draft exists for this item's low-stock trigger.
data[].vesselobjectoptional
data[].vessel.idstring (uuid)optional
data[].vessel.vesselNamestringoptional
data[].createdAtstring (date-time)optional
data[].updatedAtstring (date-time)optional
paginationobjectoptionalCanonical cursor-pagination block. On endpoints not yet retrofitted for true cursor support, `cursor` is a best-effort display-only value (not decodable, no `?cursor=` branch accepts it back) — see each endpoint's description for whether it has full cursor support.
pagination.cursorstring | nulloptionalOpaque token for the next page, or `null` when `hasMore` is `false`.
pagination.limitintegerrequired
pagination.hasMorebooleanrequired
pagination.totalintegerrequiredTotal row count matching the filter (not just this page).