Suggests promotion codes built from the values the caller has filled in so far.
POST
/api/promotions/suggest-codes
deprecated
Requires: Promotions.Promotions, merchant scope.
Memorable codes are guessable by design: they are marketing codes a customer reads off a flyer. Ask for the private style for a single-use or goodwill discount. Nothing is stored; a suggestion becomes a promotion only when it is created.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a SuggestPromotionCodesInput. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
merchantId
required |
string (uuid) | The merchant the promotion will belong to. When given, codes the merchant already uses are left out of the suggestions. The caller must be authorized over the merchant. Conditional: When MerchantId is not null. nullable |
excludePromotionId
required |
string (uuid) | The promotion being edited, so its own current code is not treated as taken. nullable |
style
required |
all of PromotionCodeSuggestionStyle | Memorable marketing codes, or private single-use ones. |
count
required |
integer (int32) | How many suggestions to return, between 1 and `MaxCount`. min 1max 10 |
discountType
required |
all of PromotionDiscountType | Whether the value is a percentage or a flat amount. nullable |
value
required |
number (double) | The percentage, or the flat amount. nullable |
currency
required |
string | The ISO 4217 currency, when the promotion has one. nullable |
name
required |
string | The operator-facing promotion name. Its first word may appear in a suggestion. nullablemax length 128 |
startsAtUtc
required |
string (date-time) | When the promotion starts. The season and month in a suggestion are read from it. nullable |
appliesToScope
required |
all of PromotionAppliesToScope | What the promotion applies to. nullable |
durationMode
required |
all of PromotionDurationMode | How long the discount runs on a recurring charge. nullable |
durationCycles
required |
integer (int32) | How many billing cycles the discount runs for. nullable |
This request body has no documented fields.
Responses
200 OK
Body: ListResultDtoOfPromotionCodeSuggestionDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
items
required |
array of PromotionCodeSuggestionDto | nullable |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
400 Bad Request
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.