Products API
Inventory and product management
GET
/api/productsList products
Query Parameters
locationIdcategoryIdsearchisActiveis86dproductTypepagelimit
Response
{
"data": [
{
"id": "uuid",
"name": "Espresso",
"price": 3.5,
"categoryId": "uuid",
"sku": "ESP-001",
"isActive": true,
"is86d": false
}
],
"total": 45,
"page": 1,
"limit": 20
}GET
/api/products/{id}Get product details
Response
{
"id": "uuid",
"name": "Espresso",
"price": 3.5,
"cost": 0.85,
"categoryId": "uuid",
"description": "Double shot espresso",
"sku": "ESP-001",
"barcode": "1234567890",
"taxRate": 0.07,
"isActive": true,
"is86d": false,
"trackInventory": true,
"lowStockThreshold": 10,
"productType": "ITEM"
}GET
/api/products/barcode/{barcode}Find product by barcode
Query Parameters
locationId
Response
{
"id": "uuid",
"name": "Espresso",
"price": 3.5,
"barcode": "1234567890"
}POST
/api/productsCreate a new product
Request Body
{
"name": "string",
"price": "number",
"categoryId": "uuid (optional)",
"description": "string (optional)",
"sku": "string (optional)",
"barcode": "string (optional)",
"cost": "number (optional)",
"taxRate": "number (optional)",
"imageUrl": "string (url, optional)",
"trackInventory": "boolean (optional)",
"lowStockThreshold": "number (optional)",
"productType": "ITEM | MODIFIER | BUNDLE (optional)"
}Response
{
"id": "uuid",
"name": "New Product",
"price": 9.99,
"isActive": true,
"createdAt": "2026-03-21T00:00:00Z"
}PUT
/api/products/{id}Update a product
Request Body
{
"name": "string (optional)",
"price": "number (optional)",
"isActive": "boolean (optional)",
"is86d": "boolean (optional)",
"categoryId": "uuid (optional)",
"description": "string (optional)",
"sku": "string (optional)",
"barcode": "string (optional)"
}Response
{
"id": "uuid",
"name": "Updated Product",
"price": 12.99,
"updatedAt": "2026-03-21T00:00:00Z"
}POST
/api/products/bulk-updateBulk update products
Request Body
{
"updates": "array of { id: uuid, data: ProductUpdateObject }"
}Response
{
"updated": 5,
"failed": 0
}POST
/api/products/{id}/86Mark product as 86'd (Unavailable)
Response
{
"id": "uuid",
"is86d": true,
"updatedAt": "2026-03-21T00:00:00Z"
}DELETE
/api/products/{id}/86Unmark product as 86'd (Available)
Response
{
"id": "uuid",
"is86d": false,
"updatedAt": "2026-03-21T00:00:00Z"
}DELETE
/api/products/{id}Delete a product
Response
{
"success": true,
"message": "Product deleted"
}