Create a property¶
Use /ota/OTA_HotelDescriptiveContentNotif to create a property's "skeleton", containing the property's location details, policies, contact details, and more.
To complete this task, you need:
- legal entity ID
- Property Class Type Code
- property latitude/longitude coordinates
- property address
Each property must have at least one cancellation policy
When creating a property using the OTA_HotelDescriptiveContentNotif
endpoint, if you do not specify the policy details, the API creates a fully-flexible policy (PolicyCode=152
) as the default policy for the property.
Request¶
HTTP request¶
https://supply-xml.booking.com/hotels/ota/OTA_HotelDescriptiveContentNotif
Naming a property¶
When naming a property, ensure that the name:
- Has a length between 3 and 255 characters.
- Does not contain a phone number (or no more than five consecutive numbers).
- Only contains letters (any language), numbers, or the following symbols: ! # & ` ' " - ,
- Is not all in uppercase.
Certain words are blacklisted
If a name is rejected, the property name could contain a blacklisted word. If you do not think this is the case, reach out to our Customer Support.
Copying fees forward¶
When a property has set up a tax or fee change at a future moment in time in the extranet, Booking.com systems automatically copy the other existing fees to the future period. Looking at the table below, this means that at the future moment in time the updated fees will become effective.
Fee | Now | Future moment in time (for example, 01/01/2023) |
---|---|---|
VAT | 8% | 9% |
Cleaning fee | €50 per stay | €50 per stay |
City Tax | €5 per day | €5 per day |
However, if you make changes via the Content API (/ota/OTA_HotelDescriptiveContentNotif
endpoint) after the future fee change was set up, Booking.com systems did not automatically copy the updated fees to the future period. Looking at the table, you can see that when you change the cleaning fee value via the Content API, it does not get copied forward to the future moment in time.
Fee | Now | Future moment in time (for example, 01/01/2023) |
---|---|---|
VAT | 8% | 9% |
Cleaning fee | €70 per stay | €50 per stay |
City Tax | €5 per day | €5 per day |
To mitigate this behavior, the Content API now has a setting (TPA_Extensions
> OverwriteFutureFees
) with a default setting (Boolean) to copy any fee changes to the future moment in time. If you want to turn of this behavior, you can send a request with setting the value to 0
.
Partial example¶
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ Target="Production">
<HotelDescriptiveContents>
<HotelDescriptiveContent
HotelName="The Best Hotel"
LanguageCode="en"
HotelDescriptiveContentNotifType="Overlay">
<Policies>
<Policy>
<PolicyInfo CheckInTime="16:00" CheckOutTime="11:00" UsualStayFreeCutoffAge="12" UsualStayFreeChildPerAdult="1" />
<PetsPolicies PetsAllowedCode="Pets By Arrangements">
<PetsPolicy NonRefundableFee="free" />
</PetsPolicies>
<CancelPolicy>
<CancelPenalty PolicyCode="43" />
<CancelPenalty PolicyCode="1" />
</CancelPolicy>
<GuaranteePaymentPolicy>
<GuaranteePayment PolicyCode="43" />
<GuaranteePayment PolicyCode="1" />
</GuaranteePaymentPolicy>
<TaxPolicies>
<TaxPolicy Code="36" Percent="900" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="12" />
</TaxPolicies>
<FeePolicies>
<FeePolicy Code="5009" Amount="7000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
<FeePolicy Code="3" Amount="500" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" />
<FeePolicy Code="5036" Amount="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" />
</FeePolicies>
<TPA_Extensions OverwriteFutureFees='1' />
</Policy>
</Policies>
</HotelDescriptiveContent>
</HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
Copying fees forward¶
When a property has set up a tax or fee change at a future moment in time in the extranet, Booking.com systems automatically copy the other existing fees to the future period. Looking at the table below, this means that at the future moment in time the updated fees will become effective.
Fee | Now | Future moment in time (for example, 01/01/2023) |
---|---|---|
VAT | 8% | 9% |
Cleaning fee | €50 per stay | €50 per stay |
City Tax | €5 per day | €5 per day |
However, if you make changes via the Content API (/ota/OTA_HotelDescriptiveContentNotif
endpoint) after the future fee change was set up, Booking.com systems did not automatically copy the updated fees to the future period. Looking at the table, you can see that when you change the cleaning fee value via the Content API, it does not get copied forward to the future moment in time.
Fee | Now | Future moment in time (for example, 01/01/2023) |
---|---|---|
VAT | 8% | 9% |
Cleaning fee | €70 per stay | €50 per stay |
City Tax | €5 per day | €5 per day |
To mitigate this behavior, the Content API now has a setting (TPA_Extensions
> OverwriteFutureFees
) with a default setting (1
) to copy any fee changes to the future moment in time. If you want to turn off this behavior, you can send a request with setting the value to 0
.
Partial example¶
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ Target="Production">
<HotelDescriptiveContents>
<HotelDescriptiveContent
HotelName="The Best Hotel"
LanguageCode="en"
HotelDescriptiveContentNotifType="Overlay">
<Policies>
<Policy>
<PolicyInfo CheckInTime="16:00" CheckOutTime="11:00" UsualStayFreeCutoffAge="12" UsualStayFreeChildPerAdult="1" />
<PetsPolicies PetsAllowedCode="Pets By Arrangements">
<PetsPolicy NonRefundableFee="free" />
</PetsPolicies>
<CancelPolicy>
<CancelPenalty PolicyCode="43" />
<CancelPenalty PolicyCode="1" />
</CancelPolicy>
<GuaranteePaymentPolicy>
<GuaranteePayment PolicyCode="43" />
<GuaranteePayment PolicyCode="1" />
</GuaranteePaymentPolicy>
<TaxPolicies>
<TaxPolicy Code="36" Percent="900" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="12" />
</TaxPolicies>
<FeePolicies>
<FeePolicy Code="5009" Amount="7000" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
<FeePolicy Code="3" Amount="500" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" />
<FeePolicy Code="5036" Amount="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" />
</FeePolicies>
<TPA_Extensions OverwriteFutureFees='1' />
</Policy>
</Policies>
</HotelDescriptiveContent>
</HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
Request body¶
Provide an OTA_HotelDescriptiveContentNotifRQ object in the request body. Example:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRQ
xmlns="http://www.opentravel.org/OTA/2003/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
PrimaryLangID="en-us"
EchoToken="GUID"
TimeStamp="2015-06-09T09:30:47Z"
xsi:schemaLocation="http://www.opentravel.org/2014B/OTA_HotelDescriptiveContentNotifRQ.xsd"
id="OTA2014B"
Version="8.0"
Target="Production">
<HotelDescriptiveContents>
<HotelDescriptiveContent
HotelName="The Best Hotel"
LanguageCode="en"
HotelDescriptiveContentNotifType="New">
<ContactInfos>
<ContactInfo ContactProfileType="PhysicalLocation">
<Addresses>
<Address>
<!-- Replace the {PlaceHolders} in the following lines! -->
<AddressLine>{AddressLine}</AddressLine>
<CityName>{CityName}</CityName>
<PostalCode>{PostalCode}</PostalCode>
<CountryName>{CountryCode}</CountryName>
</Address>
</Addresses>
</ContactInfo>
<ContactInfo ContactProfileType="general">
<Names>
<Name Language="en">
<GivenName>Jane</GivenName>
<Surname>Doe</Surname>
</Name>
</Names>
<Emails>
<Email>noreply@booking.com</Email>
</Emails>
<Phones>
<Phone PhoneNumber="+31666666666" PhoneTechType="5" />
</Phones>
</ContactInfo>
<ContactInfo ContactProfileType="invoices">
<Names>
<Name Language="en">
<GivenName>Sam</GivenName>
<Surname>Xu</Surname>
</Name>
</Names>
<Addresses>
<Address>
<AddressLine>Herengracht 597</AddressLine>
<CityName>Amsterdam</CityName>
<PostalCode>1017 CE</PostalCode>
<StateProv StateCode="NH" />
<CountryName>NL</CountryName>
</Address>
</Addresses>
<Phones>
<Phone PhoneNumber="+31207777777" PhoneTechType="1" Extension="30" />
</Phones>
</ContactInfo>
</ContactInfos>
<HotelInfo>
<CategoryCodes>
<GuestRoomInfo Quantity="100" />
<!-- Replace the {PlaceHolder} in the following line! -->
<HotelCategory ExistsCode="1" Code="{PropertyClassTypeCode}" />
</CategoryCodes>
<!-- Replace the {PlaceHolder} in the following line! -->
<Position Latitude="{Latitude}" Longitude="{Longitude}" />
<OwnershipManagementInfos>
<OwnershipManagementInfo>
<!-- Replace the {PlaceHolder} in the following line! -->
<CompanyName Code="{LegalEntityID}" />
</OwnershipManagementInfo>
</OwnershipManagementInfos>
</HotelInfo>
<FacilityInfo>
<GuestRooms>
<GuestRoom>
<Amenities>
<Amenity RoomAmenityCode="228" />
</Amenities>
</GuestRoom>
</GuestRooms>
<Restaurants>
<Restaurant RestaurantName='Antekoje' OfferLunch='1' OfferDinner='1'>
<CuisineCodes>
<CuisineCode Code='51'/>
<CuisineCode Code='49'/>
</CuisineCodes>
<OperationSchedules>
<OperationSchedule>
<OperationTimes>
<OperationTime Mon='1' Tue='1' Weds='1' Thur='1' Fri='1' Sat='1' Sun='1' Start='17:30' End='22:00' />
<OperationTime Sat='1' Sun='1' Start='11:00' End='14:30' />
</OperationTimes>
</OperationSchedule>
</OperationSchedules>
<Features>
<Feature DescriptiveText='a la carte'/>
<Feature DescriptiveText='buffet'/>
<Feature DescriptiveText='accepts reservations'/>
<Feature DescriptiveText='outdoor seating'/>
</Features>
<TPA_Extensions>
<Ambiances>
<Ambiance Name='modern'/>
</Ambiances>
<DietaryOptions>
<DietaryOption Name='gluten free'/>
<DietaryOption Name='vegan'/>
</DietaryOptions>
</TPA_Extensions>
</Restaurant>
</Restaurants>
</FacilityInfo>
<Policies>
<Policy>
<PolicyInfo CheckInTime="16:00" CheckOutTime="11:00" UsualStayFreeCutoffAge="12" UsualStayFreeChildPerAdult="1" />
<PetsPolicies PetsAllowedCode="Pets By Arrangements">
<PetsPolicy NonRefundableFee="free" />
</PetsPolicies>
<CancelPolicy>
<CancelPenalty PolicyCode="43" />
<CancelPenalty PolicyCode="1" />
</CancelPolicy>
<GuaranteePaymentPolicy>
<GuaranteePayment PolicyCode="43" />
<GuaranteePayment PolicyCode="1" />
</GuaranteePaymentPolicy>
<TaxPolicies>
<TaxPolicy Code="36" Percent="1800" DecimalPlaces="2" Type="Inclusive" ChargeFrequency="12" />
<TaxPolicy Code="3" Percent="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="21" />
</TaxPolicies>
<FeePolicies>
<FeePolicy Code="5012" Amount="1600" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
<FeePolicy Code="5013" Amount="1800" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="12" />
<FeePolicy Code="5035" Amount="500" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="1" >
<TPA_Extensions>
<InternetFeePolicy InternetType="wifi" InternetCoverage="public_areas" />
</TPA_Extensions>
</FeePolicy>
<FeePolicy Code="5036" Amount="350" DecimalPlaces="2" Type="Exclusive" ChargeFrequency="2" >
<TPA_Extensions>
<ParkingFeePolicy ParkingType="location_nearby" ParkingReservation="needed" ParkingProperty="private"/>
</TPA_Extensions>
</FeePolicy>
</FeePolicies>
</Policy>
</Policies>
</HotelDescriptiveContent>
</HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
Response body example¶
The following is a successful response body example:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelDescriptiveContentNotifRS 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_HotelDescriptiveContentNotifRS.xsd" TimeStamp="2015-07-31T12:36:23-00:00" Target="Test" Version="3.000">
<UniqueID Type="10" ID="{PropertyID}" />
<Success />
</OTA_HotelDescriptiveContentNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->
Response body parameters¶
The following table describes the response elements:
Element | Description | Type | Notes |
---|---|---|---|
OTA_HotelDescriptiveContentNotifRS |
Contains the response data. | object | |
> warnings |
Contains potential warnings. These can help you improve your requests. | array | |
> errors |
Contains potential errors. These can help you understand what went wrong with your request. | array | |
> success |
Indicates the success of the request. | object | |
ruid |
Specifies the unique id of the request. | string | You can send this id to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
Error codes¶
BuildHotel error¶
If you receive the BuildHotel error
, try to resend the same building request again until you receive a success response. The system excludes properties built with the BuildHotel error, which are automatically set to Closed
(status). In case the BuildHotel error
does not disappear, contact Connectivity Support.