Skip to content

Update rates via keyed list

PUT
/api/managing-entity/{managingEntityIdentifier}/extranet/rate/update
curl --request PUT \
--url https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/extranet/rate/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Wink-Version: 2.0' \
--data '[ { "key": { "date": "2026-01-14", "guestRoomIdentifier": "6f9b4c8d-1e5a-4b3c-9d2e-8a7f0c1b5e43", "hotelIdentifier": "e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18", "ratePlanIdentifier": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51" }, "value": { "closedOnArrival": false, "closedOnDeparture": false, "currencyCode": "THB", "deltaQuantity": 1, "extraChildRateModifier": { "fixedAmount": { "amount": 1250, "currency": "USD" }, "percent": 0.25, "type": "PERCENTAGE" }, "extraPaxRateModifier": { "fixedAmount": { "amount": 1250, "currency": "USD" }, "percent": 0.25, "type": "PERCENTAGE" }, "idempotencyKey": "booking-f4d1c8e5-2b9a:CREATED", "master": true, "maxLengthOfStay": 30, "minLengthOfStay": 2, "quantity": 5, "rate": 450, "singleOccupancyRateModifier": { "fixedAmount": { "amount": 1250, "currency": "USD" }, "percent": 0.25, "type": "PERCENTAGE" } } } ]'

Apply per-day rate and availability changes using an explicit list of keyed daily rate updates. Each update identifies a specific date and master rate, then applies custom changes for that day. This endpoint supports updates to deltaQuantity with idempotency keys to safely adjust inventory over time.

managingEntityIdentifier
required
string

Property identifier (managing entity UUID) owning the rates to update

Example

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

Keyed list of per-day rate updates, each identifying a specific date and master rate with custom nightly rate, availability, and occupancy changes

Media typeapplication/json
Array<object>

Wrapper pairing a rate key with update values for a single daily rate

object
key
required

Rate identification key (hotel, rate plan, room, date)

object
date
required

Date this rate applies to

string format: date

Example

2026-01-14
guestRoomIdentifier
required

Guest room (room type) identifier for this rate

string format: uuid

Example

6f9b4c8d-1e5a-4b3c-9d2e-8a7f0c1b5e43
hotelIdentifier
required

Property identifier that owns this rate

string format: uuid

Example

e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18
ratePlanIdentifier
required

Rate plan identifier for pricing and restrictions

string format: uuid

Example

3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51

Example

{
"date": "2026-01-14",
"guestRoomIdentifier": "6f9b4c8d-1e5a-4b3c-9d2e-8a7f0c1b5e43",
"hotelIdentifier": "e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18",
"ratePlanIdentifier": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51"
}
value
required

Rate update values for this key

object
closedOnArrival

Whether the property is closed on arrival for this date

boolean

Example

false
closedOnDeparture

Whether the property is closed on departure for this date

boolean

Example

false
currencyCode

ISO 4217 currency code for this rate

string
/^[A-Z]{3}$/

Example

THB
deltaQuantity

Relative change to room availability (add/subtract). Use with idempotencyKey to prevent duplicate adjustments.

integer format: int32

Example

1
extraChildRateModifier

Rate modifier (fixed amount or percentage) for extra child guests

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

Example

1250
currency
required

ISO 4217 currency code

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

Example

USD

Example

{
"amount": 1250,
"currency": "USD"
}
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

Example

0.25
type
required

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

string
Allowed values: FIXED PERCENTAGE

Example

PERCENTAGE

Example

{
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
}
extraPaxRateModifier

Rate modifier (fixed amount or percentage) for extra adult guests

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

Example

1250
currency
required

ISO 4217 currency code

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

Example

USD

Example

{
"amount": 1250,
"currency": "USD"
}
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

Example

0.25
type
required

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

string
Allowed values: FIXED PERCENTAGE

Example

PERCENTAGE

Example

{
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
}
idempotencyKey

Idempotency key to prevent duplicate inventory adjustments when using deltaQuantity (e.g., ‘booking123:CREATED’)

string

Example

booking-f4d1c8e5-2b9a:CREATED
master

Whether this rate is available for booking on this date

boolean
default: true

Example

true
maxLengthOfStay

Maximum length of stay allowed for arrivals on this date, in days. -1 means no maximum.

integer format: int32

Example

30
minLengthOfStay

Minimum length of stay required for arrivals on this date, in days. -1 means no minimum.

integer format: int32

Example

2
quantity

Absolute number of available rooms for this date. Set this OR deltaQuantity, not both.

integer format: int32

Example

5
rate

Nightly rate amount (base rate)

number

Example

450
singleOccupancyRateModifier

Rate modifier (fixed amount or percentage) for single occupancy bookings

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

Example

1250
currency
required

ISO 4217 currency code

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

Example

USD

Example

{
"amount": 1250,
"currency": "USD"
}
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

Example

0.25
type
required

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

string
Allowed values: FIXED PERCENTAGE

Example

PERCENTAGE

Example

{
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
}

Example

{
"closedOnArrival": false,
"closedOnDeparture": false,
"currencyCode": "THB",
"deltaQuantity": 1,
"extraChildRateModifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
},
"extraPaxRateModifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
},
"idempotencyKey": "booking-f4d1c8e5-2b9a:CREATED",
"master": true,
"maxLengthOfStay": 30,
"minLengthOfStay": 2,
"quantity": 5,
"rate": 450,
"singleOccupancyRateModifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
}
}

