Sets or replaces the offer's promotion: a plan for a limited time, optionally under a campaign. Nothing on the offer itself changes.
const url = 'https://example.com/api/v1/provision/admin/entitlements/offers/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/promotion';const options = { method: 'PUT', headers: {'Content-Type': 'application/json'}, body: '{"planSetId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","planName":"example","startsAt":"2026-04-15T12:00:00Z","endsAt":"2026-04-15T12:00:00Z","campaignId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","reason":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://example.com/api/v1/provision/admin/entitlements/offers/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/promotion \ --header 'Content-Type: application/json' \ --data '{ "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example" }'While it runs, each new order from the offer gets it as a temporary plan override that ends on its end
date, with a plan-override touch of its campaign. The entitlements already made from the offer get it from
a push that sets includePromotion. An order that will start on a trial plan, an anonymous try, an
entitlement a billing provider’s subscription makes and the platform’s own subscriptions do not get it.
Refused for an archived offer, for a plan set that is not published or belongs to another suite, for the
offer’s own plan, and for a reason the platform keeps for its own overrides.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The offer.
Request Bodyrequired
Section titled “Request Bodyrequired”The promotion’s plan, window, campaign and reason.
Sets or replaces an offer’s promotion.
object
When it starts; null starts it now. A promotion that starts later reaches orders from then on.
When it ends, on the offer and on every entitlement given it. Must be in the future.
The campaign it runs under, if any.
Recorded as the reason of each temporary override it becomes.
Examplegenerated
{ "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example"}Sets or replaces an offer’s promotion.
object
When it starts; null starts it now. A promotion that starts later reaches orders from then on.
When it ends, on the offer and on every entitlement given it. Must be in the future.
The campaign it runs under, if any.
Recorded as the reason of each temporary override it becomes.
Examplegenerated
{ "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example"}Sets or replaces an offer’s promotion.
object
When it starts; null starts it now. A promotion that starts later reaches orders from then on.
When it ends, on the offer and on every entitlement given it. Must be in the future.
The campaign it runs under, if any.
Recorded as the reason of each temporary override it becomes.
Examplegenerated
{ "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example"}Responses
Section titled “Responses”OK
An offer’s promotion: a plan it gives for a limited time, optionally under a campaign. While it runs, each new order from the offer gets it as a temporary plan override that ends on DateTimeOffset OfferPromotionDto.EndsAt, and a push that includes it gives it to the entitlements made from the offer.
object
The campaign it runs under; each entitlement given it counts as a plan-override touch of the campaign.
Recorded as the reason of each temporary override it becomes.
An offer’s promotion: a plan it gives for a limited time, optionally under a campaign. While it runs, each new order from the offer gets it as a temporary plan override that ends on DateTimeOffset OfferPromotionDto.EndsAt, and a push that includes it gives it to the entitlements made from the offer.
object
The campaign it runs under; each entitlement given it counts as a plan-override touch of the campaign.
Recorded as the reason of each temporary override it becomes.
Examplegenerated
{ "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example"}An offer’s promotion: a plan it gives for a limited time, optionally under a campaign. While it runs, each new order from the offer gets it as a temporary plan override that ends on DateTimeOffset OfferPromotionDto.EndsAt, and a push that includes it gives it to the entitlements made from the offer.
object
The campaign it runs under; each entitlement given it counts as a plan-override touch of the campaign.
Recorded as the reason of each temporary override it becomes.
Examplegenerated
{ "planSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "planName": "example", "startsAt": "2026-04-15T12:00:00Z", "endsAt": "2026-04-15T12:00:00Z", "campaignId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "example"}Bad Request
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Not Found
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}