Skip to content

Products

Minimal product catalog read: enough to put a product line on a visit (id, title, price, unit). Inventory levels, categories, cost price and product management are outside the first iteration.

List products

Request

Returns the minimal product catalog fields available in P0: id, title, price_minor, and unit. Inventory levels, balances, cost, and standalone product sales are not part of the preview scope.

Cursor-paginated list. Default ordering: title, id tie-breaker. Cursors use the cursor query parameter, expire after 15 minutes, and are bound to the credential, tenant, and filters. Expired, malformed, or foreign cursors fail with 422 validation_failed using field codes expired_cursor, invalid_cursor, or foreign_cursor.

Security
OAuth2(Required scopes: products:read) or RestrictedKey
Path
location_idintegerrequired

Identifier of the Location. Verified against the credential on every call — a Location the credential cannot access responds with 404.

Query
querystring

Search query.

limitinteger, [ 1 .. 100 ]

Page size for cursor pagination. Default is 25; maximum is 100.

Default:25
cursorstring

Opaque cursor from next_cursor. Cursors expire after 15 minutes and are bound to credential, tenant, filters, and ordering; expired, malformed, or foreign cursors fail with 422 validation_failed.

curl -i -X GET \
  'https://developer.alteg.io/_mock/en/b2b-v3/openapi/locations/{location_id}/products?query=string&limit=25&cursor=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Headers
RateLimit-Remaininginteger, (int32), >= 0

Requests left in the most constrained policy window that applies to this request.

RateLimit-Resetinteger, (int32), >= 0

On 429, seconds until the most constrained policy frees up; it equals Retry-After there. On a successful response it reports the length of that policy's window rather than the time left in the current one, so treat it as the window size, not as a countdown — the counter to pace against is RateLimit-Remaining.

RateLimit-Policystring

Most constrained policy applied to the request, as <limit>;w=<window in seconds>.

Example:"10;w=60"
X-Request-Idstring

Request identifier for support and log correlation.

Bodyapplication/json
dataArray of objects(Product)required
has_morebooleanrequired

Whether more items exist beyond this page.

next_cursorstring or nullrequired

Opaque cursor for the next page; null on the last page.

objectstringrequired
Value:"list"
Response
{ "object": "list", "has_more": true, "next_cursor": "string", "data": [ {} ] }