Example

{
"key": {
"date": "2026-01-14",
"guestRoomIdentifier": "6f9b4c8d-1e5a-4b3c-9d2e-8a7f0c1b5e43",
"hotelIdentifier": "e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18",
"ratePlanIdentifier": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51"
},
"value": {
"closedOnArrival": false,
"closedOnDeparture": false,
"currencyCode": "THB",
"deltaQuantity": 1,
"extraChildRateModifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
},
"extraPaxRateModifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
},
"idempotencyKey": "booking-f4d1c8e5-2b9a:CREATED",
"master": true,
"maxLengthOfStay": 30,
"minLengthOfStay": 2,
"quantity": 5,
"rate": 450,
"singleOccupancyRateModifier": {
"fixedAmount": {
"amount": 1250,
"currency": "USD"
},
"percent": 0.25,
"type": "PERCENTAGE"
}
}
}

Per-day rate changes applied; returns the updated Rate documents

Media typeapplication/json
Array<object>

Lightweight projection of a single rate date, used by consumers outside the rate module.

object
available
boolean
closedOnArrival
required

Whether guests cannot check in on this date (Closed on Arrival)

boolean
closedOnDeparture
required

Whether guests cannot check out on this date (Closed on Departure)

boolean
currencyCode
required

ISO 4217 currency code for this rate

string
/^[A-Z]{3}$/
day

Day of the month (1-31)

integer format: int32
extraChildRateModifier

Rate modifier (fixed amount or percentage) for extra child guests

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
extraPaxRateModifier

Rate modifier (fixed amount or percentage) for extra adult guests

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
guestRoomIdentifier
required

Guest room (room type) identifier for this rate

string format: uuid
>= 1 characters
hotelIdentifier
required

Property identifier that owns this daily rate

string format: uuid
>= 1 characters
id

Unique document identifier (UUID)

string format: uuid
master
required

Whether this rate is available for booking on this date

boolean
default: true
maxLengthOfStay

Maximum length of stay (in days) allowed for guests arriving on this date. -1 means no maximum.

integer format: int32
default: -1
minLengthOfStay

Minimum length of stay (in days) required for guests arriving on this date. -1 means no minimum.

integer format: int32
default: -1
month

Month of the year (1-12)

integer format: int32
quantity

Number of available rooms for this date

integer format: int32
0
rate
required

Nightly rate amount in the specified currency

number
ratePlanIdentifier
required

Rate plan identifier for pricing controls and restrictions

string format: uuid
>= 1 characters
rateSource
required

Source of the rate update. NONE indicates property-managed rates; other values indicate channel manager origins.

string
default: NONE >= 1 characters
singleOccupancyRateModifier

Rate modifier (fixed amount or percentage) for single occupancy bookings

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
year

Year in ISO format

integer format: int32

Example

[
{
"closedOnArrival": false,
"closedOnDeparture": false,
"currencyCode": "THB",
"day": 14,
"extraChildRateModifier": {
"percent": 0.15,
"type": "PERCENTAGE"
},
"extraPaxRateModifier": {
"percent": 0.25,
"type": "PERCENTAGE"
},
"guestRoomIdentifier": "4b7e2c9a-6f1d-4a0b-8c3e-5d2f9b1a7c84",
"hotelIdentifier": "7d4f2a1b-3e8c-4b0d-a5f9-1c2e6b4d8f07",
"id": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51",
"master": true,
"maxLengthOfStay": 30,
"minLengthOfStay": 2,
"month": 1,
"quantity": 9,
"rate": 4500,
"ratePlanIdentifier": "9a2d5e8c-1f4b-4c7a-b3e6-2d0f8a5c3e91",
"rateSource": "NONE",
"singleOccupancyRateModifier": {
"percent": 0.8,
"type": "PERCENTAGE"
},
"year": 2026
}
]

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"
}