GetRoomTypeRatePeriod
const url = 'https://example.com/wink.partner.v1.Inventory/GetRoomTypeRatePeriod';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"propertyId":"example","startDate":"example","periodInDays":1,"adults":1,"languageCode":"example","quoteCurrencies":["example"],"ratePlanTypes":["RATE_PLAN_AUDIENCE_UNSPECIFIED"],"refundableOnly":true,"breakfastIncludedOnly":true}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/wink.partner.v1.Inventory/GetRoomTypeRatePeriod \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "propertyId": "example", "startDate": "example", "periodInDays": 1, "adults": 1, "languageCode": "example", "quoteCurrencies": [ "example" ], "ratePlanTypes": [ "RATE_PLAN_AUDIENCE_UNSPECIFIED" ], "refundableOnly": true, "breakfastIncludedOnly": true }'Room type rate calendar
For every date range of a calendar, the best available offer for each room type, cheapest first, so you
can show “from” prices per room type. You choose which kinds of rate plan are considered with
rate_plan_types, and can restrict the result to refundable offers or offers that include breakfast.
A room type with no qualifying available offer in a range is left out of that range.
Results are cached for up to 120 seconds; a change to a rate or rate plan normally shows sooner, but it can take longer to appear in some environments.
The response can be large for big properties: it carries one offer per room type per date range, and a
30-day calendar has up to 900 ranges. gRPC clients commonly default to a 4 MiB receive limit; callers with
many room types should request a shorter period_in_days or raise their client receive limit.
Billed as period_in_days hotel-day units.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Request for GetRoomTypeRatePeriod.
object
Stable property identifier. Required.
First check-in date to price, ISO-8601 “YYYY-MM-DD”. Required.
How many days forward to price from start_date. Between 2 and 30. Required.
This is also the billed unit count: a 30-day calendar costs 30 hotel-day units.
Adults per room, between 1 and 10. Omit it to take the default of 2.
ISO 639-1 language for the room type and rate plan names, e.g. “en”. Required.
ISO 4217 currencies you want an exchange rate into – same meaning and limits as
UserSession.quote_currencies. The platform currency (USD) is always quoted as well.
Which kinds of rate plan to consider. A rate plan is considered when it carries at least one of these.
Omit it, or send only RATE_PLAN_AUDIENCE_UNSPECIFIED, to consider public rate plans only.
RATE_PLAN_AUDIENCE_UNSPECIFIED mixed into a longer list is ignored.
A rate plan is returned only when the property sells it through your account’s sales channel AND it
carries at least one of the kinds you asked for. Asking for a kind (for example
RATE_PLAN_AUDIENCE_MEMBER) that the property has no rate plans of, or has not made available to your
channel, returns nothing for it – an empty result, not an error.
When true, only refundable offers are considered.
When true, only offers that include breakfast are considered.
Responses
Section titled “Responses”The RPC completed with gRPC status OK.
Response for GetRoomTypeRatePeriod.
object
The room type rate calendar.
object
Stable property identifier.
The property’s name (not localized).
Adults every offer in this calendar is priced for – the occupancy you asked for, stated once here.
The currency every RoomTypeRateOffer.total is in, and the exchange rates out of it.
object
ISO 4217 code the property’s amounts are denominated in, e.g. “THB”.
How many decimal places currency_code has: 2 for THB and USD, 0 for JPY, KRW and VND. Amounts are
integers in MINOR UNITS, so the real value is amount / 10^currency_exponent. Published rather than
assumed because a fixed divide-by-100 is wrong for a real slice of Wink’s inventory – a JPY stay priced
at 15000 is ¥15,000, not ¥150.
Exchange rates out of currency_code: the platform currency first, then each of
user_session.quote_currencies in the order you sent them, each once. A requested currency with no usable rate is
omitted.
Find a rate by its currency_code, never by position: when the platform rate is missing, the first entry is
a requested currency, not USD.
In a page of search results, a property whose currency has no usable platform rate is returned with the quotes
that do exist, possibly none, rather than failing the whole page: its amounts are in currency_code and are
correct either way, so treat an empty or short list as “no rate to convert with”, never as a zero rate. The
calls that price ONE property or a batch of them (Inventory.GetPropertyInventory, Inventory.GetRatePeriod and
Inventory.ListPropertyInventory, which is atomic) return NOT_FOUND instead.
An exchange rate from a property’s currency into one other currency.
object
ISO 4217 code this rate converts INTO.
Units of currency_code per ONE unit of the property’s currency, as a decimal string such as “0.0275”.
A string rather than a double so the digits you receive are exactly the digits we hold. Always positive.
When this rate was recorded, ISO-8601 in UTC, e.g. “2026-10-19T11:00:00Z”.
The check-in/check-out date ranges that have at least one qualifying offer, ordered by check-in date and
then by number of nights. A range with no qualifying offer is omitted, so key each range on
start_date/end_date and never index by position.
One check-in/check-out date range and the best offer for each room type that can be booked in it.
object
Check-in date, ISO-8601 “YYYY-MM-DD”.
Check-out date, ISO-8601 “YYYY-MM-DD”.
Nights covered.
The best offer for each room type that has one, cheapest first. The first entry is the best offer across all room types. Never empty for a returned range: a range with no qualifying offer is omitted.
The best qualifying offer for one room type in one date range.
object
Identifier of the room type this offer is for. Join to Content for its description, images and amenities.
The room type’s name, in the requested language, falling back to English and then to the room type’s default name.
Identifier of the rate plan that produced this offer.
The rate plan’s name as configured by the property (not localized).
The kinds of rate plan this offer is sold as.
True if it can be cancelled without charge before the policy’s deadline.
Days from TODAY until free cancellation closes; -1 when not refundable, 0 when it closes today. Same
calculation as RoomRate.refundable_until_days.
True if breakfast is included.
What the guest pays for this offer, in minor units of RoomTypeRatePeriod.currency, the property’s own
currency.
ISO 639-1 language the names in this response are in.
Example
{ "period": { "ranges": [ { "offers": [ { "ratePlanAudiences": [ "RATE_PLAN_AUDIENCE_UNSPECIFIED" ] } ] } ] }}