Skip to content

Get a single promotion

GET
/api/managing-entity/{managingEntityIdentifier}/extranet/promotion/{rateModifierIdentifier}
curl --request GET \
--url https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/extranet/promotion/550e8400-e29b-41d4-a716-446655440000 \
--header 'Authorization: Bearer <token>' \
--header 'Wink-Version: 2.0'

Retrieve a specific promotion by its identifier for the given property.

managingEntityIdentifier
required
string format: uuid
""

The unique identifier of the managing entity (property).

Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69
rateModifierIdentifier
required
string format: uuid
""

The unique identifier of the promotion to retrieve.

Example
550e8400-e29b-41d4-a716-446655440000
Wink-Version
string
default: 2.0.0
Allowed values: 2.0

Promotion retrieved successfully.

Media typeapplication/json

A lightweight projection of a special rate (promotion) containing all qualifying conditions and metadata.

object
addOnIdentifiers
Array<string>
advanceBookingRateQualifier

Restrict promotion to users who want to book in advance.

object
maxAdvanceBookingOffset

Maximum days in advance of stay start date when the booking may be made. Set to 0 for no maximum.

integer format: int32
""
minAdvanceBookingOffset

Minimum days in advance of stay start date when the booking must be made. Set to 0 for no minimum.

integer format: int32
""
arrivalDaysOfWeekRateQualifier

Restrict promotion to specific days of the week the guest is arriving.

object
daysOfWeek
required

The days of the week when this rate is available for guests to arrive on

object
disabled

Convenience property to quickly determine if this existing object has any active days enabled.

boolean
fri

Set to true to enable Friday.

boolean
mon

Set to true to enable Monday.

boolean
sat

Set to true to enable Saturday.

boolean
sun

Set to true to enable Sunday.

boolean
thu

Set to true to enable Thursday.

boolean
tue

Set to true to enable Tuesday.

boolean
wed

Set to true to enable Wednesday.

boolean
availableDaysOfWeekRateQualifier

Restrict promotion to specific days of the week the promotion is available.

object
daysOfWeek
required

The days of the week when this rate is available for booking

object
disabled

Convenience property to quickly determine if this existing object has any active days enabled.

boolean
fri

Set to true to enable Friday.

boolean
mon

Set to true to enable Monday.

boolean
sat

Set to true to enable Saturday.

boolean
sun

Set to true to enable Sunday.

boolean
thu

Set to true to enable Thursday.

boolean
tue

Set to true to enable Tuesday.

boolean
wed

Set to true to enable Wednesday.

boolean
blackoutDates
Array<object>

A date range during which a promotion is not available (blackout period).

object
effectiveDate
required

Start date when the promotion is not available (inclusive).

string format: date
""
expireDate
required

End date when the promotion is not available (inclusive).

string format: date
""
cityRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests whose IP geolocation resolves to a specific city.

object
city
required

City details (obtained via geonames) to restrict the promotion by guest location.

object
cityName
required

City name

string
"" >= 1 characters
continentCode
required

Continent code

string
"" >= 1 characters
continentName
required

Continent name

string
"" >= 1 characters
countryIsoCode
required

Country ISO code

string
"" >= 1 characters /^[A-Z]{2}$/
countryName
required

Country name

string
"" >= 1 characters
geoNameId
required

GeoNameLightweight identifiers taken from https://geonames.org.

string
"" >= 1 characters
localeCode
required

Locale code

string
"" >= 1 characters /^[a-z]{2}(-[A-Z]{2})?$/
subDivision1Code

Sub-division 1 code

string
""
subDivision1Name

Sub-division 1 name

string
""
subDivision2Code

Sub-division 2 code

string
""
subDivision2Name

Sub-division 2 name

string
""
timezone
required

Timezone

string
"" >= 1 characters
continentRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests whose IP geolocation resolves to a specific continent.

object
continent
required

Two-letter continent code (e.g. NA, EU, AS)

string
"" >= 1 characters
countryRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests whose IP geolocation resolves to a specific country.

object
country
required

Country (obtained via geonames) to restrict the promotion by guest location.

object
continentCode

Continent code (two-letter ISO)

string
""
continentName

Continent name

string
""
countryIsoCode

Country ISO 3166-1 alpha-2 code

string
"" /^[A-Z]{2}$/
countryName

Country name

string
""
geoNameId

GeoNames identifier

string
""
createdDate

Datetime this record was first created

string | null format: date-time
""
departureDaysOfWeekRateQualifier

Restrict promotion to specific days of the week the guest is departing.

object
daysOfWeek
required

The days of the week when the guest is allowed to depart

object
disabled

Convenience property to quickly determine if this existing object has any active days enabled.

boolean
fri

Set to true to enable Friday.

boolean
mon

Set to true to enable Monday.

boolean
sat

Set to true to enable Saturday.

boolean
sun

Set to true to enable Sunday.

boolean
thu

Set to true to enable Thursday.

boolean
tue

Set to true to enable Tuesday.

boolean
wed

Set to true to enable Wednesday.

