Skip to content
StraventaDocs
Now in Sandbox.

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.

GET
/api/pos/v1/catalog/products

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
AuthorizationBearer <token>

In: header

Query Parameters

sort?string

Column to order the tenant's WHOLE product catalog by (server-side, across every page), not just the rows on the current page. Defaults to name ascending. sku and price_cents order by the representative variant's values — the same ones the row renders. description, image_url, the category/tax-category UUIDs, the derived variant_count and active, and id are not sortable and return 400 invalid_sort_key.

Value in"name" | "sku" | "price_cents" | "status"
order?string

Sort direction. Any other value returns 400 invalid_sort_order.

Value in"asc" | "desc"
search?string
category_id?string
Formatuuid
page?integer
limit?integer

Response 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?