Import Offers
Format compatible with Data Import.
If Offer does not exist, it will be created. If Offer already exists, it is updated in place. If import of one Offer fails, it is ignored and others Offers are processed.
Empty string will clear the field. Null value will leave the field unchanged.
WARNING: when using Data Import, fields are updated to the values from the file, any existing values will be overwritten. If numerical values are not provided, default values will be used instead.
At least one discount rule is required to publish an Offer. If you send offer with Published = true, but without rules, offer will not be created.
Requests should follow the schema: Be aware, putting a decimal value into an integer field (or providing an incorrect enum value) will cause an error that will prevent any Offer from being inserted due to parsing errors.
Multiple discount rules can be inserted for each offer. Use rule2Value, rule2Type, etc for all following rules. Rules need to come in order, you cannot have rule 1 and rule 4, it needs to be rule 1 then rule 2, then rule 3 and so on. Rules not in order will be ignored.
Authorizations
Opaque Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"
Body
The list of offers to import.
ID of the offer.
1Name of the offer visible in the admin tools.
Date when any coupons for this offer become available to pick up in store.
Date when all coupons for this offer stop being available to pick up in the store.
Date when Coupons will be returned in API and visible in the app. Cannot be cleared after being set.
Customer specific offer type. Determines how or by which service offer will be used. Types used so far: game, appCoupon, gift, preferredStore, memberOffer, stampCard, stickersCampaign, segmentedAppCoupon, personalOffer. If not specified and offer is new, default type will be used, but publish will fail.
ID of the unified campaign to which offer belongs.
64Title of product visible in mobile app and in the coupon list. Can be cleared by passing empty string.
255Additional description of product visible in mobile app. Can be cleared by passing empty string.
Brand of product. Can be cleared by passing empty string.
50Url to the image which be displayed in the promotion in the app. Can be cleared by passing empty string.
2000Discount label - for example Price For a Day or Monthly Price. Can be cleared by passing empty string.
255Normal price label - for example Non-member Price. Can be cleared by passing empty string.
255Is the price per unit of the product(per kilo, per bottle, etc) visible in the mobile app
Unit of measure for the product - EA, kg, etc... Can be cleared by passing empty string.
255Condition label used for override default condition label in the app
64Text that should be printed on receipt when the offer is applied
100Additional tags - organic, vegan, best buy, etc...
Price of the purchased amount before discount is applied. Required when importing offer for the first time. When not provided, last stored value is used.
0 <= x <= 100000000Price per unit (per kile, for example) before discount is applied. Required when importing offer for the first time. When not provided, last stored value is used.
0 <= x <= 100000000ISO-4217 currency code - 3 characters, for example, DKK, ISK, EUR etc. Required when importing offer for the first time. When not provided, last stored value is used
3The discount priority. The lower the priority value, the more priority the discount has
Indicates whether the current discount allows the application of other discounts over it
The discounted items type
AllItems, NonDiscountedItems, DiscountedItems The maximum discount amount that can be applied to the basket.
Specifies what the discount impacts - specific line or the basket total
Line, Total The type of discount calculation rule to apply
Unknown, SimpleLine, SimpleQuantity, SimpleTotal, MixAndMatch, MixAndMatchTotal, QuantityStep, RewardTotal, TotalStep Defines sorting of products to apply discount on highest or lowest price product
Specifies the maximum amount of items for which the discount applies in scope of single receipt
Specifies how many times coupon can be redeemed in store. Each redemption is a separate purchase. Amount of time a coupon can be used in one purchase is controlled by Discount model. When not specified, defaults to last stored value on update, or 1 on create. Use 0 to indicate that coupon can be redeemed unlimited amount of times. If value is not equal to 1, we recommend providing Idempotency key during redemption, or weird behavior might happen.
List of CheckoutTypes, separated by "ArraySplitter" where offer is applicable. ArraySplitter is a character by which symbol array should be split. ArraySplitter can be changed in settings
The date and time when the granted benefit becomes available for use. Can be used only for Bonus benefits.
The exact date and time when the granted benefit expires if not used. Can be used only for Bonus benefits. This property is mutually exclusive with Promotion.Client.ApiModels.V3.Requests.BulkUpsertRequest.RewardRedeemableForDays.
The number of days after which the benefit expires if not used, counted from the moment the benefit is granted. This property is mutually exclusive with Promotion.Client.ApiModels.V3.Requests.BulkUpsertRequest.RewardRedeemableTo. Can be used only for Bonus benefits.
Total amount of possible coupons in the offer. When it is null, unlimited amount of coupons can be assigned.
Can be true only for personal offers ("personalOffer", "relevantOffer"). When true, this offer will be returned for a user that has no coupons assigned in personal offers.
Collection of Chain Ids, separated by "ArraySplitter" where offer is available. Mutually exclusive with StoreIds. ArraySplitter is a character by which symbol array should be split. ArraySplitter can be changed in settings
List of Store Ids, separated by "ArraySplitter" where offer is available. Mutually exclusive with ChainIds. ArraySplitter is a character by which symbol array should be split. ArraySplitter can be changed in settings
List of Audience Ids, separated by "ArraySplitter", customers from which have access to the offer.
Specifies who this offer is funded by. Retailers can use any values they need, or keep it empty
100Controlls the order in which coupons are returned to the mobile app. Lower number means higher priority
Specifies if coupons for this offer require activation, or are working on POS without activation
Specifies if coupons should be visible and processed by POS.
Specifies whether offer should be published
Default number of days a Triggered coupon is valid for, when no explicit value is specified during assignment
Response
OK