boolean
descriptions
required
Array<object>
>= 1 items

Simplified localized description containing text content and its language code.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
description
required

Longer text description

string
"" >= 1 characters <= 2147483647 characters
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
md5ContentHash

The md5 hash of the name, description and language.

string
""
enabled
required

Whether this promotion is enabled or not.

boolean
default: true
geoLocationRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests within a circular geographic area defined by a center point and radius.

object
latitude
required

Latitude of the center point for the geo-location radius check.

number format: double
""
longitude
required

Longitude of the center point for the geo-location radius check.

number format: double
""
radiusInKilometers
required

Radius in kilometers around the center point within which the guest must be located.

integer format: int32
""
hotelIdentifier
required

Unique identifier of the property this promotion belongs to.

string format: uuid
"" >= 1 characters
id
required

Unique identifier for this record.

string format: uuid
"" >= 1 characters
ipRangeRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests whose IP address falls within a specified IPv4 range.

object
endIPRange
required

Ending IP address of the range (inclusive).

string
"" >= 1 characters
startIPRange
required

Starting IP address of the range (inclusive).

string
"" >= 1 characters
lastMinuteRateQualifier

Restrict promotion to users who want to book a room close to the date.

object
seconds
required

Number of seconds before the arrival date when the promotion becomes active (last-minute bookings).

integer format: int64
""
lastUpdate

Datetime this record was last updated

string | null format: date-time
""
lengthOfStayRateQualifier

Restrict promotion to users who want to stay a certain number of days.

object
maxLOS
required

Maximum number of nights. Set to 0 for no maximum.

integer format: int32
""
minLOS
required

Minimum number of nights for promotion to apply. Set to 0 for no minimum.

integer format: int32
""
masterRateIdentifiers
Array<string>
modifier
required

The discount or premium amount and its type (fixed or percentage).

object
fixedAmount

A localized amount, always non-negative. Direction (surcharge vs. discount) is determined by which field this charge is assigned to, not the sign of this value.

object
amount
required

Monetary amount value

number
""
currency
required

ISO 4217 currency code

string
"" >= 1 characters /^[A-Z]{3}$/
percent

A fraction between 0 and 1 (inclusive) representing a percentage of the total stay amount for an early check-in or late check-out, e.g. 0.25 for 25%. Direction (surcharge vs. discount) is determined by which field this charge is assigned to, not the sign of this value.

number format: float
"" <= 1
type
required

When the type is FIXED, fixedAmount is required. When the type is PERCENTAGE, percent is required.

string
""
Allowed values: FIXED PERCENTAGE
name
required

Internal name of promotion.

string
"" >= 1 characters
prepayRateQualifier

Restrict promotion to either prepaid / non-prepaid rates.

object
prepay
required

True to apply only to prepaid rates, false to apply only to pay-at-property rates.

boolean
pricingType
required

This determines whether this discount should be applied per night, per stay or per person - per night

string
""
Allowed values: PER_STAY PER_DAY PER_NIGHT PER_USE PER_HOUR PER_PERSON PER_PERSON_PER_NIGHT PER_PERSON_PER_HOUR PER_ADULT PER_ADULT_PER_NIGHT PER_ADULT_PER_HOUR PER_CHILD PER_CHILD_PER_NIGHT PER_CHILD_PER_HOUR
promotionRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests who enter a specific promotional code at checkout.

object
promotion
required

Promo code that guests must enter to access this promotion.

string
"" >= 1 characters
ratePlanIdentifiers
Array<string>
refundableRateQualifier

Restrict promotion to either refundable / non-refundable rates.

object
refundable
required

True to apply only to refundable rates, false to apply only to non-refundable rates.

boolean
requiredDaysOfWeekRateQualifier

Restrict promotion to specific days of the week the guest has to stay.

object
daysOfWeek
required

The days of the week the user has to stay on to get this rate

object
disabled

Convenience property to quickly determine if this existing object has any active days enabled.

boolean
fri

Set to true to enable Friday.

boolean
mon

Set to true to enable Monday.

boolean
sat

Set to true to enable Saturday.

boolean
sun

Set to true to enable Sunday.

boolean
thu

Set to true to enable Thursday.

boolean
tue

Set to true to enable Tuesday.

boolean
wed

Set to true to enable Wednesday.

boolean
roomRangeRateQualifier

Restrict promotion by restricting to how many rooms the user wants.

object
maxRooms

Maximum number of rooms in the booking. Leave null or 0 for no upper limit.

integer format: int32
""
minRooms
required

Minimum number of rooms in the booking for this promotion to apply.

integer format: int32
"" >= 1
sellDateRateQualifiers
Array<object>

Qualifier that restricts a promotion to bookings made within a specific date window.

object
effectiveDate
required

Promotion is available when the booking is made on or after this date (inclusive).

string format: date
""
expireDate
required

Promotion is available when the booking is made on or before this date (inclusive).

string format: date
""
stayDateRateQualifiers
Array<object>

Rate qualifier that restricts a promotion to guests whose stay falls within a specific date range.

object
effectiveDate
required

