Skip to main content
POST

Authorizations

Authorization
string
header
required

Opaque Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"

Body

The list of campaigns to import.

offerId
string
required

ID of the offer.

Minimum string length: 1
offerName
string
required

Name of the offer visible in the admin tools.

Minimum string length: 1
startDate
string<date-time>
required

Date when any coupons for this offer become available to pick up in store.

endDate
string<date-time>
required

Date when all coupons for this offer stop being available to pick up in the store.

offerType
string
required

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.

Minimum string length: 1
impactLevel
enum<string>
required

Specifies what the discount impacts - specific line or the basket total

Available options:
Line,
Total
maxNumberApplyPerReceipt
number<double>
required

Specifies maximum number of times this discount can be applied in scope of single receipt

redemptionLimit
integer<int32>
required

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.

published
boolean
required

Specifies whether offer should be published

rule1Value
number<double>
required

Value for first discount rule

rule1Type
enum<string>
required

Type of the discount.

Available options:
FixedPrice,
Percentage,
Amount,
BonusPercent,
BonusAmount
rule1ThresholdType
enum<string>
required

Specifies what is the threshold for discount to apply. If not enough items are purchased, discount will not be applied

Available options:
Quantity,
Amount
rule1ThresholdValue
number<double>
required

Threshold value for first discount rule

previewVisibleFrom
string<date-time> | null

Date when Coupons will be returned in API and visible in the app. Cannot be cleared after being set.

unifiedCampaignId
string | null

ID of the unified campaign to which offer belongs.

Maximum string length: 64
title
string | null

Title of product visible in mobile app and in the coupon list. Can be cleared by passing empty string.

Maximum string length: 255
description
string | null

Additional description of product visible in mobile app. Can be cleared by passing empty string.

brand
string | null

Brand of product. Can be cleared by passing empty string.

Maximum string length: 50
imageUrl
string | null

Url to the image which be displayed in the promotion in the app. Can be cleared by passing empty string.

Maximum string length: 2000
discountLabel
string | null

Discount label - for example Price For a Day or Monthly Price. Can be cleared by passing empty string.

Maximum string length: 255
normalPriceLabel
string | null

Normal price label - for example Non-member Price. Can be cleared by passing empty string.

Maximum string length: 255
pricePerUnitLabelEnabled
boolean | null

Is the price per unit of the product(per kilo, per bottle, etc) visible in the mobile app

unitOfMeasure
string | null

Unit of measure for the product - EA, kg, etc... Can be cleared by passing empty string.

Maximum string length: 255
conditionLabel
string | null

Condition label used for override default condition label in the app

Maximum string length: 64
receiptDisplayText
string | null

Text that should be printed on receipt when the offer is applied

Maximum string length: 100
autogenerateDiscountLabel
boolean | null

Whether to autogenerate discount label based on discount rules

normalPrice
number<double> | null

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.

Required range: 0 <= x <= 100000000
normalPricePerUnit
number<double> | null

Price 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.

Required range: 0 <= x <= 100000000
currency
string | null

ISO-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

Maximum string length: 3
priority
integer<int32>

The discount priority. The lower the priority value, the more priority the discount has

allowOtherDiscountsOnTop
boolean

Indicates whether the current discount allows the application of other discounts over it

itemsApplicationType
enum<string>

The discounted items type

Available options:
AllItems,
NonDiscountedItems,
DiscountedItems
maxDiscountAmount
number<double>

The maximum discount amount that can be applied to the basket.

maxDiscountAmountPerCoupon
number<double> | null

The maximum discount amount that can be applied to the basket by a single coupon.

discountType
enum<string>

The type of discount calculation rule to apply

Available options:
Unknown,
SimpleLine,
SimpleQuantity,
SimpleTotal,
MixAndMatch,
MixAndMatchTotal,
QuantityStep,
RewardTotal,
TotalStep
applyOnHighestPrice
boolean | null

Defines sorting of products to apply discount on highest or lowest price product

discountAmountLimitPerCoupon
number<double> | null

Maximum total discount amount that can be claimed across all redemptions per Customer. When not set or 0, there is no limit on total discount amount.

checkoutTypes
string | null

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

rewardRedeemableFrom
string<date-time> | null

The date and time when the granted benefit becomes available for use. Can be used only for Bonus benefits.

rewardRedeemableTo
string<date-time> | null

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.V2.Requests.BulkUpsertRequest.RewardRedeemableForDays.

rewardRedeemableForDays
integer<int32> | null

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.V2.Requests.BulkUpsertRequest.RewardRedeemableTo. Can be used only for Bonus benefits.

totalCoupons
integer<int32> | null

Total amount of possible coupons in the offer. When it is null, unlimited amount of coupons can be assigned.

isDefault
boolean | null

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.

chainIds
string | null

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

storeIds
string | null

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

audienceId
string | null

Segmentation identifier from the audience service.

Maximum string length: 64
fundedBy
string | null

Specifies who this offer is funded by. Retailers can use any values they need, or keep it empty

Maximum string length: 100
displayPriority
integer<int32> | null

Controlls the order in which coupons are returned to the mobile app. Lower number means higher priority

preactivated
boolean | null

Specifies if coupons for this offer require activation, or are working on POS without activation

ignoreOnPos
boolean | null

Specifies if coupons should be visible and processed by POS.

defaultValidForDays
integer<int32> | null

Default number of days a Triggered coupon is valid for, when no explicit value is specified during assignment

rule1IncludedProducts
string

List of products for which the first rule applies separated by ';'

rule1IncludedCategories
string

List of categories for which the first rule applies separated by ';'

rule1ExcludedProducts
string

List of products for which the first rule not applies separated by ';'

rule1ExcludedCategories
string

List of categories for which the first rule not applies separated by ';'

rule2Value
number<double>

Value for second discount rule

rule2Type
enum<string>

Type of the discount.

Available options:
FixedPrice,
Percentage,
Amount,
BonusPercent,
BonusAmount
rule2ThresholdType
enum<string>

Specifies what is the threshold for discount to apply. If not enough items are purchased, discount will not be applied

Available options:
Quantity,
Amount
rule2ThresholdValue
number<double>

Threshold value for second discount rule

rule2IncludedProducts
string

List of products for which the second rule applies separated by ';'

rule2IncludedCategories
string

List of categories for which the second rule applies separated by ';'

rule2ExcludedProducts
string

List of products for which the second rule not applies separated by ';'

rule2ExcludedCategories
string

List of categories for which the second rule not applies separated by ';'

Response

OK

errors
object[] | null
Last modified on August 10, 2026