Inventory (admin API)
Admin routes of the inventory module. Every route needs a staff session and the permission named on it; send X-Resolve-Locale: false to receive every locale of a translatable field for editing.
GET /v1/admin/inventory
Section titled “GET /v1/admin/inventory”List stock levels
Parameters:
locationIdin query (string, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).variantIdin query (string, optional).
Responses:
200: Stock levels retrieved.401: Unauthorized.403: Insufficient permissions.
PATCH /v1/admin/inventory/adjust
Section titled “PATCH /v1/admin/inventory/adjust”Adjust inventory stock
Request body: AdjustInventoryAdminDto.
Responses:
200: Inventory adjusted.400: Invalid input.401: Unauthorized.403: Insufficient permissions.404: Variant not found.
GET /v1/admin/inventory/alerts
Section titled “GET /v1/admin/inventory/alerts”List low/out-of-stock alerts
Parameters:
pagein query (string, required).pageSizein query (string, required).
Responses:
200: Alerts retrieved.401: Unauthorized.403: Insufficient permissions.
GET /v1/admin/inventory/locations
Section titled “GET /v1/admin/inventory/locations”List inventory locations
Parameters:
pagein query (string, required).pageSizein query (string, required).
Responses:
200: Locations retrieved.401: Unauthorized.403: Insufficient permissions.
POST /v1/admin/inventory/locations
Section titled “POST /v1/admin/inventory/locations”Create inventory location
Request body: CreateInventoryLocationAdminDto.
Responses:
201: Location created.400: Invalid input.401: Unauthorized.403: Insufficient permissions.
DELETE /v1/admin/inventory/locations/{id}
Section titled “DELETE /v1/admin/inventory/locations/{id}”Delete inventory location
Parameters:
idin path (string, required).
Responses:
204: Location deleted.401: Unauthorized.403: Insufficient permissions.404: Location not found.409: Location has stock.
PATCH /v1/admin/inventory/locations/{id}
Section titled “PATCH /v1/admin/inventory/locations/{id}”Update inventory location
Parameters:
idin path (string, required).
Request body: UpdateInventoryLocationAdminDto.
Responses:
200: Location updated.400: Invalid input.401: Unauthorized.403: Insufficient permissions.404: Location not found.
GET /v1/admin/inventory/movements
Section titled “GET /v1/admin/inventory/movements”List inventory movements
Parameters:
dateFromin query (string, optional).dateToin query (string, optional).locationIdin query (string, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).variantIdin query (string, optional).
Responses:
200: Movements retrieved.401: Unauthorized.403: Insufficient permissions.
POST /v1/admin/inventory/transfer
Section titled “POST /v1/admin/inventory/transfer”Transfer inventory between locations
Request body: TransferInventoryAdminDto.
Responses:
200: Inventory transferred.400: Invalid input.401: Unauthorized.403: Insufficient permissions.404: Location or variant not found.
GET /v1/admin/inventory/variant/{variantId}
Section titled “GET /v1/admin/inventory/variant/{variantId}”Get variant stock levels
Parameters:
variantIdin path (string, required).
Responses:
200: Stock levels retrieved.401: Unauthorized.403: Insufficient permissions.404: Variant not found.
Schemas
Section titled “Schemas”AdjustInventoryAdminDto
Section titled “AdjustInventoryAdminDto”variantId(string, required).locationId(string, required).quantity(number, optional).setTo(number, min 0, optional).expectedOnHand(number, min 0, optional).reason(object, required).notes(string, max length 500, optional).
CreateInventoryLocationAdminDto
Section titled “CreateInventoryLocationAdminDto”name(string, max length 100, required).code(string, pattern/^[A-Z0-9_-]{1,20}$/, required).isActive(boolean, optional).
TransferInventoryAdminDto
Section titled “TransferInventoryAdminDto”variantId(string, required).fromLocationId(string, required).toLocationId(string, required).quantity(number, min 1, required).notes(string, max length 500, optional).