Skip to content

Property offers

POST
/api/public/{managingEntityIdentifier}/inventory/property
curl --request POST \
--url https://api.wink.travel/api/public/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/inventory/property \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Wink-Version: 2.0' \
--data '{ "applyCallerLocation": false, "userSession": { "languageCode": "en" } }'

Return one property’s priced room offers for a stay, with the same fields as the Partner API’s Inventory.GetPropertyInventory, using REST-style (camelCase) names and enum values. Identify the property with propertyId or urlName (exactly one of the two; giving neither or both is a 400). A property is served only when it is available and the managing entity in the path has an active sales channel for it; otherwise the answer is a 404, identical to an unknown property. Amounts are int64 minor units of the property’s own currency, declared on the property as currency.currencyCode (currencyExponent decimal places) with currency.fxQuotes giving the exchange rates out of it: USD always, plus each of userSession.quoteCurrencies. Multiply a total by a rate and round once at the target currency’s exponent; rates are for display and never bind a charge. When nothing is available, roomTypes is empty and the currency is still declared. include adds ADD_ON, RESTAURANT, MEETING_ROOM, SPA, ATTRACTION, ACTIVITY, PLACE and ANNOUNCEMENT sections; unknown values are ignored. The stay is limited to 90 nights, 10 rooms, 20 guests per room and a check-in within 730 days. Rates list perkIds only: resolve them via inventory/content?include=PERK. Never cached: Cache-Control is no-store.

managingEntityIdentifier
required
string

Managing entity identifier

Example

d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69
Wink-Version
string
default: 2.0.0
Allowed values: 2.0

The stay, occupancy, language, wanted exchange rates and property to price

Media typeapplication/json

Prices one property for a stay. Carries the same fields as the Partner API GetPropertyInventoryRequest, with REST-style (camelCase) names and enum values.

object
applyCallerLocation

When true, the caller’s IP address is resolved to a location, which decides whether special rates targeted by city, country, continent, timezone or geo-location apply to this stay (IP-range rates are not applied: the address itself is never used). Two callers can then be quoted different prices for the same request. When false or omitted, the price depends only on the request body. If the address cannot be placed, the stay is priced as if this were false. Intended for booking engines that price per visitor.

boolean
imageFormat

