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).sortByin query ("onHand","reserved","updatedAt", optional).sortOrderin query ("asc","desc", optional).stockStatusin query ("IN_STOCK","LOW_STOCK","OUT_OF_STOCK", 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, optional).pageSizein query (string, optional).
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, optional).pageSizein query (string, optional).
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).sortByin query ("createdAt","quantity","type", optional).sortOrderin query ("asc","desc", optional).typein query ("ADJUSTMENT","RESERVATION","RESERVATION_RELEASE","RETURN","SALE","TRANSFER", 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("CORRECTION","DAMAGE","OTHER","RECEIVED","RECOUNT","RETURN_DAMAGED","RETURN_RESTOCK","SHRINKAGE", 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).
UpdateInventoryLocationAdminDto
Section titled “UpdateInventoryLocationAdminDto”