Return every promotion (active and inactive) attached to the given online offer. Returns 404 when the offer does not exist or the caller lacks the VIEW permission on the offer’s owning organization. 404 is used (rather than 403) to avoid leaking offer existence.
Documentation Index
Fetch the complete documentation index at: https://docs.closient.com/llms.txt
Use this file to discover all available pages before exploring further.
UUID of the online offer whose promotions to list.
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$OK
Stable UUID primary key of the promotion. Use this for cross-references.
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$URL-safe shortuuid (base57) encoding of id. Up to 22 characters; preferred over id in human-shareable URLs and log lines.
22UUID of the parent OnlineOffer this promotion applies to. The offer must already exist; create it via the online offers API before attaching promotions. Immutable after creation — moving a promotion to a different offer means deleting and recreating.
22^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$Time-windowed override for the offer's regular price in the parent store's currency. Must be non-negative. When multiple promotions overlap on the same offer the cheapest active one wins; $0 is allowed and intentional for free-with-purchase BOGO arms (it is not a sentinel for 'unknown').
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Timestamp at which this promotion becomes effective (inclusive). Must be strictly before end_date — the database enforces end_date > start_date.
Timestamp at which this promotion stops being effective (inclusive). A daily Celery beat task flips is_active to false once this passes; the row is kept for historical pricing rather than deleted.
Developer-attached key/value data attached to this object. Up to 50 keys; key max 40 chars, value max 500 chars.
ISO 4217 currency code lifted from the parent OnlineStore.currency at read time. Read-only here — there is no per-promotion currency override; the store decides.
3Merchandising context — display-only, does not change resolution semantics. Use SEASONAL for time-of-year promotions (Cyber Monday, holiday), CLEARANCE for end-of-life inventory, BOGO for buy-one-get-one arms (often at promotional_price=0), BUNDLE for discounts that apply when buying with another product, INTRODUCTORY for launch pricing, LOYALTY for member-only prices, and SALE (the default) for everything else.
SALE, CLEARANCE, BOGO, BUNDLE, SEASONAL, INTRODUCTORY, LOYALTY Optional human-readable label shown alongside the promoted price (e.g. 'Cyber Monday week', 'Member appreciation week'). Free-form, up to 255 characters. Empty string when no label is needed.
255Soft-deactivate flag. true means the promotion is eligible for cheapest-active resolution within its date window; false excludes it (the daily beat task auto-flips this to false once end_date passes). Use the update endpoint to set this to false rather than deleting if you want to preserve the historical pricing row.