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.
Authorization
bearerAuth In: header
Query Parameters
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.
"name" | "sku" | "price_cents" | "status"Sort direction. Any other value returns 400 invalid_sort_order.
"asc" | "desc"uuidResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X GET https://sandbox.505pay.link/api/pos/v1/catalog/products \ -H "Authorization: Bearer $TOKEN"{
"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"
}{
"error": "rate_limit_exceeded",
"message": "Too many requests to /v1/check",
"request_id": "018f4d9f-7b8a-7c2d-9a2d-1f8b92f6ffff"
}Was this page helpful?