List catalog products (management workspace)
Returns the product-grain catalog-management list used by the product CRUD workspace, as the standard paginated envelope `{products, total, page, limit, total_pages}`. Each product carries its representative (earliest-created) variant's `sku`, `price_cents`, `currency`, `tax_category_id`, and `category_id` so the management grid renders without a second round-trip. Optional `search` matches the product name or any variant sku/name; optional `category_id` filters to products with a variant in that category. Distinct from `GET /catalog/variants` (the cashier REGISTER picker, variant grain). Requires `pos.catalog.read` or equivalent.
Returns the product-grain catalog-management list used by the product
CRUD workspace, as the standard paginated envelope
{products, total, page, limit, total_pages}. Each product carries its
representative (earliest-created) variant's sku, price_cents,
currency, tax_category_id, and category_id so the management grid
renders without a second round-trip. Optional search matches the
product name or any variant sku/name; optional category_id filters to
products with a variant in that category. Distinct from
GET /catalog/variants (the cashier REGISTER picker, variant grain).
Requires pos.catalog.read or equivalent.
Authorization
bearerAuth In: header
Query Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/pos/v1/catalog/products"{
"products": [
{
"id": "018f4d9f-7b8a-7c2d-9a2d-1f8b92f6d400",
"name": "Espresso",
"description": "Single shot",
"sku": "ESP-001",
"price_cents": 25000,
"currency": "IDR",
"category_id": null,
"modifier_ids": [],
"tax_category_id": "beverages",
"image_url": null,
"status": "active",
"active": true,
"variant_count": 1
}
],
"total": 1,
"page": 1,
"limit": 50,
"total_pages": 1
}{
"error": "string",
"message": "string",
"request_id": "string"
}{
"error": "string",
"message": "string",
"request_id": "string"
}{
"error": "string",
"message": "string",
"request_id": "string"
}Was this page helpful?