Image media type: image/jpeg (default), image/png, image/webp or image/*

string
0 <= 64 characters
include

Sections to price alongside the room offers. Accepted values: ADD_ON, RESTAURANT, MEETING_ROOM, SPA, ATTRACTION, ACTIVITY, PLACE, ANNOUNCEMENT. Case-insensitive; any other value is ignored.

Array<string>
0 <= 32 items
propertyId

Property identifier; give this or urlName, not both. A blank value counts as not given.

string
0 <= 64 characters
urlName

Property url-friendly name; give this or propertyId, not both. A blank value counts as not given.

string
0 <= 200 characters
userSession
required

Dates, occupancy, language and the exchange rates wanted. Required.

object
itinerary
required
object
nights
integer format: int32
room
required
object
adults
integer format: int32
children
Array<object>
0 <= 20 items
object
age
required
integer format: int32
quantity
integer format: int32
quantity
integer format: int32
startDate
required
string
0 <= 64 characters
languageCode

ISO 639-1 language for names and prose. When omitted, en.

string
default: en 0 <= 35 characters
promotionalCodes
Array<string>
0 <= 32 items
quoteCurrencies

ISO 4217 currencies you want an exchange rate into, for example [“EUR”, “JPY”]. At most 10 distinct codes. USD, the platform currency, is always quoted in addition. Amounts are never converted for you: they come back in the property’s own currency, and you multiply by the rate. A code that is not a real currency is a 400.

Array<string>
0 <= 32 items

Example

{
"languageCode": "en"
}

Example

{
"applyCallerLocation": false,
"userSession": {
"languageCode": "en"
}
}

The priced offers. Cache-Control: no-store; no ETag.

Media typeapplication/json

One property’s priced offers for a stay, with the same fields as the Partner API’s GetPropertyInventoryResponse, using REST-style (camelCase) names and enum values. Amounts are int64 minor units of the property’s own currency (property.currency).

object
languageCode
string
property
object
addOns
Array<object>
object
commission
number format: double
commissionable
boolean
inventoryId
string
offers
Array<object>
object
addOnId

The add-on this offer prices: the id of its static content (inventory/content with include=ADD_ON) and of the matching entry in OfferedRate.addOnIds. Name, descriptions and media are there; this offer carries only the price. Present on add-on offers and on venue (restaurant, spa and so on) offers alike, since a venue is priced from its add-ons.

string
discountPercent
number format: double
id
string
mandatory
boolean
maxPax
integer format: int32
minPax
integer format: int32
name
string
offerDetails

Localized promotion copy attached by the price calculator when a discount or surcharge applies to this offer; empty otherwise. Not the promo code, which is ‘promotion’.

Array<object>
object
description
string
languageCode
string
name
string
pricingType

Pricing granularity that determines how a rate or fee is calculated and applied

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
promotion
string
ratePlanIds
Array<string>
roomTypeIds
Array<string>
unitPrice
integer format: int64
unitStrikethroughPrice
integer format: int64
type
string
Allowed values: ADD_ON RESTAURANT MEETING_ROOM SPA ATTRACTION ACTIVITY PLACE ANNOUNCEMENT
ancillaries
Array<object>
object
commission
number format: double
commissionable
boolean
inventoryId
string
offers
Array<object>
object
addOnId

The add-on this offer prices: the id of its static content (inventory/content with include=ADD_ON) and of the matching entry in OfferedRate.addOnIds. Name, descriptions and media are there; this offer carries only the price. Present on add-on offers and on venue (restaurant, spa and so on) offers alike, since a venue is priced from its add-ons.

string
discountPercent
number format: double
id
string
mandatory
boolean
maxPax
integer format: int32
minPax
integer format: int32
name
string
offerDetails

Localized promotion copy attached by the price calculator when a discount or surcharge applies to this offer; empty otherwise. Not the promo code, which is ‘promotion’.

Array<object>
object
description
string
languageCode
string
name
string
pricingType

Pricing granularity that determines how a rate or fee is calculated and applied

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
promotion
string
ratePlanIds
Array<string>
roomTypeIds
Array<string>
unitPrice
integer format: int64
unitStrikethroughPrice
integer format: int64
type
string
Allowed values: ADD_ON RESTAURANT MEETING_ROOM SPA ATTRACTION ACTIVITY PLACE ANNOUNCEMENT
announcements
Array<object>
object
descriptions
Array<object>
object
description
string
languageCode
string
name
string
endDate

Last day the announcement is shown. Absent when showAlways.

string format: date
id
string
showAlways

When true the announcement has no window and applies to every stay; startDate and endDate are then absent.

boolean
showTitle
boolean
startDate

First day the announcement is shown. Absent when showAlways.

string format: date
available
boolean
commission
number format: double
currency
object
currencyCode
string
currencyExponent
integer format: int32
fxQuotes
Array<object>
object
asOf
string
currencyCode
string
rate
string
heroImageUrl
string
lastUpdate
string
propertyId
string
roomTypes
Array<object>
object
heroImageUrl
string
name
string
rates
Array<object>
object
addOnIds
Array<string>
adjustments
Array<object>
object
type
string
Allowed values: EXTRA_ADULT EXTRA_CHILD SINGLE_OCCUPANCY PREMIUM PROMOTION CHANNEL
unitAmount
integer format: int64
adults
integer format: int32
available
boolean
cancellationPolicyId
string
children
integer format: int32
discountPercent
number format: double
endDate
string
meals
object
allInclusive
boolean
allInclusivePlusAlcohol
boolean
breakfast
boolean
brunch
boolean
dinner
boolean
lunch
boolean
offerDetails
Array<object>
object
description
string
languageCode
string
name
string
perkIds

Ids of the perks bundled with this rate. Perks are static content: resolve each id via inventory/content?include=PERK, which lists the property’s perks with their descriptions.

Array<string>
promotionalCodes
Array<string>
quantity
integer format: int32
ratePlanId
string
refundable
boolean
refundableUntilDays
integer format: int32
roomNights
integer format: int32
roomRateId
string
roomTypeAncillaries
Array<object>
object
addOnId

The add-on this offer prices: the id of its static content (inventory/content with include=ADD_ON) and of the matching entry in OfferedRate.addOnIds. Name, descriptions and media are there; this offer carries only the price. Present on add-on offers and on venue (restaurant, spa and so on) offers alike, since a venue is priced from its add-ons.

string
discountPercent
number format: double
id
string
mandatory
boolean
maxPax
integer format: int32
minPax
integer format: int32
name
string
offerDetails

Localized promotion copy attached by the price calculator when a discount or surcharge applies to this offer; empty otherwise. Not the promo code, which is ‘promotion’.

Array<object>
object
description
string
languageCode
string
name
string
pricingType

Pricing granularity that determines how a rate or fee is calculated and applied

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
promotion
string
ratePlanIds
Array<string>
roomTypeIds
Array<string>
unitPrice
integer format: int64
unitStrikethroughPrice
integer format: int64
roomsLeft
integer format: int32
startDate
string
total
integer format: int64
unitExtraCharges
integer format: int64
unitPrice
integer format: int64
unitStrikethroughPrice
integer format: int64
roomTypeId
string
sort
integer format: int32
uniqueId
string
urlName
string

Example

{
"property": {
"addOns": [
{
"offers": [
{
"pricingType": "PER_STAY"
}
],
"type": "ADD_ON"
}
],
"ancillaries": [
{
"offers": [
{
"pricingType": "PER_STAY"
}
],
"type": "ADD_ON"
}
],
"roomTypes": [
{
"rates": [
{
"adjustments": [
{
"type": "EXTRA_ADULT"
}
],
"roomTypeAncillaries": [
{
"pricingType": "PER_STAY"
}
]
}
]
}
]
}
}
Cache-Control
string

Always no-store

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

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

Example generated

{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}