PromotionEffect
object type
The canned effect — ONE flat render of the contracts discriminated union (the CollectionPredicate render pattern): kind selects the arm; each arm's fields are present on it and absent elsewhere. Percentages ride integer ppm (10% = 100000); amounts are integer minor units in the org default currency; effects only REDUCE — never uplift.
Fields
| Field | Type | Notes |
|---|---|---|
kind | PromotionEffectType PromotionEffectType! | No further notes. |
percentPpm | Int | percent_off: the ppm ((0, 1000000]). |
amountMinor | Int | amount_off: the absolute reduction (minor units). |
target | PromotionEffectTarget | percent_off/amount_off: where the figure lands. |
unitPriceMinor | Int | fixed_price: the target UNIT price — each matched line reduces so its running subtotal = unit × qty; already-below = no-op (LINE-only by construction). |
buyQty | Int | buy_x_get_y: the buy quantity (X). |
getQty | Int | buy_x_get_y: the get quantity (Y) per reward group. |
getScope | PromotionBogoScope | No further notes. |
getProductScope | PromotionProductScope | buy_x_get_y getScope=different: the get-item scope (REQUIRED iff different). |
benefitPercentPpm | Int | buy_x_get_y: ABSENT = free (100%); bundle_combo: the percent benefit (XOR benefitAmountMinor). |
benefitAmountMinor | Int | bundle_combo: the amount benefit PER COMBO (× the multiplier k; largest-remainder across participants; XOR benefitPercentPpm). |
components | PromotionBundleComponent [PromotionBundleComponent!] | bundle_combo: the components (2..8 — a single-component qty deal is buy_x_get_y/minQty). |
giftVariantId | ID | free_gift (DEFERRED): the gifted Variant. |
qty | Int | free_gift (DEFERRED): the gift quantity. |