List automatic promotion rules
Browses the catalogue of AUTOMATIC promotion rules — the reductions the till applies on its own when a cart matches, with no promo code and no manager approval. Use this to answer ‘what offers are running?’, to find a rule’s id before reading or re-configuring it, or to audit what is scheduled or expired. Filter with status (active right now / scheduled for a future window / expired) and type (bogo buy-X-get-Y, threshold quantity-triggered, bundle fixed price for a set). Walk pages with page/pageSize (max 100) until page reaches pageCount. Rows are the DIRECTORY projection — id, name, type, status, validFrom, validUntil and nothing else. The SKU-level reward mechanics (skuId, minQuantity, reward, components, buySkuId, …) are NOT exposed by this endpoint and NOT by any other read in the API: GET /v1/promotions/{id} returns the same six fields. Do not plan on fetching them later. This lists rules only: presented promo codes live at GET /v1/coupons, and manually authorised ticket reductions are not listed here at all.
Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Query Parameters
1-based page index to return. Defaults to 1.
1 <= x <= 9007199254740991Rows per page, 1..100. Defaults to 20.
1 <= x <= 100bogo, threshold, bundle active, scheduled, expired name, validFrom asc, desc Response
A page of promotion directory rows with the pagination totals.
A page of promotion directory rows with the pagination totals.
The rows on this page, in the query's sort order.
Total rows matching the filter across ALL pages, not just this one.
0 <= x <= 9007199254740991The 1-based page number served.
0 < x <= 9007199254740991Rows requested per page.
0 < x <= 9007199254740991Total number of pages; stop walking when page reaches it.
0 <= x <= 9007199254740991
