Patch add-on eligibility
const url = 'https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/extranet/add-on/a3f7c2e1-8b4d-4c7a-a1e2-5f0b6d9e2c84/eligibility';const options = { method: 'PATCH', headers: { 'Wink-Version': '2.0', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"ratePlanIds":["example"],"roomTypeIds":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/extranet/add-on/a3f7c2e1-8b4d-4c7a-a1e2-5f0b6d9e2c84/eligibility \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Wink-Version: 2.0' \ --data '{ "ratePlanIds": [ "example" ], "roomTypeIds": [ "example" ] }'Incrementally updates only the eligibility section (room-type and rate-plan availability restrictions; empty means available to all) of an add-on. Draft-friendly. Send the add-on’s current version as If-Match for optimistic concurrency. Requires INVENTORY:WRITE.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Property (managing entity) identifier — the add-on must belong to this property.
Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69Add-on identifier to patch.
Example
a3f7c2e1-8b4d-4c7a-a1e2-5f0b6d9e2c84Header Parameters
Section titled “Header Parameters”The add-on’s last-seen version, for optimistic concurrency. Optional; a stale value is rejected with 409. Accepts a bare version (3), a quoted entity-tag (“3”), W/“3”, or *.
Request Bodyrequired
Section titled “Request Bodyrequired”Eligibility section: room-type / rate-plan availability restrictions (empty means available to all).
Request payload for patching the eligibility section of an add-on.
object
Rate plan identifiers this add-on is restricted to. EMPTY MEANS AVAILABLE TO ALL rate plans.
Room type identifiers this add-on is restricted to. EMPTY MEANS AVAILABLE TO ALL room types.
Example generated
{ "ratePlanIds": [ "example" ], "roomTypeIds": [ "example" ]}Responses
Section titled “Responses”Add-on eligibility patched successfully.
Lightweight representation of an add-on for use in search results and booking flows
object
Modify add-on availability with this flag.
End month and day or date for which the add-on is available (seasonal availability).
Start month and day or date for which the add-on is available (seasonal availability).
Base price of booking this add-on.
object
Monetary amount value
ISO 4217 currency code
Level 1 taxonomy: property-level (ADD_ON) or a specific venue type. Null is treated as ADD_ON.
Level 2 taxonomy: the ids of the specific venues of the category this add-on belongs to. EMPTY MEANS ALL items of the category. Only meaningful when category is venue-scoped.
Closing time of the add-on (if applicable). Leave empty if always available.
Indicate whether sales channels receive commission for selling this add-on.
Datetime this record was first created
Optional list of date ranges restricting add-on availability to specific periods. Empty means available on every date.
object
Retrieve data range ending with and including this end date
Retrieve data range starting with and including this start date
Indicates which days this add-on is open.
object
Convenience property to quickly determine if this existing object has any active days enabled.
Set to true to enable Friday.
Set to true to enable Monday.
Set to true to enable Saturday.
Set to true to enable Sunday.
Set to true to enable Thursday.
Set to true to enable Tuesday.
Set to true to enable Wednesday.
Localized descriptions describing this add-on.
Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.
object
Whether it was user or system generated.
Longer text description
Indicate which language this description is written in.
The md5 hash of the name, description and language.
Use as title or short text description
If this add-on is sold at a discount, the discounted selling price.
object
Monetary amount value
ISO 4217 currency code
Indicates whether this add-on is featured.
Hotel identifier.
Unique identifier for this record.
Datetime this record was last updated
Make this add-on mandatory for all guests by enabling this flag.
Maximum group size this add-on can be booked for.
Minimum group size this add-on can be booked for.
List of images / videos of this add-on.
Multimedia that contains less information than Multimedia object
object
Media angle
Whether image has attribution properties
object
Name of contributor
URL to contributor
Supported OTA specification PIC code. See OTA geoname data
Localized media captions to give user some context about where this media was taken.
Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.
object
Whether it was user or system generated.
Longer text description
Indicate which language this description is written in.
The md5 hash of the name, description and language.
Use as title or short text description
Media height in pixels.
Use this identifier to communicate with Cloudinary.
True if media width is greater or equal to height
Associate this media with a specific lifestyle type. A user searching and filtering inventory based on lifestyles can be shown relevant media first.
Document identifier
Instead of deleting the media, choose to un-publish it instead for later re-use. Could be you keep seasonal images of the property.
Sort allows you to control how you want to sort this record in a list of media records.
Currently ONLY using Cloudinary to store all image / video assets.
Whether Cloudinary media is a VIDEO or IMAGE.
Media width in pixels.
Internal name of the add-on.
Opening time of the add-on (if applicable). Leave empty if always available.
How this add-on should be priced.
Publish lifecycle state: DRAFT (incomplete, not announced) or PUBLISHED (complete/live).
Rate plan identifiers this add-on is restricted to. EMPTY MEANS AVAILABLE TO ALL rate plans.
Whether this add-on is an appointment that must be booked into a specific time slot. Independent of pricingType.
Room type identifiers this add-on is restricted to. EMPTY MEANS AVAILABLE TO ALL room types.
Sales channels this add-on is offered on. Empty means offered on none.
Use this property to sort an add-on in a list of add-ons.
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.
Example
{ "active": true, "applicableEnd": "1970-12-1", "applicableStart": "1970-1-1", "basePrice": { "amount": 1250, "currency": "USD" }, "category": "ADD_ON", "closes": "17:30", "commissionable": true, "createdDate": "2026-01-14T09:30:00", "dateRanges": [ { "endDate": "2020-12-31", "startDate": "2020-12-24" } ], "daysOfWeek": { "disabled": true, "fri": true, "mon": true, "sat": true, "sun": true, "thu": true, "tue": true, "wed": true }, "descriptions": [ { "creator": "USER", "description": "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.", "language": "en", "md5ContentHash": "a3f1c8e2d74b60912a5c3e9b1d7f4e82", "name": "Deluxe River View Suite" } ], "discountedPrice": { "amount": 1250, "currency": "USD" }, "featuredInd": false, "hotelIdentifier": "e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18", "id": "b7e4c1a2-3f5d-4e8a-9c21-6f0b5d8e3a47", "lastUpdate": "2026-02-03T16:45:12", "mandatory": true, "maxPax": 4, "minPax": 1, "multimedias": [ { "angle": null, "attribution": [], "category": "2", "descriptions": [ { "description": "Elegant lobby of The Siam Residences", "language": "en", "title": "Lobby Entrance" } ], "height": 1600, "identifier": "the-siam-residences/lobby-entrance", "isLandscape": true, "lifestyleType": null, "multimediaIdentifier": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51", "published": true, "sort": 10, "source": "CLOUDINARY", "type": "IMAGE", "width": 2560 } ], "name": "Airport Pickup", "opens": "09:00", "pricingType": "PER_USE", "publishStatus": "PUBLISHED", "requiresTimeSlot": false, "sort": 1, "version": 3}Bad Request — missing or invalid request parameter or body
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
Example generated
{ "detail": "example", "instance": "https://example.com", "properties": { "additionalProperty": "example" }, "status": 1, "title": "example", "type": "https://example.com"}