Product endpoints are public — no authentication is required. All requests must include a
tenant_id query parameter to scope results to the correct business.GET /api/v1/products
List products for a tenant. Results are cached for 600 seconds per tenant/filter combination. Middleware:throttle:api, cacheResponse:600Authentication: Not required
Query parameters
Numeric ID of the tenant whose catalog to fetch. Returns
400 when absent.Full-text search term to filter products by name or description.
Filter by category name.
Response 200 OK
Paginated collection of product objects (20 per page).
Standard Laravel pagination links.
Pagination metadata (current page, total, per page).
Error responses
| Status | Cause |
|---|---|
400 | tenant_id missing or zero |
GET /api/v1/products/
Fetch a single product by ID. Also requirestenant_id to enforce ownership scoping. Response is cached for 600 seconds.
Middleware: throttle:api, cacheResponse:600Authentication: Not required
Path parameters
Numeric product ID.
Query parameters
Numeric tenant ID. Product must belong to this tenant.
Response 200 OK
Single product object with the same shape as items in the list endpoint.
Error responses
| Status | Cause |
|---|---|
400 | tenant_id missing or zero |
404 | Product not found for the given tenant |