Products
The product catalogue stores everything your POS can sell — items, prices, PLU codes, and categories. Products are scoped per tenant and can be shared across registers and self-checkout terminals.
List products
bash
GET /v1/slate/products| Name | Type | Required | Description |
|---|---|---|---|
| filter[category] | string | No | Filter by category name. |
| q | string | No | Search products by name (partial match). |
| page | integer | No | Page number. |
| per_page | integer | No | Results per page. Max 100. |
json
{
"data": [
{
"id": "3f2a...",
"tenant_id": "ten_01hxyz",
"name": "Flat White",
"plu": "FW001",
"price": 5.50,
"category": "Coffee",
"created_at": "2025-05-01T00:00:00Z",
"updated_at": "2025-05-01T00:00:00Z"
}
],
"pagination": { "page": 1, "per_page": 20, "total": 47, "has_more": true }
}Create a product
bash
POST /v1/slate/products| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Product display name. |
| price | number | Yes | Unit price as a decimal. |
| plu | string | No | Price look-up code for barcode scanners. |
| category | string | No | Category label (e.g. Coffee, Food, Merchandise). |
Update a product
bash
PATCH /v1/slate/products/:idSend only the fields you want to change. All fields are optional in a PATCH request.
bash
curl -X PATCH https://api.hldgroup.org/v1/slate/products/3f2a... \
-H "x-internal-secret: <key>" \
-H "x-tenant-id: ten_01hxyz" \
-H "x-user-id: usr_01hxyz" \
-H "x-platform-role: tenant-system-admin" \
-H "Content-Type: application/json" \
-d '{ "price": 6.00 }'Delete a product
bash
DELETE /v1/slate/products/:idPermanently removes the product from the catalogue. Historical order lines that reference this product retain their product_name snapshot so reporting remains accurate.
Warning:Deleting a product does not cancel or modify existing orders. Sales history is preserved.