Promotion applies when guest’s stay starts on or after this date (inclusive).

string format: date
""
expireDate
required

Promotion applies when guest’s stay starts on or before this date (inclusive).

string format: date
""
timezoneRateQualifiers
Array<object>

Qualifier that restricts a promotion to guests whose system timezone matches the specified IANA timezone name.

object
timezone
required

IANA timezone name of the booker’s location (e.g. Asia/Bangkok).

string
"" >= 1 characters
type
required

Set whether you want the price to go up or down when the rules of this promotion have been satisfied.

string
""
Allowed values: PREMIUM DISCOUNT
version

Optimistic-locking version. Echo this value back as an If-Match request header on a conditional update; the server responds 409 if the record changed in the meantime. Null when this projection has no backing versioned document, in which case no conditional update is possible.

integer | null format: int64
""
key
additional properties
""
Example
{
"addOnIdentifiers": [
"880e8400-e29b-41d4-a716-446655440333"
],
"advanceBookingRateQualifier": {
"maxAdvanceBookingOffset": 365,
"minAdvanceBookingOffset": 7
},
"arrivalDaysOfWeekRateQualifier": {
"daysOfWeek": {
"disabled": true,
"fri": true,
"mon": true,
"sat": true,
"sun": true,
"thu": true,
"tue": true,
"wed": true
}
},
"availableDaysOfWeekRateQualifier": {
"daysOfWeek": {
"disabled": true,
"fri": true,
"mon": true,
"sat": true,
"sun": true,
"thu": true,
"tue": true,
"wed": true
}
},
"blackoutDates": [
{
"effectiveDate": "2026-04-13",
"expireDate": "2026-04-15"
}
],
"cityRateQualifiers": [
{
"city": {
"countryCode": "TH",
"geoNameId": "1609350",
"latitude": 13.7563,
"longitude": 100.5018,
"name": "Bangkok"
}
}
],
"continentRateQualifiers": [
{
"continent": "NA"
}
],
"countryRateQualifiers": [
{
"country": {
"continentCode": "AS",
"geoNameId": "1609350",
"isoAlpha2": "TH",
"isoAlpha3": "THA",
"name": "Thailand"
}
}
],
"createdDate": "2026-01-14T09:30:00",
"departureDaysOfWeekRateQualifier": {
"daysOfWeek": {
"disabled": true,
"fri": true,
"mon": true,
"sat": true,
"sun": true,
"thu": true,
"tue": true,
"wed": true
}
},
"descriptions": [
{
"creator": "USER",
"description": "This is a longer description in the specified language.",
"language": "en",
"md5ContentHash": "d41d8cd98f00b204e9800998ecf8427e"
}
],
"enabled": true,
"geoLocationRateQualifiers": [
{
"latitude": 13.7563,
"longitude": 100.5018,
"radiusInKilometers": 50
}
],
"hotelIdentifier": "e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18",
"id": "b7e4c1a2-3f5d-4e8a-9c21-6f0b5d8e3a47",
"ipRangeRateQualifiers": [
{
"endIPRange": "192.168.1.255",
"startIPRange": "192.168.1.0"
}
],
"lastMinuteRateQualifier": {
"seconds": 1440
},
"lastUpdate": "2026-02-03T16:45:12",
"lengthOfStayRateQualifier": {
"maxLOS": 30,
"minLOS": 3
},
"masterRateIdentifiers": [
"770e8400-e29b-41d4-a716-446655440222"
],
"modifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
},
"name": "Early bird",
"prepayRateQualifier": {
"prepay": true
},
"pricingType": "PER_PERSON_PER_NIGHT",
"promotionRateQualifiers": [
{
"promotion": "EARLYBIRD2026"
}
],
"ratePlanIdentifiers": [
"990e8400-e29b-41d4-a716-446655440444"
],
"refundableRateQualifier": {
"refundable": true
},
"requiredDaysOfWeekRateQualifier": {
"daysOfWeek": {
"disabled": true,
"fri": true,
"mon": true,
"sat": true,
"sun": true,
"thu": true,
"tue": true,
"wed": true
}
},
"roomRangeRateQualifier": {
"maxRooms": 4,
"minRooms": 1
},
"sellDateRateQualifiers": [
{
"effectiveDate": "2026-05-01",
"expireDate": "2026-08-31"
}
],
"stayDateRateQualifiers": [
{
"effectiveDate": "2026-06-01",
"expireDate": "2026-08-31"
}
],
"timezoneRateQualifiers": [
{
"timezone": "Asia/Bangkok"
}
],
"type": "DISCOUNT",
"version": 3
}

Bad Request — missing or invalid request parameter or body

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Unauthorized — authentication is required or the session has expired

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Forbidden — authenticated but lacking the required permission or scope

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Not Found — the requested resource does not exist

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Method Not Allowed — the HTTP verb is not supported on this endpoint

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Unsupported Media Type — use application/json

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Internal Server Error — an unexpected failure occurred on the server

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example

Service Unavailable — a downstream dependency is unreachable

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
key
additional properties
""
Example