Get a promotion's full rule definition
Resolves ONE automatic promotion’s COMPLETE rule: the reward mechanics the six-field directory projection omits (skuId / minQuantity / reward for a threshold, buySkuId / buyQuantity / getSkuId / getQuantity / getDiscountBps for a bogo, components / bundlePriceCents for a bundle) plus its inclusive validity window. This is the READ half of a read-modify-write on a live rule: fetch it here, change only the field you were asked to change, and send the WHOLE object back through PUT /v1/promotions/{id} — never reconstruct mechanics from memory, because the PUT is a full replace. 404s when the promotion carries no configured rule: a directory row seeded without one is browsable but not editable, and PUT /v1/promotions/{id} plus POST /v1/promotions/{id}/deactivate 404 on it for the same reason.
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.
Path Parameters
1Response
The full promotion rule, its validity window as ISO instants.
- Option 1
- Option 2
- Option 3
The full promotion rule, its validity window as ISO instants.
1^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$bogo ^[0-9a-f]{64}$0 < x <= 9007199254740991^[0-9a-f]{64}$0 < x <= 90071992547409911 <= x <= 10000
