At Booking.com, we want to continuously improve the Connectivity Partner experience. This means we try to build better products and deprecate the older versions. When Booking.com plans to deprecate a feature or a product, you can no longer use it after the communicated date of deprecation. To help facilitate the potential changes you must make, the migration guide tables on this page aim to help you understand what is deprecated and what its (improved) alternative is.
The Payments API now supports version 1.1. To understand the key changes, refer to the Version history documentation.
We are introducing a few improvements to the GET OTA_HotelProductNotif endpoint in version 1.3.
This section covers:
- The deprecation timeline of the v1.0, v1.1, and v1.2
GET OTA_HotelProductNotifendpoints - Comparison between the v1.0 and v1.3
GET OTA_HotelProductNotifendpoint - Comparison between the v1.1 and v1.3
GET OTA_HotelProductNotifendpoint - Comparison between the v1.2 and v1.3
GET OTA_HotelProductNotifendpoint
To use these improvements, specify v1.3 in the header parameter as outlined in the Header parameters section.
This section covers only the differences between earlier versions and v1.3 of the GET OTA_HotelProductNotif endpoint. For more information on the complete functionality of the GET OTA_HotelProductNotif endpoint, see Retrieving active roomrates.
With the launch of v1.3 GET OTA_HotelProductNotif endpoint, we plan to deprecate and sunset the v1.0, v1.1, and v1.2 GET OTA_HotelProductNotif endpoints by the following timeline.
| Upcoming events | When |
|---|---|
Launch v1.3 GET OTA_HotelProductNotif endpoint | 8 June 2026 |
Deprecation v1.0, v1.1, v1.2 GET OTA_HotelProductNotif endpoints | 15 June 2026 |
Sunset v1.0, v1.1, v1.2 GET OTA_HotelProductNotif endpoints | 01 September 2026 |
- After the deprecation date, Booking.com will start sending deprecation warnings in the API response for v1.0, v1.1, and v1.2
GET OTA_HotelProductNotifAPI calls. - After the sunset date, Booking.com will route all unversioned
GET OTA_HotelProductNotifAPI calls to the v1.3 endpoint. Calls explicitly specifying v1.0, v1.1, or v1.2 will return anHTTP 400 Version is not supportederror.
| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | optional | Supports the following values: - 1.0 (current default), 1.1, 1.2: Deprecated versions - 1.3: New version |
| What changed? | v1.0 behaviour | v1.3 behaviour | Notes |
|---|---|---|---|
| Introducing Value adds support | v1.0 did not return value added services in the response. | v1.3 returns value added services with v2 IDs in the response. | |
| Introducing business model information | v1.0 did not return business model information in the response. | v1.3 returns PropertyBusinessModelId and BusinessModel attributes on the <RatePlan> element. | See New response attributes for details. |
| What changed? | v1.1 behaviour | v1.3 behaviour | Notes |
|---|---|---|---|
| Removed Value adds v1 support | v1.1 supported Value adds v1. | v1.3 supports Value adds v2. | For more information on the difference between Value adds v1 and v2, see Difference between version 1.0 and 2.0. |
| Introducing business model information | v1.1 did not return business model information in the response. | v1.3 returns PropertyBusinessModelId and BusinessModel attributes on the <RatePlan> element. | See New response attributes for details. |
| What changed? | v1.2 behaviour | v1.3 behaviour | Notes |
|---|---|---|---|
| Introducing business model information | v1.2 did not return business model information in the response. | v1.3 returns PropertyBusinessModelId and BusinessModel attributes on the <RatePlan> element. | See New response attributes for details. |
If you are migrating from v1.2, no changes are required for Value adds — v1.2 already uses Value adds v2 IDs, which v1.3 also uses.
v1.3 returns the following new attributes on the <RatePlan> element:
| Attribute | Description | Notes |
|---|---|---|
PropertyBusinessModelId | The ID of the business model associated with the rate. | |
BusinessModel | The business model is an enum value that describes the business model. | See the API reference for the list of possible enum values. |
<RatePlan RatePlanCode="11"
PropertyBusinessModelId="12345"
BusinessModel="net_rate"/>Connectivity Partners should:
- Migrate to v1.3 before the sunset date.
- Use the
Accept-Versionheader parameter and specify1.3when calling theGET OTA_HotelProductNotifendpoint. - After the sunset date, calls without a version default to v1.3.
- Calling v1.0, v1.1, or v1.2
GET OTA_HotelProductNotifendpoints explicitly after the sunset date returns anHTTP 400 Version is not supportederror response.
We are introducing a few improvements to the POST OTA_HotelProductNotif endpoint in version 1.3.
This section covers:
- The deprecation timeline of the v1.0
POST OTA_HotelProductNotifendpoint - Comparison between the v1.0 and v1.3
POST OTA_HotelProductNotifendpoint
To use these improvements, specify v1.3 in the header parameter as outlined in the Header parameters section.
This section covers only the difference between v1.0 and v1.3 of the POST OTA_HotelProductNotif endpoint. For more information on the complete functionality of the POST OTA_HotelProductNotif endpoint, see Managing roomrates.
The GET OTA_HotelProductNotif endpoint is soon to launch v1.3. To maintain consistency between GET and POST endpoints, the POST endpoint version was aligned to v1.3.
The following is the expected behaviour when using the different version numbers:
- When calling v1.0, v1.1, or v1.2, the API routes to the v1.0 functionality until the sunset date.
- When calling v1.3, the API routes to the v1.3 functionality.
With the launch of v1.3 OTA_HotelProductNotif endpoint, we plan to deprecate and sunset v1.0 POST OTA_HotelProductNotif endpoint by the following timeline.
| Upcoming events | When |
|---|---|
Launch v1.3 POST OTA_HotelProductNotif endpoint | 28 April 2026 |
Deprecation v1.0 POST OTA_HotelProductNotif endpoint | 15 May 2026 |
Sunset v1.0 POST OTA_HotelProductNotif endpoint | 01 September 2026 |
- After the deprecation date, Booking.com will start sending deprecation warnings in the API response for v1.0
POST OTA_HotelProductNotifAPI calls. - After the sunset date, Booking.com will automatically route unversioned
POST OTA_HotelProductNotifAPI calls to v1.3 endpoint. Calls explicitly specifying v1.0, v1.1, or v1.2 will return anHTTP 400 Version is not supportederror.
| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | Optional | Supports the following values: - 1.0: Current version (default) - 1.3: New version If you specify v1.1 or v1.2, the API routes to the v1.0 functionality until the sunset date. |
Content-Type | Request content type | string | Optional | Must be application/xml |
| What changed? | Old behaviour | New behaviour | Notes |
|---|---|---|---|
Removed target attribute | v1.0 supported target attribute. | v1.3 doesn't support target attribute. | Used to specify whether the request was for testing or production. Instead use test property IDs for testing and production property IDs for production. |
| Removed Value adds v1 support | v1.0 supported Value adds v1 and v2. | v1.3 only supports Value adds v2. | |
| Supports removing mealplans | v1.0 didn't support overlaying mealplans. | v1.3 supports removing mealplans using the syntax <Mealplan/> or <Mealplan MealPlanCode="0">. | |
| Specifying Property-level policies is required | Specifying Property-level policy was optional in v1.0. | Specifying property-level policies is required. | Create policies using the Policies API before attaching them to roomrates. |
| Flexible children prices always processed | v1.0 processed <AdditionalGuestAmounts> only if the include_flexible_children_prices feature was enabled. | v1.3 processes <AdditionalGuestAmounts> regardless of the feature status. |
POST OTA_HotelProductNotif v1.3 includes the following new validations:
ReleaseTimeOfDayStartmust be less thanReleaseTimeOfDayEndand cannot be equal.- Property must have the correct pricing model enabled before using Length of Stay (LOS) or Occupancy-Based Pricing (OBP) for roomrates. For more information, see Pricing models.
Connectivity Partners should:
- Migrate to v1.3 before the sunset date.
- Use the
Accept-Versionheader parameter and specify1.3when calling thePOST OTA_HotelProductNotifendpoint. - After the sunset date, calls without a version default to v1.3.
- Calling v1.0
POST OTA_HotelProductNotifendpoint explicitly after the sunset date returns anHTTP 400 Version is not supportederror response.
The following example shows the error response when calling a deprecated version after the sunset date:
<OTA_HotelProductNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelProductNotifRS.xsd" TimeStamp="2026-05-15T11:52:44+00:00" Target="Production" Version="1.004">
<Errors>
<Error Code="400" ShortText="Version is not supported"/>
</Errors>
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVetc] -->This section lists the possible errors you might encounter while using the v1.3 OTA_HotelProductNotif endpoint.
The following table summarises the error codes for the OTA_HotelProductNotif v1.3 endpoint.
| Error code | Error message | Notes |
|---|---|---|
| 400 | Room ID is missing | Room ID is required for the request. |
| 497 | Room ID '%s' does not belong to the property | The room ID specified does not exist for this property. Retrieve valid room IDs using the rooms endpoint. |
| 403 | Request for forbidden hotel id(s) | Check the property ID and either provide the correct property ID or make sure the machine account credentials have enough permissions. |
| 500 | Internal server error | Booking.com service failed. |
| 400 | RatePlanCode: Attribute is required | The RatePlanCode attribute must be provided in the request. |
| 400 | RoomTypeCode: Attribute is required | The RoomTypeCode attribute must be provided in the request. |
| 400 | ProductNotifType: Attribute is required | The ProductNotifType attribute must be provided in the request. |
| 400 | MealPlanCode: Value should be one of xxfound xx | The MealPlanCode value is invalid. Provide a valid meal plan code. |
| 400 | CancelPenalty: PolicyCode, PolicyId, or PolicyName attribute is required | At least one of PolicyCode, PolicyId, or PolicyName must be specified for the cancellation penalty. |
| 400 | CancelPenalty: missing PolicyName or PolicyId attribute | Either PolicyName or PolicyId must be provided for the cancellation penalty. |
| 400 | PolicyName: cannot be empty. You need to provide either policyName or policyId | The PolicyName cannot be empty. Provide a valid policy name or policy ID. |
| 400 | BookDate: Start attribute is required | The Start attribute is required for the BookDate element. |
| 400 | BookDate: End attribute is required | The End attribute is required for the BookDate element. |
| 400 | Start date should be less than or equal to end date for BookDate element | The Start date must be less than or equal to the End date in the BookDate element. |
| 400 | Value is not a date (ISO 8601 date format: yyyy-mm-dd), found xx | The date format is invalid. Use ISO 8601 format: yyyy-mm-dd. |
| 400 | ActiveWeekday: Day attribute is required | The Day attribute is required for the ActiveWeekday element. |
| 400 | Day: Value is not a dayofweek (Full day of week name), found 'xx' | The Day value must be a valid full day of week name (e.g., MONDAY, TUESDAY). |
| 400 | FCR: You need to set additional guest Amount, Percent or AdultPercent | For Flexible Children Rates (FCR), you must specify one of: Amount, Percent, or AdultPercent. |
| 400 | Time: Invalid format, expected HH:MM or HH | The time format is invalid. Use HH:MM or HH format. |
| 400 | Time: Hour must be 0-23, minute must be 0-59 | Time values must be valid: hours between 0-23 and minutes between 0-59. |
| 400 | Duration: Invalid ISO-8601 duration format | The duration must be in valid ISO-8601 format. |
| 400 | TargetChannel: Value should be one of [ domestic, public, mobile_only, app_only, mobile_app ] | The TargetChannel value is invalid. Use one of the allowed values: domestic, public, mobile_only, app_only, or mobile_app. |
| 400 | PricingType: Value should be one of [ UNSPECIFIED, STANDARD, OBP, LOS, RLO ] | The PricingType value is invalid. Use one of the allowed values: UNSPECIFIED, STANDARD, OBP, LOS, or RLO. |
| 400 | ProductNotifType: Value should be one of [ NEW, OVERLAY, REMOVE ] | The ProductNotifType value is invalid. Use one of the allowed values: NEW, OVERLAY, or REMOVE. |
| 400 | NoShowPolicy Penalty: Value should be one of [ DEFAULT, TOTAL_PRICE ] | The NoShowPolicy Penalty value is invalid. Use one of the allowed values: DEFAULT or TOTAL_PRICE. |
| 400 | ProductStatusType: Value should be one of [ Active, Deactivated ] | The ProductStatusType value is invalid. Use one of the allowed values: Active or Deactivated. |
| 400 | EffectiveFrom: Value should be one of [ AFTER_CANCELLATION_FEE_BEGINS, AFTER_RESERVATION_IS_MADE ] | The EffectiveFrom value is invalid. Use one of the allowed values: AFTER_CANCELLATION_FEE_BEGINS or AFTER_RESERVATION_IS_MADE. |
| 400 | Day: Value should be one of [ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY ] | The Day value is invalid. Use one of the allowed values: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, or SUNDAY. |
| 733 | Hotel is not eligible to create Mobile Rate Plans | The property does not meet the requirements to create mobile rate plans. Contact Booking.com to verify eligibility. |
| 497 | CancelPenalty: conflicting PolicyID, PolicyName attributes defined | You cannot specify both PolicyID and PolicyName attributes in the same request. Use only one attribute to define the cancellation policy. |
| 733 | Defined policy id is not available for this hotel: %s | The policy ID specified does not exist for this property. Verify the policy ID using the policies endpoint. |
| 497 | PolicyName value is not correct: %s | The policy name provided is invalid. Check the correct policy name format. |
| 733 | Defined policy name is not available for this hotel: %s | The policy name specified does not exist for this property. Verify available policy names for the property. |
| 733 | Defined policy code is not available for this hotel: %s | The policy code specified does not exist for this property. Verify available policy codes for the property. |
| 497 | Channel setup is not allowed for net rate products | Net rate products cannot have channel configurations. Remove channel setup from the request. |
| 733 | Net rates must have a non-refundable policy | All net rate products require a non-refundable cancellation policy. Add a non-refundable policy to the request. |
| 497 | Policy overrides are not allowed for net rates | Net rate products do not support policy overrides. Remove policy override configurations from the request. |
| 497 | Value Added Services are not allowed for net rates | Net rate products cannot include value-added services or bundles. Remove bundle configurations from the request. |
| 320 | Bundle validation failed | The bundle configuration provided is invalid. Verify bundle settings and requirements. |
| 733 | MaxOccupancy is not supported for products with LOS (Length of Stay) or OBP (Occupancy-Based Pricing) models | Cannot set RLO (Rate per Length of Occupancy) pricing model when using LOS or OBP pricing. Choose a compatible pricing model. |
| 733 | Cannot set Length of Stay pricing model. Property does not have LOS enabled. Enable LOS at property level using the Change pricing model tool | The property must have LOS pricing enabled at the property level before creating LOS rate plans. Enable LOS pricing via the extranet or contact Booking.com. |
| 733 | Cannot set Occupancy-Based pricing model. Property does not have OBP enabled. Enable OBP at property level using the Change pricing model tool | The property must have OBP pricing enabled at the property level before creating OBP rate plans. Enable OBP pricing via the extranet or contact Booking.com. |
| 497 | Room ID '%s' does not belong to hotel ID '%s' | The room ID specified does not belong to the property ID in the request. Verify the correct room ID for the property. |
| 497 | Request for forbidden hotel id(s) | You don't have access to the requested hotel ID. Verify the correct hotel ID for the property. |
| 44 | Either Percent, Adult Percent or Amount should exist, and only one should be defined | Additional guest pricing must specify exactly one pricing type: Percent, AdultPercent, or Amount. Do not mix multiple pricing types. |
| 44 | Cannot use percentage when setting children prices for OBP or LOS room rates | When setting children prices for OBP or LOS pricing models, use fixed amounts only. Percentage-based pricing is not supported for these models. |
| 497 | Rate ID does not belong to the property. Room ID: %s, Rate Id: %s | The rate ID specified does not exist for this property. Retrieve valid rate IDs using the roomrates endpoint. |
| 733 | Invalid Maximum Advanced res, Minimum value is one hour and maximum is 365 days. Room ID: %s, Rate Id: %s | The maximum advance reservation window must be between 1 hour and 365 days. Adjust the value to be within the allowed range. |
| 733 | Invalid Minimum Advanced res, Minimum value is one hour and maximum is 365 days. Room ID: %s, Rate Id: %s | The minimum advance reservation window must be between 1 hour and 365 days. Adjust the value to be within the allowed range. |
| 733 | Invalid Minimum/Maximum Advanced res, Value of Minimum advanced res should be lower than maximum advanced res. Room ID: %s, Rate Id: %s | The minimum advance reservation value must be less than the maximum advance reservation value. Verify the booking window configuration. |
| 733 | Invalid release time start, the value must represent a quarter hour of the day. Allowed "range" for Time.hours [0, 23] both inclusive. Allowed "values" for Time.minutes {0, 15, 30, 45}. Room ID: %s, Rate Id: %s | Release time start must be in quarter-hour increments. Hours must be 0-23, and minutes must be 0, 15, 30, or 45. |
| 733 | Invalid release time end, the value must represent a quarter hour of the day. Allowed "range" for Time.hours [0, 23] both inclusive. Allowed "values" for Time.minutes {0, 15, 30, 45}. Room ID: %s, Rate Id: %s | Release time end must be in quarter-hour increments. Hours must be 0-23, and minutes must be 0, 15, 30, or 45. |
| 733 | Invalid release time start/end, Value of release time start should be less than release time end. Room ID: %s, Rate Id: %s | The release time start must be earlier than the release time end. Verify the time window configuration. |
| 119 | Occupancy exceeds room capacity. Room ID: %s, Rate Id: %s | The occupancy value specified exceeds the maximum occupancy configured for the room. Reduce the occupancy or update the room's maximum occupancy setting. |
| 119 | Leading occupancy should be a positive number. Room ID: %s, Rate Id: %s | The leading occupancy value must be a positive number greater than zero. |
| 733 | Cannot set pricing model. There are rate relations for the same rate with different pricing models. Room ID: %s, Rate Id: %s | All related rates must use the same pricing model. Verify that parent and child rates have matching pricing models. |
| 150 | Cannot preform action, currency switch is in progress. Please try again later. | A currency change is currently being processed for this property. Wait until the currency switch is complete before making updates. |
| 497 | Invalid HotelProduct RoomType: %s and RatePlan: %s | The combination of room type and rate plan is invalid. Verify that the rate plan is configured for the specified room type. |
We rolled out the following changes to the v1.1 OTA_HotelRatePlanNotif endpoint:
- Supports creating a maximum of 200 active rate plans for a property.
- Doesn’t support Target attribute in the request body.
- Updated error description when a request tries to create a duplicate rate plan name.
For a detailed explanation of the OTA_HotelRatePlanNotif endpoint, see Managing rate plans.
The Messaging API now supports two versions. To understand the key changes and implications when migrating to version 1.2, please refer to the Version 1.2 documentation.
The following section lists the recommended migration approach when using any of the following Property management APIs along with the Content API (HDCN endpoint):
- Property Details API
- Property Settings API
- Contacts API
- Property Facilities API
- Charges API
- Cancellation Policies
The Content API's default overlay behavior treats missing data in updates as intentional omissions. This can accidentally remove data you've set through the Property management APIs if you don't include the same data in subsequent HDCN requests.
To prevent this issue and maintain your new API's data even when it's not included in HDCN updates, Booking.com is introducing a set of domain_update_lock_<api_name> features.
The following table lists the Property management APIs and their corresponding feature names.
If you are migrating from OTA_HotelInvNotif endpoint to Rooms API endpoints, Booking.com currently doesn't support a feature. We therefore recommend you to migrate to Rooms API and the Room facilities and Bathroom within the Facilities API in one go.
This section provides guidance on how to enable the domain update lock feature if you continue to use the Content API (OTA_HotelDescriptiveContentNotif) endpoint along with the Property management APIs.
Keep your existing HDCN request unchanged and continue to send the full HDCN request without omitting any details. When the feature is on we ignore the related updates in HDCN. Note that the request must be valid and pass existing validations.
Test the feature on a per-request basis. For example, when sending the request, attach to your HTTP Header
Featuresvaluedomain_update_lock_charges. You can specify multiple feature names separated by a comma to include multiple features at the same time. For more information, see Testing the features.Once satisfied with the responses from both the
OTA_HotelDescriptiveContentNotifand the Property management API, switch the feature on for all your requests using the Provider Portal.a. Navigate to the Provider Portal. Log in with your credentials. Click Administration -> Feature Management.
b. Enable the features and click Save.
To prevent your Property Details API related data from being accidentally updated via HDCN updates, Booking.com has introduced the domain_update_lock_property_general_info feature. This feature only applies to connectivity partners who have implemented the Property Details API.
Continue sending the full HDCN payload without omitting any information and enable the feature domain_update_lock_property_general_info after you have tested and implemented the Property Details API.
If you enable the feature domain_update_lock_property_general_info, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| >> HotelDescriptiveContent > ID | Specifies a custom property ID. |
| >> HotelDescriptiveContent.HotelName | |
| >> HotelDescriptiveContent > LanguageCode | |
| >> HotelDescriptiveContent > CurrencyCode | |
| >>>>> HotelCategory | |
| >>> ContactInfos | Where ContactProfileType=PhysicalLocation |
| >>>> Position | |
| >>>>> PolicyInfo.CheckInTime | |
| >>>>> PolicyInfo.CheckOutTime | |
| >>> AffiliationInfo > Awards > Award.Rating | |
| >>> HotelInfo.Languages | Contains the language(s) spoken at the property. |
| >> OwnershipManagementInfo > CompanyName.Code | |
| >>>> TotalNumberOfFloors.Number | |
| >>>>> GuestRoomInfo.Quantity |
For testing the features per-request basis before enabling the feature using the Provider Portal, see Testing the features section.
Enable the following features once you have tested and implemented the related sections in the Property Settings API. With the features enabled, you can continue to send the full HDCN payload without omitting any information.
Once you have tested and implemented the full functionality of the Property Settings API, you can enable all the domain_update_lock_settings_* features.
If you enable the feature domain_update_lock_settings_general, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| HotelInfo > TPA_Extensions > PaymentPreferences | |
| TPA_Extensions > GuestInformation | Affecting data related to booker address, curfew, age restrictions |
| TPA_Extensions > LongStayInfo | |
| TPA_Extensions > PricingType |
If you enable the feature domain_update_lock_settings_pets, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN |
|---|
| Policies > Policy > PetsPolicies |
If you enable the feature domain_update_lock_settings_sp, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| TPA_Extensions > StandardPhrases | Including HotelChainBedLinen, SecurityDeposit and Renovation with the rest of all Standard Phrases. |
If you enable the feature domain_update_lock_settings_accepted_pt, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN |
|---|
| TPA_Extensions > AcceptedPayments |
If you enable the feature domain_update_lock_settings_cancel_ex, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN |
|---|
| TPA_Extensions > CancellationGracePeriod > HoursAfterBooking |
| TPA_Extensions > CancellationGracePeriod > WeeksBeforeCheckIn |
If you enable the feature domain_update_lock_settings_age_buckets, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| TPA_Extensions > AgeBuckets | Affecting only AgeBuckets in the Policy. |
If you enable the feature domain_update_lock_settings_cp, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| Policies > Policy > PolicyInfo | Affecting only AcceptedGuestType and MinGuestAge |
| Policies > Policy > FeePolicies | Affecting only Fee Policies with Code that has values: 37, 38, 44 |
If you enable the feature domain_update_lock_settings_invoice, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| ContactInfos > ContactInfo | In HDCN, the contact where ContactProfileType=invoices is used to update invoice details. In the new APIs, this is updated in Property Settings API and invoice contact in Contacts API. |
| TPA_Extensions > InvoiceDetails | Brazil tax info |
If you enable the feature domain_update_lock_settings_french_taxes, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN |
|---|
| TPA_Extensions > PropertyTaxInfo |
If you enable the feature domain_update_lock_settings_rtb, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN |
|---|
| TPA_Extensions > RTB |
For testing the features per-request basis before enabling the feature using the Provider Portal, see Testing the features section.
After fully migrating to Contacts API, you can enable the domain_update_lock_contacts feature to prevent HDCN updating data related to Contacts API. Subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| >>> ContactInfos | - Where ContactProfileType is not PhysicalLocation.- Invoice contact ( ContactProfileType=invoices), has double purpose in HDCN: to update invoice contact itself and update invoice details. This feature will only lock updating the contact itself. To prevent invoice details from being updated please check domain_update_lock_settings_invoice_settings |
For testing the feature per-request basis before enabling the feature using the Provider Portal, see Testing the features section.
Facilities API consists of 3 endpoints (Property Facilities, Room Facilities, Bathrooms).
Property Facilities are part of HDCN endpoint and can be locked using domain_update_lock_facilities feature.
Room facilities and Bathrooms are part of HIN endpoint, therefore, is not affected by this feature.
Once you start managing property facilities in Facilities API, you can choose to enable the feature for locking property facilities data domain updates in HDCN.
Once you enable the feature, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| FacilityInfo -> Restaurants | |
| HotelInfo -> Services | |
| Policies -> FeePolicies -> TPA_Extensions -> InternetFeePolicy | FeePolicy[@Code=5035] |
| Policies -> FeePolicies -> TPA_Extensions -> ParkingFeePolicy | FeePolicy[@Code=5036] |
For testing the feature per-request basis before enabling the feature using the Provider Portal, see Testing the features section.
For more information on Facilities API, see Facilities API overview.
To prevent your Charges data from being accidentally deleted when it's not included in HDCN updates, Booking.com has introduced the domain_update_lock_charges feature.
If you enable the feature domain_update_lock_charges, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN | Notes |
|---|---|
| Policies - > FeePolices | Excluding: - ChildrenPolicy-related FeePolicies: 37, 38, 44 - Parking FeePolicy: 5035 - Internet policy: 5036 |
| Policies - > TaxPolicies |
For testing the feature per-request basis before enabling the feature using the Provider Portal, see Testing the features section.
For more information on Charges API, see Charges API overview.
To prevent your Policy data from being accidentally deleted when it's not included in HDCN updates, Booking.com has introduced the domain_update_lock_cancellation_policies feature.
If you enable the feature domain_update_lock_cancellation_policies, subsequent HDCN calls will not make updates to the following fields.
| Ignored root parameter in HDCN |
|---|
| Policies - > GuaranteePaymentPolicy |
| Policies - > CancelPolicy |
For testing the feature per-request basis before enabling the feature using the Provider Portal, see Testing the features section.
For more information on Policy API, see Policy API overview.
Enabling the feature impacts all the properties that you manage. Before doing so, to test whether the HDCN call works as intended, pass the feature name in the Header of your HDCN request on a per-request basis.
For example:
curl --location 'https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif' \
--header 'Content-Type: text/plain' \
--header 'Authorization: ••••••' \
--header 'Features: domain_update_lock_charges,domain_update_lock_facilities'If you are satisfied with the feature behaviour, then enable it to omit/ignore any Charges and Facilities related data updates provided in subsequent HDCN calls.
When using v1.1 of the derivedprices endpoint, you can see the following change in the API behaviour:
- Setting the same value for both occupancy (in the
personsattribute) and theleading_occupancyreturns anOCCUPANCY_INVALIDerror with the following message:Occupancy should be positive, different than leading_occupancy, and lower than the room's capacity. Make sure to specify an occupancy value which is different from theleading_occupancyvalue.
For a detailed explanation of the /hotels/xml/derivedprices endpoint, see Create or update derived pricing rates.
The Promotions API, as of March 27, 2024, returns the new prefix TB instead of the previously used VR prefix whenever you create or update a promotion. We plan to automatically change the ID of promotions prefixed with VR to a new ID using the getpromotions endpoint, effective from January 31st, 2025. After the change, those promotions will get a new ID prefixed with TB, followed by a unique string.
To ensure all your promotions use the new prefix, complete the following actions before January 31st, 2025:
- Retrieve all existing promotions for a property using the
getpromotionsendpoint and note down the promotions with prefixVR. Make sure to specify thehotel_idandactiveparameters.
Request example
The following example shows how to retrieve all active promotions including those with prefix VR of an existing property using the POST /hotels/xml/getpromotions endpoint.
<request>
<hotel_id>12312</hotel_id>
<active>1</active>
</request>- For each promotion still using the
VRprefix, generate a new promotion ID with theTBprefix. Use thePOST /promotionsendpoint and send only the existing promotion ID in the request body. This will return a new promotion ID with theTBprefix.
Request example
The following example shows how to update the ID of an existing promotion with a VR prefix to get a new promotion ID with a TB prefix using the POST /hotels/xml/promotions endpoint.
<request>
<hotel_id>12312</hotel_id>
<promotion
id="VR123456789">
</promotion>
</request>Sample response
<promotions>
<id>TB437287097257498474</id>
</promotions>
<!-- RUID: [...] -->We have rolled out changes to the way the Reservations API calculates and displays the breakdown of the total price for each booking. You can get the changed Reservations API response by enabling the feature: Payments Clarity Package v2 (payment_clarity_package_v2).
For more information, see the table below:
| Schema | More information |
|---|---|
| When using the OTA schema | See Implementing Payments Clarity Package v2. Also, see Include Payments Clarity Package v2 section in the Retrieving new reservations topic. |
| When using the B.XML schema | See Implementing Payments Clarity Package V2 using B.XML. Also, see Include Payments Clarity Package V2. section in the Retrieving reservations using B.XML topic. |
We are changing how we return error code responses in the Market insights API. To follow the new Online Travel Agency(OTA) standards in processing error codes, the Market Insights API will return OTA error codes in place of error strings.
Instead of a string value in the [Old] Error Code column, the API returns a numeric value as specified in the [New] OTA Error Code column. The API returns the old message values in the Description field.
| HTTP Error Code | [Old] Error Code | [New] OTA Error Code | Message | Description | Reason and Possible Fix |
|---|---|---|---|---|---|
| HTTP 400 Bad Request | FORBIDDEN | 450 | Unable to process. | Can be one of the following: - The property is not eligible for retrieving demand data - The provider is not eligible for retrieving demand data - This account doesn't have access to this property | Can occur due to one of the following reasons: - Incorrect endpoint URL/HTTP method or invalid JSON body. Make sure to use the correct endpoint URL/HTTP method or check if the request has a valid JSON body. |
For more information on the Market insights API, see Analysing Booking.com guests' demand data.
The following improvements are rolled out to the /hotels/csv/los_pricing endpoint v1.1. Version 1.0 was sunset on June 10, 2024 and is no longer available.
The following are the changes implemented in the v1.1 hotels/csv/los_pricing endpoint:
- The occupancy value cannot exceed the value set in the
MaxAdultOccupancy. Specifying the maximum occupancy value (MaxOccupancy) in v 1.0 doesn't return a warning. Whereas, in v 1.1 the endpoint returns a warning. Make sure to specify a value not exceeding theMaxAdultOccupancyvalue. - If the specified price per night exceeds the maximum price (€50000 or equivalent), then the API rejects the price update request. This differs from the previous behaviour: where the API sets the price to 0 and automatically closes the room.
- While setting up pricing for an inventory using rate IDs that are configured as child rates, make sure the request doesn't set values for fields that are configured to inherit from the parent rate plan. For example, if you try to set a price for a child rate while the child rate is configured to follow price, the API returns a partial success response with an error message. To resolve the error, specify a rate plan ID that is either configured as a parent rate, or a child rate that does not have the
FollowsPricerestriction set. - Accepts past date updates up to 1 day in the past (follows Central European Time (CET) timezone). Updates more than 1 day in the past returns a
NOT_A_VALID_DATEerror. - Some existing error messages were improved for better clarity. For a list of all the error message changes see changes to existing error messages.
For a detailed explanation of the hotels/csv/los_pricing endpoint, see Create or update LOS pricing rates.
The following improvements are rolled out to the OTA_HotelRateAmountNotif endpoint. We plan to deprecate v1.0 of the OTA_HotelRateAmountNotif endpoint by 31 January 2024 11:00 am CEST with a planned sunset date of February 14, 2024. For more information on the deprecation timeline, see the Deprecation and sunsetting topic.
The changes outlined in this section are applicable only when using the OTA_HotelRateAmountNotif endpoint with a special header parameter. The following section covers only the changes available in v1.1. For a detailed explanation of the OTA_HotelRateAmountNotif endpoint, see Create or update rates.
When migrating to the v1.1 OTA_HotelRateAmountNotif endpoint, you get:
| Header | Description | Type | Required/ Optional | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | optional | Supports the following values: - 1.1: New version. - 1.0: Previous version. |
POST 'https://supply-xml.booking.com/hotels/ota/OTA_HotelRateAmountNotif' \
--header 'Accept-Version: 1.1' \
--header 'Authorization: Basic THVjLVNhbXVlbMblhWTdlOCghQ29qaU9pNmxlWSpIWXU9OigvS2meQpQ12puj' \
--header 'Content-Type: application/xml'The following example is to set price per rate/room/date for a property using Occupancy based pricing type. Note: If only a few weekdays are marked as true then the API marks the other days as false. However, if some weekdays are marked as false, then the API considers this as sending none as true and therefore marks all weekdays as true.
<OTA_HotelRateAmountNotifRQ>
<RateAmountMessages>
<RateAmountMessage LocatorID="1">
<StatusApplicationControl Sat="true" Sun="true" Start="2023-11-19" End="2023-12-20" RatePlanCode="25278032" InvTypeCode="801185512" />
<Rates>
<Rate MinLOS="1" MaxLOS="1" RateTimeUnit="Day" UnitMultiplier="1" MinGuestApplicable="1" MaxGuestApplicable="4">
<BaseByGuestAmts>
<BaseByGuestAmt AmountBeforeTax="3800" DecimalPlaces="2" NumberOfGuests="4" CurrencyCode="EUR" />
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount AgeBucketID="1" AdditionalGuestNumber="1" Amount="0.01" DecimalPlaces="0" AgeQualifyingCode="8" />
<AdditionalGuestAmount MinAge="2" MaxAge="5" AdditionalGuestNumber="1" Percent="5" DecimalPlaces="0" AgeQualifyingCode="8" />
</AdditionalGuestAmounts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRS.xsd" TimeStamp="2023-10-12T11:34:06-00:00" Target="Production" Version="1.006">
<Success />
</OTA_HotelRateAmountNotifRS><OTA_HotelRateAmountNotifRS>
<Errors>
<Error Code="RATE_NOT_ACTIVE_FOR_ROOM" ShortText="Rate '18858134' is not active for room '28301'" Details="rate_ids: 18134; dates: 2024-04-11,2024-04-12; hotel_ids: 2783; room_ids: 28301;"/>
</Errors>
</OTA_HotelRateAmountNotifRS>
The following are the changes implemented in the v1.1 OTA_HotelRateAmountNotif endpoint:
- If the specified price per night exceeds the maximum price (€50000 or equivalent), then the API rejects the price update request. This differs from the previous behaviour: where the API sets the price to 0 and automatically closes the room.
- While setting up price per rate, room and date combination using rate IDs that are configured as child rates, make sure the request doesn't set values for fields that are configured to inherit from the parent rate plan. For example, if you try to set a price for a child rate while the child rate is configured to follow price, the API returns a partial success response with an error message. To resolve the error, specify a rate plan ID that is either configured as a parent rate, or a child rate that does not have the
FollowsPricerestriction set. - When setting decimal prices, you must use the period decimal separator and not the comma separator. For example, 75.50 is a valid price definition whereas 75,50 returns an HTTP 400 status error.
- Accepts past date updates up to 1 day in the past (follows Central European Time (CET) timezone). Updates more than 1 day in the past returns a
NOT_A_VALID_DATEerror. - It is recommended to use the
NumberOfGuestsattribute instead of theMinGuestApplicableandMaxGuestApplicableattributes.
| Header | Description | Type | Required/ Optional | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | optional | Supports the following values: - 1.1: New version. - 1.0: Previous version. |
POST 'https://supply-xml.booking.com/ota/OTA_HotelRateAmountNotif' \
--header 'Accept-Version: 1.1' \
--header 'Authorization: Basic THVjLVNhbXVlbMblmRAdlOCghQ29qaU9pNmxlWSpIWXU9OigvS2meQpQ12puj' \
--header 'Content-Type: application/xml'With the v1.1 of the OTA_HotelRateAmountNotif endpoint, we have standardised the treatment of the HTTP error codes. The following table captures all the common conditions and the HTTP error codes that the v1.1 endpoint returns.
| If the endpoint encounters | The endpoint returns |
|---|---|
| Incorrect username or password. | HTTP 401 |
| Schema validations such as invalid integer, date. | HTTP 400 |
| All updates with errors. | HTTP 400 |
| At least one successful update. | HTTP 200 in addition to errors or warnings, if any. |
| All updates are unauthorized. | HTTP 403 |
The following table summarises the new warnings for the OTA_HotelRateAmountNotif endpoint.
| New error code | Error message | Notes |
|---|---|---|
| WARN_UNPROCESSED_ADDITIONAL_GUEST | Additional guest updates weren't processed. Please try again later. | |
| WARN_DUPLICATE_DATES | Request contains duplicate dates, we have applied only the first occurrence. |
The following table summarises the new error codes for the OTA_HotelRateAmountNotif endpoint.
| Error code | Error message | Notes |
|---|---|---|
| ROOM_ID_MISSING | Room ID is missing | Room ID is required for the request. |
| ROOM_ELEMENT_REQUIRED | Room is missing | The request contains an empty request body. |
| FROM_DATE_SHOULD_BE_LESS_THAN_TO_DATE | From date should be less than or equal To Date | The From date should be less than or equal to the To date. |
| LOS_PRICING_PASSED_FOR_OBP_RATE | LOS pricing format sent for OBP room-rate | The request contains pricing information in LOS pricing format. However, the property is set to OBP pricing type. |
| LOS_PRICING_PASSED_FOR_DEFAULT_RATE | LOS pricing format sent for Standard room-rate | The request contains pricing information in LOS pricing format. However, the property is set to Standard pricing type. |
| OBP_PRICING_PASSED_FOR_DEFAULT_RATE | OBP format sent for Standard room-rate | The request contains pricing information in OBP pricing format. However, the property is set to Standard pricing type. |
| CANT_SET_PERCENTAGE_FOR_OBP_LOS | Cannot set percentage for OBP/LOS room-rate | The request is trying to send percentage pricing for Flexible Children Rates (FCR) while the roomrate is in OBP or LOS pricing mode. This is not accepted. You can set a fixed amount FCR in case the roomrate is on OBP or LOS pricing model. |
| ADDITIONAL_PRICE_TYPE_CAN_BE_CHILDREN_ONLY | Additional guest type can only be child | For the Type attribute of <additional_guest> element, the only supported value is child. |
| INVALID_CURRENCY_CODE | Supplied currency code '%s' doesn't match the hotel's currency code '%s' for room ID '%s' and rate ID '%s' | Currency code in the request should match the property's currency code. |
| INVALID_USE_OF_SINGLE_OCCUPANCY | Cannot set price for occupancy 1. Please check the room-rate pricing model | Cannot set pricing for single occupancy as the pricing type of the property or roomrate is other than Standard. |
| RATE_EDITABLE_ONLY_ON_EXTRANET | Rate '%s' is only editable on Extranet | You are not allowed to edit the rate via the connectivity API. The property can edit the rate via the Booking.com extranet. |
| ROOM_EDITABLE_ONLY_ON_EXTRANET | Room '%s' is only editable on Extranet | You are not allowed to edit the room via the connectivity API. The property can edit the room via Booking.com extranet. |
| RATE_NOT_ACTIVE_FOR_ROOM | Rate '%s' is not active for room '%s' | Rate is not activated for the selected room. Please check allowed roomrates using the roomrates endpoint. |
| HOTEL_ACCESS_DENIED | Request for forbidden hotel id(s) | Check the property ID and either provide the correct property ID or make sure the machine account credentials have enough permissions. |
| NOT_A_VALID_OCCUPANCY | An occupancy may not be zero, Occupancy '%s' may not be negative, Occupancy '%s' exceeds maximum value $MAX, Occupancy '%s' does not look numeric | Make sure to send pricing information for the correct occupancy level defined in the roomrate for the specific roomtype. |
| NOT_A_VALID_DATE | INVALID_DATE | The supplied date format is invalid. The valid format is yyyy-mm-dd. Or, the supplied date is more than 1 day in the past. |
| PRICE_EXCEEDS_MAX_PRICE | You are setting ‘$price’ for room ID ‘%room_id’, rate ID ‘%rate_id’ and date ‘%date’ which exceeds the maximum allowed price of ‘%max_price’ | You are setting the price for the combination of room, rate and date that exceeds the maximum price set. |
| PRICE_BELOW_MIN_PRICE | You are setting ‘$price’ for room ID ‘%room_id’, rate ID ‘%rate_id’ and date ‘%date’ which is below the minimum allowed price of ‘%min_price’ | You are setting the price for the combination of room, rate and date that goes below the minimum price set. |
| NOT_A_VALID_RELEASE_TIME | Release times should be in the expected format. This is not the case for room ID $room_id, rate ID $rate_id on date '$date' | Make sure to specify the release time in the expected format. |
| TYPE_VIOLATION | Generic error when provided data type is different than specified. | |
| HOTEL_HAS_MISCONFIGURED_UFI | The timezone value is missing for the Ufi associated with hotel ID $hotel_id | Check the property's UFI configuration. |
| INVALID_GUEST_AGE_BAND | Please define a to and from ages that match an age bucket | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| INVALID_GUEST_AGE_BAND_ID | Please define an existing age bucket ID | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| INVALID_ADDITIONAL_PRICES | Prices length cannot be 0 | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| ADDITIONAL_GUEST_PRICE_DATES_OVERLAP | The dates of the guest prices cannot overlap for the same roomId and rateId | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| INVALID_GUEST_AGE_BAND_ID | ageBandId must be 1, 2 or 3 | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| PROVIDED_DATES_OUTSIDE_ALLOWED_RANGE | Please check if date is not in the past or more than 4 years in the future | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| INVALID_ADDITIONAL_GUEST_NUMBER | Invalid additionalGuestNumber. It should be a non negative number up to + MAX_GUEST_NUMBER | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| PRICE_LESS_THAN_0 | There's no support for negative prices | Make sure to specify a price greater than 0. This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| PRICE_GREATER_THAN_10_DIGITS | Max Price Value is + MAX_PRICE | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| PRICE_PERCENTAGE_IS_BIGGER_THAN_100 | Percentage should be between [0.0, 100.0] | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| PRICE_PERCENTAGE_IS_ZERO | There's no support for percentage price zero | This error is related to configurations set for flexible children rates. See also, [managing flexible children rates.] (/connectivity/docs/flexible-children-rates/managing-flexible-children-rates.md) |
| DATE_ELEMENT_MISSING | Date is missing | Date is required for this request. |
| RATE_ID_REQUIRED | Rate Id is required | Rate id is required for this request. |
| OBP_PRICING_PASSED_FOR_RLO_RATE | OBP format sent for RLO room-rate | Room-rate is on RLO pricing model while request is trying to set OBP prices for it. |
| ROOM_ID_INVALID | Room ID '%s' is not valid | Provide a valid Room ID. Make sure to retrieve the correct Room ID using the rooms endpoint. |
| RATE_IS_A_SLAVE_RATE | You cannot set $attribute for a child rate $rate_id, since they are automatically set based on Rate Relations | Cannot update a child rate. |
| CURRENCY_SWITCH_IN_PROGRESS | There is a hotel currency switch currently in progress | You need to wait until hotel switch currency. |
| EXCEEDS_MAX_RELATIVE_RELEASE_TIME | Relative release time {release_time} exceeds max allowed value. This is not the case for room id{room_id}, rate id {rate_id} on date{date} | You are setting release time that exceeds the maximum allowed value. |
| NUMBER_OF_NIGHTS_EXCEEDS_MAX_FOR_LINES | The update has too many nights and only the first 90 nights were considered | You cannot set more than 90 nights. |
| OCCUPANCY_EXCEEDS_MAX_PERSONS | Room '%s' has a maximum occupancy of '%s'. You cannot set price for higher occupancy for rate '%s' | Cannot set pricing for occupancy that is higher than the maximum occupancy. |
| AUTHENTICATION_FAILURE | Authentication failed for the request | The credentials provided in the request was not sufficient for a successful authentication check. To fix a failed authentication request, see the [Authentication page.] (/connectivity/docs/authentication/#troubleshooting) |
| INTERNAL_SERVER_ERROR | Internal server error | Booking.com service failed. |
We have launched v1.1 of the roomrateavailability endpoint.
Using v1.1 roomrateavailability endpoint, you can additionaly view whether a room type is closed. For more information, see Retrieve inventory and rate details.
We rolled out the following improvements to the v1.1 OTA_HotelAvailNotif endpoint:
- To close a room type on a specified date. Even if roomrates are open, the room type is not available for booking.
- Set past date updates up to 1 day in the past (follows Central European Time (CET) timezone). Updates more than 1 day in the past, return a
NOT_A_VALID_DATEerror. - Improved API behaviour.
- Improved error handling and error description.
- Improved latency.
For a detailed explanation of the OTA_HotelAvailNotif endpoint, see Create or update inventory, restrictions.
We rolled out few improvements to the B.XML availability endpoint in version 1.1. Version 1.0 was sunset on January 15, 2024 and is no longer available.
Using the v1.1 B.XML availability endpoint, you get:
- To close a room type on a specified date. Even if roomrates are open, the room type is not available for booking.
- To update for periods in the future and up to one day in the past, in the Central European Time (CET) timezone.
- Accepts past date updates up to 1 day in the past (follows Central European Time (CET) timezone). Updates more than 1 day in the past returns a
NOT_A_VALID_DATEerror. - Improved error handling and error description.
- Improved latency.
For more information, see Create or update inventory, rates and restrictions.
We rolled out few improvements to the B.XML roomrates GET endpoint in version 1.1. Version 1.0 was sunset on January 15, 2024 and is no longer available.
For a detailed explanation of the v1.1 B.XML roomrates GET endpoint, see Retrieving active roomrates.
With the v1.1 B.XML roomrates endpoint, you can:
- Query roomrate details with or without rewritten rate details.
- Retrieve additional response details like flexible children prices, if they are set.
- See improved latency.
Also, in version v1.1:
- To resolve security issues and non-standard system behavior, the v1.1
roomratesendpoint supports the UTF-16 encoding algorithm. - The endpoint returns all responses within the
roomratesobject. - The endpoint doesn't return the
max_childrenattribute anymore. - The endpoint doesn't return the redundant
follows_room_rate_propertiesattribute in the response while retrieving roomrates with rate relations.
We plan to change the way you can specify child occupancy settings for a room type or a unit using the OTA_HotelInvNotif endpoint from 20 March 2023.
This section captures the changes to the functionality for existing providers using the MaxChildOccupancy attribute within the OTA_HotelInvNotif endpoint and for new implementations.
Currently, the OTA_HotelInvNotif endpoint has three fields related to occupancy:
MaxOccupancy: Specifies the maximum number of guests that can physically fit in the room.MaxAdultOccupancy: Specifies the maximum number of adults that can physically fit in the room.MaxChildOccupancy: Specifies the maximum number of children that are eligible for the children rate.
We plan to introduce an additional attribute MaxChildPayableOccupancy under TPA_Extensions to capture the number of children that are eligible for the children rate. Starting March 20, the value in the MaxChildOccupancy attribute no longer reflects the eligibility for children rates and instead specifies the physical child occupancy limit of the room type or unit.
The following changes are expected from March 20, 2023, for providers who are already using the MaxChildOccupancy attribute:
MaxChildOccupancy: Specifies the maximum number of children that can physically fit in the room. There is no longer a limit of 4 children per room type/unit. However, the maximum number of children must be less than theMaxOccupancyvalue. This does not specify the number of children eligible for the children rate.
We will use the existing value as the maximum child occupancy limit.MaxChildPayableOccupancy: Specifies the maximum number of children that are eligible for the children rate. Additional children are charged as adults.
We will copy the existing value ofMaxChildOccupancyattribute to theMaxChildPayableOccupancyattribute. If you have implemented child rates, by copying the value, we can retain the value of children eligible for the child rate.
For all new implementations, the following behaviour is expected from March 20, 2023:
MaxChildOccupancy: Specifies the maximum number of children that can physically fit in the room. There is no longer a limit of 4 children per room type/unit. However, the maximum number of children must be less than theMaxOccupancyvalue.MaxChildPayableOccupancy: Specifies the maximum number of children that are eligible for the children rate. Additional children are charged as adults.
If you do not specify a value, the default value is set to 0 unless this value is updated in the extranet.
For more information on OTA_HotelInvNotif endpoint, see Managing room types.
In line with the planned changes to OTA_HotelInvNotif endpoint, when retrieving property details using the OTA HotelDescriptiveInfo endpoint, the value in the MaxChildOccupancy attribute reflects the maximum number of children that can physically fit in the room.
The following section shows code snippets that specify the maximum occupancy and the number of children eligible for child rates using both the existing and new implementation.
The following code snippet sets the maximum number of children eligible for child rates to 2.
<OTA_HotelInvNotifRQ>
<SellableProducts HotelCode="6314570">
<SellableProduct InvNotifType="Overlay" InvCode="631457019">
<GuestRoom>
<Occupancy MaxOccupancy="6" MaxAdultOccupancy="3" MaxChildOccupancy="2"/>
<Room RoomID="12345" />
<Description>
<Text>Apartment with Garden View</Text>
</Description>
</GuestRoom>
</SellableProduct>
</SellableProducts>
</OTA_HotelInvNotifRQ>The following code snippet sets the maximum number of children that can physically fit in the room type to 3 and the maximum number of children eligible for child rates to 2.
<OTA_HotelInvNotifRQ>
<SellableProducts HotelCode="6314570">
<SellableProduct InvNotifType="Overlay" InvCode="631457019">
<GuestRoom>
<Occupancy MaxOccupancy="6" MaxAdultOccupancy="3" MaxChildOccupancy="3" />
<TPA_Extensions>
<Occupancy MaxChildPayableOccupancy="2" />
</TPA_Extensions>
<Room RoomID="12345" />
<Description>
<Text>Apartment with Garden View</Text>
</Description>
</GuestRoom>
</SellableProduct>
</SellableProducts>
</OTA_HotelInvNotifRQ>We plan to roll out the improvements made to the roomrateavailability endpoint soon.
The changes outlined in this section are applicable only when you use the test endpoint provided by your Connectivity account manager. This section covers only the changes based on the test endpoint. You can refer to the Rates & Availability documentation to know more about the existing functionalities.
This section captures the latest changes to roomrateavailability available on the test endpoint. For a detailed explanation of the existing endpoint, see Retrieving rate and inventory details.
POST
https://supply-xml.booking.com/v1-beta/hotel/roomrateavailability| What changed? | Old behaviour | New behaviour | Notes |
|---|---|---|---|
Data type change for price and price1 | integer | double | |
The number of rows returned when number_of_days is specified | Returns (number_of_days + 1) rows. | Returns number_of_days rows starting from the date specified in start_date (including). | If the start_date is not provided, then the API returns inventory information from the next day of the request till the number_of_days value. |
For example, if you specify number_of_days as 2, the API returns 3 rows starting from the date provided in the start_date. | For example, if you specify number_of_days as 2, the API returns 2 rows starting from the date provided in the start_date. |
<request>
<hotel_id>8011855</hotel_id>
<room_id>801185502</room_id>
<start_date>2022-11-02</start_date>
<number_of_days>2</number_of_days>
</request><result>
<roomrate booked="2" cancelled="0" closed="0" date="2022-11-02" min_contracted_rooms="0" min_contracted_rooms_until="0" rate_id="25279855" room_id="801185502" rooms_to_sell="8"/>
<roomrate booked="2" cancelled="0" closed="0" date="2022-11-03" min_contracted_rooms="0" min_contracted_rooms_until="0" rate_id="25279855" room_id="801185502" rooms_to_sell="8"/>
<roomrate booked="2" cancelled="0" closed="0" date="2022-11-04" min_contracted_rooms="0" min_contracted_rooms_until="0" rate_id="25279855" room_id="801185502" rooms_to_sell="8"/>
</result><result>
<roomrate booked="2" cancelled="0" closed="0" date="2022-11-02" min_contracted_rooms="0" min_contracted_rooms_until="0" rate_id="25279855" room_id="801185502" rooms_to_sell="8"/>
<roomrate booked="2" cancelled="0" closed="0" date="2022-11-03" min_contracted_rooms="0" min_contracted_rooms_until="0" rate_id="25279855" room_id="801185502" rooms_to_sell="8"/>
</result>We plan to deprecate the old Licences API features on February 15, 2022. You can find the features we plan to deprecate next to their alternatives:
| Deprecating CAPI feature | New solution or alternative |
|---|---|
Retrieving licence requirements using the licenses/check_requirements endpoint or the static licences table. | Retrieving the up-to-date licence requirements using the licenses/rules/properties/{property_id} endpoint. Depending on the region of your properties, those requirements differ. |
Sending licence information with the LicenseInfos element using the /ota/OTA_HotelDescriptiveContentNotif and /ota/OTA_HotelInvNotif endpoints. | Sending licence information using the /licenses/data/properties/{property_id} endpoint for property-level licences and the /licenses/data/properties/{property_id}/rooms/{room_id} endpoint for room type-level licences. |
| Retrieving existing licence information using the ota/OTA_HotelDescriptiveInfo endpoint. | Retrieving existing licence information per property using the /licenses/data/properties/{property_id} endpoint endpoint for property-level licence information and the /licenses/data/properties/{property_id}/rooms/{room_id} endpoint for the room type-level licence information. |
We plan to deprecate sending hotelier messages using the Content API on February 15, 2022. You can find the features we plan to deprecate next to their alternatives:
| Deprecating CAPI feature | New solution or alternative |
|---|---|
Sending a hotelier message using the OTA_HotelDescriptiveContentNotif endpoint. | Sending a hotelier message using the /properties/{property_id}/hotelier_messages endpoint. |
Retrieving hotelier messages info using the OTA_HotelDescriptiveInfo endpoint. | Retrieving hotelier messages using the /properties/{property_id}/hotelier_messages endpoint. |
We plan to deprecate the SPO flow, which is creating an independent property without legal entity id, on September 15, 2021. You can find the features we plan to deprecate next to their alternatives:
| Deprecating CAPI feature | New solution or alternative |
|---|---|
Creating an independent property using the OTA_HotelDescriptiveContentNotif endpoint, which refers to creating a property without a legal entity ID. | Switching on the contracting feature in the provider portal that enables you to build a property first using the OTA_HotelDescriptiveContentNotif endpoint by providing a legal contact email under <ContactInfo ContactProfileType="contract">. For more information, see the Contracting API. |
We plan to deprecate sending photos using the HotelDescriptiveContentNotif endpoint on September 15, 2021. You can find the features we plan to deprecate next to their alternatives:
| Deprecating CAPI feature | New solution or alternative |
|---|---|
| Sending and uploading photos using the MultimediaDescriptions element in the the OTA_HotelDescriptiveContentNotif endpoint. | Using the improved Photo API to manage all your photo needs. |