On our API there are two different ways in which hotel information may be synchronized:
Important note:
Both models compliment each other and, depending on your needs, may be neccesary in order to implement a fully functional integration (as, for example: if you implement the PUSH model and would like to later be capable of confirming reservations, it would be neccesary for you to also to implement the PULL model performing, in short, a PUSH-PULL integration). Kindly contact with Juniper if you would like for more information in this regard.
We will proceed to describe each of these models in detail:
The PUSH model, which consists of pushing the rates and availabilities of the hotels of the Juniper client on the partner system, allows for the following possibilities (among others):
Important note:
It is worth noting that the push model only provides information of directly contracted hotels as dynamic contracts are not supported.
Given that this information would be pushed to the partner system, it would be very important for the partner to understand that:
The PULL model, which consists of pulling the rates and availabilities from the Juniper client system in real-time, provides all of the neccesary tools in order to be capable of creating reservations for those same rates, while allowing for much more rates to be retrieved in comparison to that of the PUSH model as it included the dynamic contracts.
Kindly refer to the Hotel PULL API specs if you would like for more information in this regard.
This API allows for the retrieval of detailed information of the hotels loaded on a specific Juniper system. This is a PUSH interface that, through the use of exported files retrieved from an FTP, allows for the push of hotel, rate and allotment information into the destination system.
In order to retrieve this information, the first step would be to retrieve all of the available hotels and all of the hotel detailed information (in order to map the same on your system) through the use of the JP_HotelInvNotifRQ file.
Then, once you've mapped all of the available hotels (by having processed all of the available JP_HotelInvNotifRQ files from the FTP), retrieve the available allotment and rate information from each available hotel (on a hotel by hotel basis), through the use of the following files:
This message contains all the information about the Hotel description.
Note that, through a special configuration, the system has the possibility of supplying you with hotel information of up to two additional languages, identifying the same by having the language code at the end of the filename, like in the following example:
JP_HotelInvNotifRQ_HBE125.xml
JP_HotelInvNotifRQ_HBE125_FR.xml
JP_HotelInvNotifRQ_HBE125_PL.xml
Kindly contact with your supplier if you’re interesting on knowing which are the available languages for the same and/or if you are interested on enabling this option.
The message has the following structure:
<?xml version="1.0"?>
<JP_HotelInvNotifRQ>
<Hotel>
<HotelCode>HBE|125</HotelCode>
<HotelCodeEncryp>XEN2eaGo3yR13oGTBkHuLw==</HotelCodeEncryp>
<JPCode>JP046300</JPCode>
<Name>Apartamentos Allsun Pil-lari Play-a</Name>
<Category id = "3">3 Stars</Category>
<MinAge>0</MinAge>
<ChildrenAgeRange>
<AgeRange code = "ChildA" fromAge = "2" toAge = "7"/>
<AgeRange code = "ChildB" fromAge = "8" toAge = "17"/>
</ChildrenAgeRange>
<ShortDescription>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</ShortDescription>
<LongDescription>Hotel "long" description.</LongDescription>
<Address>
<Address>Calle Marbella 24</Address>
<City id = "2">Playa De Palma</City>
<PostalCode>07006</PostalCode>
<BookingEmail>email1@ejuniper.com</BookingEmail>
<BookingFax>985632147</BookingFax>
<BookingTelephone>987456321</BookingTelephone>
<Coordinates>
<Latitude>39.564713</Latitude>
<Longitude>2.627979</Longitude>
</Coordinates>
</Address>
<RoomTypes>
<RoomType id = "2" min = "1" max = "1" alter = "0" roomTypeCategoryID = "4" roomTypeCategoryName = "Standard" addiFrom = "255" NonRefundable = "false" childAsAdult = "true" infantAsChild = "false" MinAge = "0">
<Occupancy minChild = "0" maxChild = "0" minAdult = "1" maxAdult = "1"/>
<Name>Single</Name>
</RoomType>
<RoomType id = "5" min = "2" max = "2" alter = "0" roomTypeCategoryID = "4" roomTypeCategoryName = "Standard" addiFrom = "255" NonRefundable = "false" childAsAdult = "false" infantAsChild = "false" MinAge = "0">
<Occupancy minChild = "0" maxChild = "0" minAdult = "2" maxAdult = "2"/>
<Occupancy minChild = "1" maxChild = "1" minAdult = "1" maxAdult = "1"/>
<Name>Double</Name>
<Descriptions>
<Description type = "GEN">DOUBLE DESCRIPTION TEST EN</Description>
</Descriptions>
</RoomType>
<RoomType id = "76" min = "2" max = "2" alter = "0" roomTypeCategoryID = "4" roomTypeCategoryName = "Standard" addiFrom = "255" NonRefundable = "false" childAsAdult = "true" infantAsChild = "false" MinAge = "0">
<Occupancy minChild = "0" maxChild = "0" minAdult = "2" maxAdult = "2"/>
<Occupancy minChild = "1" maxChild = "1" minAdult = "1" maxAdult = "1"/>
<Name>Double RQ</Name>
</RoomType>
<RoomType id = "187" min = "1" max = "5" alter = "0" roomTypeCategoryID = "4" roomTypeCategoryName = "Standard" addiFrom = "3" NonRefundable = "true" childAsAdult = "true" infantAsChild = "false" MinAge = "0">
<Occupancy minChild = "0" maxChild = "2" minAdult = "1" maxAdult = "3"/>
<Name>Non Refundable Room</Name>
<Descriptions>
<Description type = "GEN">Room description with test purposes</Description>
</Descriptions>
</RoomType>
<RoomType id = "188" min = "1" max = "5" alter = "0" roomTypeCategoryID = "4" roomTypeCategoryName = "Standard" addiFrom = "255" NonRefundable = "false" childAsAdult = "true" infantAsChild = "false" MinAge = "0">
<Occupancy minChild = "0" maxChild = "2" minAdult = "1" maxAdult = "3"/>
<Name>Triple</Name>
</RoomType>
<RoomType id = "215" min = "4" max = "15" alter = "0" roomTypeCategoryID = "4" roomTypeCategoryName = "Standard" addiFrom = "255" NonRefundable = "false" childAsAdult = "true" infantAsChild = "false" MinAge = "0">
<Occupancy minChild = "0" maxChild = "10" minAdult = "4" maxAdult = "10"/>
<Name>Family Room</Name>
</RoomType>
</RoomTypes>
<BoardTypes>
<BoardType id = "2">Bed & Breakfast</BoardType>
<BoardType id = "1">Half Board</BoardType>
<BoardType id = "3">Room Only</BoardType>
<BoardType id = "5">All Inclusive</BoardType>
</BoardTypes>
<DirectPaymentCardTypes/>
<Features>
<Feature type = "Hotel" payment = "false">Pool</Feature>
<Feature type = "Hotel" payment = "false">WIFI</Feature>
<Feature type = "Room" payment = "false">Hair dryer</Feature>
<Feature type = "Room" payment = "false">Safe</Feature>
<Feature type = "Restaurant" payment = "false">Restaurant</Feature>
<Feature type = "AdditionalInfo" payment = "false">Aditional Info Test</Feature>
</Features>
<Images>
<Image>
<FileName>/hotels/APARTAMENTOS_ALLSUN_PIL-LARI_PLAYA.jpg</FileName>
</Image>
</Images>
<TimeZone>(UTC+05:00) Ekaterinburg</TimeZone>
</Hotel>
</JP_HotelInvNotifRQ>
Node / Attribute (@) | Opt | Description |
---|---|---|
Hotel | 1 | |
./Hotel/HotelCode | 1 | Hotel code |
./Hotel/HotelCodeEncryp | 1 | Hotel code encrypted |
./Hotel/JPCode | 1 | Hotel Juniper Code. This value will only be available if the hotel is mapped to a JPCode. |
./Hotel/GiataCode | 1 | Giata code |
./Hotel/Name | 1 | Hotel name |
./Hotel/Category | 1 | Hotel category |
./Category/@id | 1 | Category identifier |
./Hotel/MinAge | 1 | Hotel minimum age |
./Hotel/ChildrenAgeRange | 0..1 | Children age range information |
./ChildrenAgeRange/AgeRange | 0..N | Specific age range, differentiated by its code. |
./AgeRange/@code | 1 | Age range code. Possible values: • ChildA: First age range • ChildB: Second age range • ChildC: Third age range |
./AgeRange/@fromAge | 1 | Initial value of the age range. |
./AgeRange/@toAge | 1 | Final value of the age range. |
./Hotel/ShortDescription | 1 | |
./Hotel/LongDescription | 1 | |
./Hotel/Address | 1 | |
./Address/Adress | 1 | Hotel address |
./Address/City | 1 | |
./City/@id | 1 | |
./Address/PostalCode | 1 | |
./Address/BookingEmail | 1 | |
./Address/BookingFax | 1 | |
./Address/BookingTelephone | 1 | |
./Address/Coordinates | 1 | |
./Coordinates/@Latitude | 1 | |
./Coordinates/@longitude | 1 | |
./Hotel/RoomTypes | 1 | Room type list |
./RoomTypes/RoomType | 1..N | |
./RoomType/@id | 1 | |
./RoomType/@name | 1 | |
./RoomType/@min | 1 | |
./RoomType/@max | 1 | |
./RoomType/@alter | 1 | RoomType id of the alternative allotment. “false” (or “0”) means there is no alternative allotment |
./RoomType/@roomTypeCategoryID | 1 | |
./RoomType/@roomTypeCategoryName | 1 | |
./RoomType/@addiFrom | 1 | Indicates number of the adult from which it is considered as additional. 255 means there is no additional adults |
./RoomType/@NonRefundable | 0..1 | Defines if the room is non refundable |
./RoomType/@childAsAdult | 0..1 | Indicates if a child counts as an adult |
./RoomType/@RoomTypeCombinationCode | 0..1 | Combination code between hotel code, room code and room category code. Requires for a specific permission and may be useful for room mapping purposes. |
./RoomType/@MinAge | 1 | Room minimum age |
./RoomType/Occupancy | 1 | |
./Occupancy/@minChild | 1 | |
./Occupancy/@maxChild | 1 | |
./Occupancy/@minAdult | 1 | |
./Occupancy/@maxAdult | 1 | |
./RoomType/Name | 1 | Name of the room |
./RoomType/Descriptions | 0..1 | Room description list |
./Descriptions/Description | 0..N | Room description |
./RoomType/Size | 1 | Room size |
./RoomType/AgeLimits | 0..1 | Age limits |
./AgeLimits/AgeLimit | 0..1 | Age limit |
./AgeLimit/@type | 1 | Age limit type. Possible values: • Child • Guest |
./AgeLimit/@from | 1 | From age |
./AgeLimit/@maxAge | 1 | Maximum age |
./Size/@unit | 1 | Unit: m2 square meters, ft2 square feet |
./Hotel/BoardTypes | 1 | Board type list |
./BoardTypes/BoardType | 1..N | |
./BoardType/@id | 1 | |
./Hotel/DirectPaymentCardTypes | 0..1 | Allowed card types |
./DirectPaymentCardTypes/Type | 1..N | |
./Type/@code | 0..1 | |
./Type/@name | 0..1 | |
./Hotel/Features | 0..1 | Features |
./Features/Feature | 1..N | |
./Feature/@type | 1 | Feature type. Possible values: • Hotel • Sport • Room • Restaurant • AdditionalInfo • BusinessAndAmenities • Distances • ApartmentsEquipment • Others |
./Feature/@payment | 1 | Indicates whether a service is paid |
./Hotel/Images | 0..1 | Images |
./Images/Image | 1..N | |
./Image/FileName | 1 |
This message contains the availability information for every hotel. You will receive one file for every available hotel.
The following message is a simple example this message.
<?xml version="1.0"?>
<JP_HotelAvailNotifRQ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HotelAvail hotelCode="HBE|125" OnRequestAllowedWithoutAllotment="true" hotelCodeEncryp="XEN2eaGo3yR13oGTBkHuLw==" JPCode="JP046300">
<Contract id="309_204" delta="false" active="true">
<Audit created="2023-06-04T11:33:45.33"/>
<AllotmentContract id="62658" active="true" name="Allotment Contract 2024" from="2024-04-26T00:00:00" to="2024-10-12T00:00:00">
<Season id="66">Summer 2024</Season>
</AllotmentContract>
<Allotments>
<Allotment idRoomType="171" from="2019-10-30T00:00:00" to="2030-12-31T00:00:00" available="1" />
<Allotment idRoomType="187" from="2019-10-30T00:00:00" to="2030-12-31T00:00:00" available="1" />
</Allotments>
<StopSales>
<StopSale IdRoomType="187" from="2020-03-01T00:00:00" to="2020-03-27T00:00:00" onRequest="false" block="false"/>
</StopSales>
<Releases>
<Release ffrom="2019-11-30T00:00:00" to="2030-12-31T00:00:00" days="3" guarantee="true">
<RoomTypes>
<RoomType id="171"/>
</RoomTypes>
</Release>
</Releases>
</Contract>
</HotelAvail>
</JP_HotelAvailNotifRQ>
This is the important information:
Hotel code: HBE|125
Hotel code encrypted: XEN2eaGo3yR13oGTBkHuLw==
Room codes: 171, 187
Contract code: 309_204
Available rooms:
Releases:
Node / Attribute (@) | Opt | Description |
---|---|---|
HotelAvail | 1 | |
./HotelAvail/@hotelCode | 1 | Hotel code |
./HotelAvail/@hotelCodeEncryp | 1 | Hotel code encrypted |
./HotelAvail/@JPCode | 1 | Hotel Juniper Code. This value will only be available if the hotel is mapped to a JPCode |
./HotelAvail/@OnRequestAllowedWithoutAllotment | 1 | If true, the hotel will allow OnRequest bookings even if there is no allotment available. |
./HotelAvail/Contract | 1 | |
./Contract/@id | 1 | Contract identifier |
./Contract/@delta | 1 | Indicate if this XML is a delta file |
./Contract/@active | 1 | Indicates if the contract is active or not. Requires for an additional permission to be enabled which allows for inactive contract to be exported |
./Contract/Audit | 1 | Requires for log audit permission to be activated |
./Audit/@created | 1 | Date of creation |
./Contract/AllotmentContract | 1 | Internal use, requires for a restricted permission to be activated |
./AllotmentContract/@id | 1 | Allotment contract id |
./AllotmentContract/@active | 1 | Indicates if the contract is active or not |
./AllotmentContract/@name | 1 | Name of the Allotment contract |
./AllotmentContract/@from | 1 | Allotment contract start date |
./AllotmentContract/@to | 1 | Allotment contract end date |
./AllotmentContract/Season | 1 | Season name |
./Season/@id | 1 | Season id |
./Contract/Allotments | 1 | |
./Allotments/Allotment | 0..N | |
./Allotment/@idRoomType | 1 | Room type identifier. If it is omitted, is applied to all the room types. |
./Allotment/@RoomTypeCombinationCode | 0..1 | Combination code between hotel code, room code and room category code. Requires for a specific permission and may be useful for room mapping purposes. |
./Allotment/@from | 1 | Allotment start date |
./Allotment/@to | 1 | Allotment end date |
./Allotment/@available | 1 | Indicates if allotment is available NOTE: If you’re interested, this attribute can exactly tell the available allotment. To do this, please contact your administrator. |
./Allotment/@security | 1 | Indicates if affect to the security allotment |
./Contract/StopSales | 1 | |
./StopSales/StopSale | 0..N | |
./StopSale/@IdRoomType | 1 | Room type identifier. If it is omitted, is applied to all the room types. |
./StopSale/@from | 1 | Stopsale start date |
./StopSale/@to | 1 | Stopsale end date |
./StopSale/@onRequest | 1 | |
./StopSale/@block | 1 | Indicates if this stopsale blocks the rate |
./Contract/Releases | 1 | |
./Releases/@TimeZone | 0..1 | Hotel time zone for release application |
./Releases/@Time | 0..1 | Time of release application |
./Releases/Release | 0..N | |
./Release/@id | 1 | Id release |
./Release/@from | 1 | Release start date |
./Release/@to | 1 | Release end date |
./Release/@days | 1 | Release days |
./Release/@guarantee | 1 | Indicates if it affects to the guaranteed allotment |
./Release/RoomTypes | 0..1 | If is not present affects to all roomtypes |
./RoomTypes/RoomType | 1..N | Room type affected by release |
./RoomType/@id | 1 | Room type identifier |
This message contains all the information of the rates, cancelation policy, supplements, offers and restrictions.
The message has the following structure:
<?xml version="1.0"?>
<JP_HotelRatePlanNotifRQ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” id="310" name="General sales contract" type="FIT" idHotel="HBE|125" idHotelEncryp="XEN2eaGo3yR13oGTBkHuLw==" JPCode="JP046300" nameHotel="APARTAMENTOS ALLSUN PIL-LARI PLAYA" MinAge="14" delta="false" currency="USD" multimarkup="false" applicationTypeOffer="Priority">
<Rates>
<!-- Rates -->
</Rates>
<Taxes>
<!-- Taxes-->
</Taxes>
<CancellationPolicies>
<!-- Cancellation Policies-->
</CancellationPolicies>
<Supplements>
<!-- Supplements -->
</Supplements>
<Offers>
<!-- Offers -->
</Offers>
<Restrictions>
<!-- Restrictions -->
</Restrictions>
<ContractRestrictions>
<!-- Contract restrictions -->
</ContractRestrictions >
<SpecialNotes>
<!-- Special notes -->
</SpecialNotes>
<CombinableContracts>
<!-- Combinable contracts-->
</CombinableContracts>
</JP_HotelRatePlanNotifRQ>
XML samples of each of the different objects that can be found.
This node will contain the information regarding the prices, room types and board types.
Each rate defines the base prices applicable during the contract.
<Rates>
<Rate id="1">
<Dates>
<Date from = "2019-10-30T00:00:00" to = "2020-12-31T00:00:00"/>
</Dates>
<ChildrenAgeRange>
<AgeRange code="ChildA" fromAge="2" toAge="7"/>
<AgeRange code="ChildB" fromAge="8" toAge="12"/>
</ChildrenAgeRange>
<Discounts>
<Addit1>15</Addit1>
<Addit2>0</Addit2>
<ChildA1>0</ChildA1>
<ChildA2>0</ChildA2>
<ChildB1>0</ChildB1>
<ChildB2>0</ChildB2>
</Discounts>
<Prices>
<Price>
<room>26</room>
<RoomTypes>
<RoomType id="187"/>
</RoomTypes>
<BoardTypes>
<BoardType id="5"/>
</BoardTypes>
<Adult rec="240">190</Adult>
<ChildA1 rec="120">95</ChildA1>
<ChildA2 rec="120">95</ChildA2>
<ChildB1 rec="120">95</ChildB1>
<ChildB2 rec="120">95</ChildB2>
</Price>
</Prices>
</Rate>
</Rates>
<Taxes>
<Tax Value = "10" type = "Percentual" id = "5" from = "2020-01-29T00:00:00" to = "2030-12-31T00:00:00" commissionable = "false" cancellationCharges = "true"/>
<Tax Value = "10" type = "Person" id = "66" from = "2020-01-29T00:00:00" to = "2030-12-31T00:00:00" currency = "EUR" commissionable = "false" cancellationCharges = "true">
<Baby fromAge = "0" toAge = "4">7</Baby>
<ChildA>8</ChildA>
<ChildB>0</ChildB>
</Tax>
</Taxes>
<CancellationPolicies>
<CancellationPolicy id="125" name="Política de Cancelación" priority="0" earlyBooking="0" currency="USD" nonRefundable="0">
<Description/>
<Rules>
<Rule type="BeforeTrip" from="0" to="7" stayLengthTo="0" stayLengthFrom="0" percentage="100" night="0" fixedPrice="0" application="Average"/>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>0</SpecialTax>
<MinAge>0</MinAge>
</Rules>
</CancellationPolicy>
</CancellationPolicies>
This is a supplement applied to the rate
<Supplements>
<Supplement id = "340507" name = "SUPL. COMIDA/CENA EXTRA" class = "RoomSup" onRequest = "true" mandatory = "false" idCat = "0" baseRoom = "26">
<Rules>
<StayDates>
<Date from = "2019-09-01T00:00:00" to = "2021-12-31T00:00:00"/>
</StayDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<AlternateWithSupplements>
<Supplement>340508</Supplement>
</AlternateWithSupplements>
<SpecialTax>0</SpecialTax>
<Packaged>true</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>false</Additionals>
<Children>false</Children>
<DirectPayment>false</DirectPayment>
</Rules>
<Prices>
<Application>Normal</Application>
<PricePerNight>false</PricePerNight>
<Seasons quotation = "Day">
<Season idSea = "0"/>
</Seasons>
<Price>
<Price>
<RoomTypes>
<RoomType id = "84"/>
</RoomTypes>
<BoardTypes>
<BoardType id = "1"/>
</BoardTypes>
<Adult rec = "22.2">9.5</Adult>
<ChildA1>0</ChildA1>
</Price>
</Price>
</Prices>
</Supplement>
</Supplements>
This is an offer applied to the rate
<Offers>
<Offer priority="0" onRequest="false" name="[2019] 5% discount" id="843" class="BasicDisc">
<Rules>
<StayDates>
<Date from = "2019-09-01T00:00:00" to = "2021-12-31T00:00:00"/>
</StayDates>
<BookingPeriod min = "2018-12-19T00:00:00" max = "9999-12-31T00:00:00"/>
<LenghtStay totalBooking="false" min="5" max="1000"/>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>0</SpecialTax>
<ApplyWithOffers>
<Offer>348144</Offer>
<Offer>348145</Offer>
</ApplyWithOffers>
<MinAge>0</MinAge>
<RoomTypes/>
<BoardTypes/>
<PaymentConditions>
<PaymentDate>2020-06-30T00:00:00</PaymentDate>
<Percentage>10</Percentage>
</PaymentConditions>
</Rules>
<Prices>
<Application>Normal</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day">1</Seasons>
<Price/>
</Prices>
</Offer>
</Offers>
This is a restriction applied to the rate.
<Restrictions>
<Restriction id="352268" name="AI GOLD REST." class="BasicRest" onRequest="false">
<Rules>
<StayDates>
<Date from = "2019-10-30T00:00:00"/>
</StayDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>0</SpecialTax>
<MinAge>0</MinAge>
<RoomTypes>
<RoomType id="201"/>
<RoomType id="617"/>
</RoomTypes>
<BoardTypes>
<BoardType id="12"/>
</BoardTypes>
</Rules>
</Restriction>
</Restrictions>
This is a contract restriction applied to the rate
<ContractRestrictions>
<CountryOfResidence Allowed="false">
<Country Code="ES">SPAIN</Country>
<Country Code="PT">PORTUGAL</Country>
</CountryOfResidence>
</ContractRestrictions>
These are special notes that apply to the rate:
<SpecialNotes>
<Note from = "13/06/2018" to = "31/12/2030">
<Text idioma = "ES">
<Txt>
Please note that on this field hotels have the possibility of supplying you with important information like:
- Additional taxes (like, for example, a city tax).
- Additional features (like, for example, a detailed explanation of a promotion)
- Additional warnings (like, for example, the pool being closed due to renovations)
- Additional information (like, for example, the emergency phone)
Among other examples.
</Txt>
</Text>
<Text idioma = "EN">
<Txt>
Please note that on this field hotels have the possibility of supplying you with important information like:
- Additional taxes (like, for example, a city tax).
- Additional features (like, for example, a detailed explanation of a promotion)
- Additional warnings (like, for example, the pool being closed due to renovations)
- Additional information (like, for example, the emergency phone)
Among other examples.
</Txt>
</Text>
</Note>
</SpecialNotes>
These are contracts that will be combinable with the one on which this information can be found.
This means that, if in a search there aren’t rates for some specific dates, it will be possible to use one of these combinable contracts to obtain the price and allotment of them.
<CombinableContracts>
<Contract>
<FileName>JP_HotelRatePlanNotifRQ_HBE15433_96518_114931</FileName>
</Contract>
</CombinableContracts>
Node / Attribute (@) | Opt | Description |
---|---|---|
@id | 1 | Contract identifier |
@name | 1 | Contract name |
@type | 1 | Contract type |
@idHotel | 1 | Hotel identifier |
@idHotelEncryp | 1 | Encrypted Hotel |
@JPCode | 1 | Hotel Juniper Code. This value will only be available if the hotel is mapped to a JPCode |
@nameHotel | 1 | Hotel name |
@MinAge | 1 | Minimum guest's age allowed by the hotel |
@giataID | 1 | Giata identifier |
@currency | 1 | Contract currency |
@delta | 1 | Indicates if this XML is a delta file |
@multimarkup | 1 | Indicates if it is a multimarkup contract. Kindly contact with your Juniper supplier if you need for additional information in this regard. |
@multimarkupPriority | 0..1 | If multimarkup, indicates the priority that this multimarkup contract has in comparison to other multimarkup contracts from this same exact hotel (if any). The higher this value, the higher the priority |
@applicationTypeOffer | 1 | Indicates if the offers are to be applied by. Possible values: • Priority: the higher this value, the higher the priority. • BestPrice: the best offer price. |
Rates | ||
./Rates/Rate | 1..N | |
./Rate/@id | 1 | Rate identifier |
./Rate/Dates | 0..1 | |
./Dates/@from | 1 | First day that the prices are applied |
./Dates/@to | 1 | Last day that the prices are applied |
./Rate/ChildrenAgeRange | 0..1 | |
./ChildrenAgeRange/AgeRange | 0..N | |
./AgeRange/@code | 1 | Age range code. Possible values: • ChildA: First age range • ChildB: Second age range • ChildC: Third age range |
./AgeRange/@fromAge | 1 | Initial value range |
./AgeRange/@toAge | 1 | Final value range |
./Rate/Discounts | 0..1 | Passengers discounts |
./Discounts/Addit1 | 0..1 | Discount for the first additional |
./Discounts/Addit2 | 0..1 | Discount for the second additional |
./Discounts/Addit3 | 0..1 | Discount for the third additional. Available on hotels that have enabled the up to 8 additional adult prices configuration. |
./Discounts/Addit4 | 0..1 | Discount for the fourth additional. Available on hotels that have enabled the up to 8 additional adult prices configuration. |
./Discounts/Addit5 | 0..1 | Discount for the fifth additional. Available on hotels that have enabled the up to 8 additional adult prices configuration. |
./Discounts/Addit6 | 0..1 | Discount for the sixth additional. Available on hotels that have enabled the up to 8 additional adult prices configuration. |
./Discounts/Addit7 | 0..1 | Discount for the seventh additional. Available on hotels that have enabled the up to 8 additional adult prices configuration. |
./Discounts/Addit8 | 0..1 | Discount for the eight additional. Available on hotels that have enabled the up to 8 additional adult prices configuration. |
./Discounts/ChildA1 | 0..1 | Discount for the first child from first age range |
./Discounts/ChildA2 | 0..1 | Discount for the second child from first age range |
./Discounts/ChildA3 | 0..1 | Discount for the third child from first age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildA4 | 0..1 | Discount for the fourth child from first age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildA5 | 0..1 | Discount for the fifth child from first age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildB1 | 0..1 | Discount for the first child from second age range |
./Discounts/ChildB2 | 0..1 | Discount for the secont child from second age range |
./Discounts/ChildB3 | 0..1 | Discount for the third child from second age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildB4 | 0..1 | Discount for the fourth child from second age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildB5 | 0..1 | Discount for the fifth child from second age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildC1 | 0..1 | Discount for the first child from third age range |
./Discounts/ChildC2 | 0..1 | Discount for the secont child from third age range |
./Discounts/ChildC3 | 0..1 | Discount for the third child from third age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildC4 | 0..1 | Discount for the fourth child from third age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Discounts/ChildC5 | 0..1 | Discount for the fifth child from third age range. Available on hotels that have enabled the up to 5 children prices configuration. |
./Rate/Prices | 1 | |
./Prices/Price | 1..N | |
./Price/room | 1 | Room price |
./Price/RoomTypes | 0..1 | |
./RoomTypes/RoomType | 1..N | Room type affected by this price |
./RoomType/@id | 1 | Room type identifier |
./RoomType/@RoomTypeCombinationCode | 0..1 | Combination code between hotel code, room code and room category code. Requires for a specific permission and may be useful for room mapping purposes. |
./Price/BoadTypes | 0..1 | |
./BoadTypes/BoardType | 1..N | Board type affected by this price |
./BoardType/@id | 1 | Board type identifier |
./Price/Adult | 0..1 | Adult price |
./Price/ChildA1 | 0..1 | Price for first child from first age range |
./Price/ChildA2 | 0..1 | Price for second child from first age range |
./Price/ChildA3 | 0..1 | Price for third child from first age range |
./Price/ChildA4 | 0..1 | Price for fourth child from first age range |
./Price/ChildA5 | 0..1 | Price for fifth child from first age range |
./Price/ChildB1 | 0..1 | Price for first child from second age range |
./Price/ChildB2 | 0..1 | Price for second child from second age range |
./Price/ChildB3 | 0..1 | Price for third child from second age range |
./Price/ChildB4 | 0..1 | Price for fourth child from second age range |
./Price/ChildB5 | 0..1 | Price for fifth child from second age range |
./Price/ChildC1 | 0..1 | Price for first child from third age range |
./Price/ChildC2 | 0..1 | Price for second child from third age range |
./Price/ChildC3 | 0..1 | Price for third child from third age range |
./Price/ChildC4 | 0..1 | Price for fourth child from third age range |
./Price/ChildC5 | 0..1 | Price for fifth child from third age range |
./Price/Addit1 | 0..1 | Price for first additional pax |
./Price/Addit2 | 0..1 | Price for second additional pax |
./Price/Addit3 | 0..1 | Price for third additional pax |
./Price/Addit4 | 0..1 | Price for fourth additional pax |
./Price/Addit5 | 0..1 | Price for fifth additional pax |
./Price/Addit6 | 0..1 | Price for sixth additional pax |
./Price/Addit7 | 0..1 | Price for seventh additional pax |
./Price/Addit8 | 0..1 | Price for eight additional pax |
Taxes | 1 | |
./Taxes/Tax | ..N | |
./Tax/@id | 1 | Tax identifier |
./Tax/@type | 1 | Tax type. Possible values: • Room • RoomNight • Person • PersonNight • Percentual • Reservation • reservationNight |
./Tax/@value | 1 | Tax value |
./Tax/@from | 1 | First day that the taxes are applied |
./Tax/@to | 1 | Last day that the taxes are applied |
./Tax/@currency | 1 | Tax currency |
./Tax/@commisionable | 1 | Indicates if tax is commissionable |
./Tax/@cancellationCharges | 1 | Cancellation tax charge |
./Tax/Baby | 0..1 | Applied tax to babies |
./Baby/@FromAge | 1 | Initial value range |
./Baby/@ToAge | 1 | Final value range |
./Tax/ChildA | 0..1 | Applied tax to child from first age range |
./ChildA/@FromAge | 1 | Initial value range |
./ChildA/@ToAge | 1 | Final value range |
./Tax/ChildB | 0..1 | Applied tax to child from second age range |
./ChildB/@FromAge | 1 | Initial value range |
./ChildB/@ToAge | 1 | Final value range |
CancellationPolicies | 1 | |
./CancellationPolicies/CancellationPolicy | 1..N | |
./CancellationPolicy/@id | 1 | Cancellation policy identifier |
./CancellationPolicy/@name | 1 | Cancellation policy name |
./CancellationPolicy/@priority | 1 | Cancellation policy priority |
./CancellationPolicy/@earlyBooking | 1 | |
./CancellationPolicy/@currency | 1 | Cancellation policy currency |
./CancellationPolicy/@nonRefundable | 0..1 | Indicates if the cancellation policy is non refundable |
./CancellationPolicy/Description | 1 | Cancellation policy description |
./CancellationPolicy/CheckInDates | 0..1 | Policy is applied in these checkin dates |
./CheckInDates/Date | 1..N | |
./Date/@from | 1 | |
./Date/@to | 1 | |
./CancellationPolicy/Rules | 1 | Cancellation rules |
./Rules/Rule | 0..N | |
./Rule/@type | 1 | Depending on this property rules will be applied: • BeforeTrip: Before the check in date. • AfterBooking: After the booking confirmation date. • NoShow: If the guests do not show on the hotel. |
./Rule/@from | 1 | Minimum days. |
./Rule/@to | 1 | Maximum days. |
./Rule/@stayLengthFrom | 1 | |
./Rule/@stayLengthTo | 1 | |
./Rule/@percentage | 1 | Percentage charged. |
./Rule/@night | 1 | Nights charged. |
./Rule/@fixedPrice | 1 | Price charged. |
./Rule/@application | 1 | Rule application. Possible values: • Average: Charging will be the average of the reservation days. • FirstNight: Charging will be the price of the first night. |
Supplements | 1 | Rate plan supplements. |
./Supplements/{Supplement} | 0...N | Individual supplement, if there are multiple supplements you will have multiple instances of this node. |
Offers | 1 | Rate plan offers. |
./Offers/{Offer} | 0...N | Individual offer, if there are multiple offers you will have multiple instances of this node. |
Restrictions | 1 | Rate plan restrictions. |
./Restrictions/Restriction | 0...1 | Rate plan restrictions. |
./Restriction/{Restriction} | 0...N | Individual restriction, if there are multiple restrictions you will have multiple instances of this node. |
ContractRestrictions | 0..1 | |
./ContractRestrictions/CountryOfResidence | 0..1 | |
./CountryOfResidence/@Allowed | 1 | Indicates if the following countries are allowed or denied. |
./CountryOfResidence/Country | 1..N | Country name |
./Country/@Code | 1 | Country code |
./ContractRestrictions/MinimumAge | 0..1 | Minimum age configuration. Optional configuration from the system on which the hotel may set minimum age configurations by date range. |
./MinimumAge/@Dates | 0..1 | Minimum age date ranges. |
./Dates/@Date | 1..N | Specific date range. |
./Date/@From | 1 | From date. |
./Date/@To | 1 | To date. |
./Date/@MinAge | 1 | Minimum age for the date range. |
SpecialNotes | 1 | |
./SpecialNotes/Note | 0..1 | |
./SpecialNotes/@from | 1 | Application date |
./SpecialNotes/@to | 1 | Application date |
./SpecialNotes/@idcco | 0..1 | If not specified, the special note will apply to all of the contracts of the hotel. |
./SpecialNotes/Text | 1..N | |
./SpecialNotes/@idioma | Language | |
CombinableContracts | 0..1 | Combinable contracts |
./CombinableContracts/Contract | 1..N | Each contract |
./Contract/FileName | 1 | Rate Plan file name |
Generic object that identifies individual supplements, offers and/or restrictions that may apply to the contract (these three items share the same specifications, being the only difference between them the parent node name). We may refer to this object as either {Supplement}, {Offer} or {Restriction}.
Node / Attribute (@) | Opt | Description |
---|---|---|
@id | 1 | Identifier property, the higher the value, the soonest it should be applied over other supplements/offers. This property exists in order to determine which supplement/offer should be applied first in case that a multiple number of supplements/offers may be applied sequentially. |
@name | 1 | Item name. |
@priority | 1 | Priority property, the higher the value, the higher the priority over other supplements/offers. This property exists in order to determine which supplement/offer should be applied in case that only a limited number of supplements/offers may be applied at the same time (for example, on multiple offers where the ApplyWithOffers node is not involved). |
@class | 1 | Item class. Possible values, differentiated between Supplement, Offer and Restriction: Supplement classes: • RoomSup • BoardSup • BasicSupl • PickUpPoint • ShortStaySupl • IndividualUse • Amenities Offer classes: • BasicDisc • FreeNights • FreeMeals • FreePassengers • LowerPrice • EarlyBooking • MealPlanChange • RoomUpgrade • DeleteMinStay Restriction classes: • BasicRest • MinimumStayRest • ArrivalDayRest • DepartureDayRest |
@onRequest | 1 | Indicates if the item is on request. If you get the offer, the rate will be on request. |
@mandatory | 1 | Indicates if the item is mandatory |
@idCat | 0..1 | Item hotel category |
@baseRoom | 0..1 | Room type id where supplement will be applied. Class must be RoomSup. |
@baseBoard | 0..1 | Board type id where supplement will be applied. Class must be BoardSup. |
Rules | 1 | Item rules |
./Rules/InformedTime | 0..1 | Indicates the referential time that has been informed on the supplement. |
./Rules/StayDates | 0..1 | |
./StayDates/Date | 1..N | Stay dates where the item will be applied |
./Date/@from | 1 | Start date |
./Date/@to | 1 | End date. "9999-12-31T00:00:00" indicates an unbounded date |
./Rules/CheckInDates | 0..1 | Checkin dates where the item will be applied |
./CheckInDates/@from | 1 | Start date |
./CheckInDates/@to | 1 | End date. "9999-12-31T00:00:00" indicates an unbounded date |
./Rules/BookingPeriod | 0..1 | Period time in which bookings of the item are allowed. |
./BookingPeriod/@min | 1 | Start date |
./BookingPeriod/@max | 1 | End date. "9999-12-31T00:00:00" indicates an unbounded date. |
./Rules/LenghtStay | 0..1 | Min/max length of stay |
./LenghtStay/@min | 1 | Min days |
./LenghtStay/@max | 1 | Max days |
./LenghtStay/@multiples | 0..1 | Multiples |
./LenghtStay/@totalBooking | 0..1 | Possible values: • True: apply to all nights of the booking • False: apply only to the nights within the booking stay period. |
./LenghtStay/@applyToLengthStayOnly | 0..1 | If true, indicates that the Supplement/Offer should only be applied to the days between the minimum and the maximum stay nights. |
./LenghtStay/SpecialLenghtStays | 0..1 | Stay periods with a different range of nights. If a specific date repeats itself, the system will use the last range of night entered for this period. |
./SpecialLenghtStays/SpecialLenghtStay | 1..N | Specific special lenght of stay. |
./SpecialLenghtStay/@from | 1 | Initial value range |
./SpecialLenghtStay/@to | 1 | Final value range |
./SpecialLenghtStay/@min | 1 | Min days |
./SpecialLenghtStay/@max | 1 | Max days |
./Rules/WeekChekingDates | 0..1 | Week checking dates where the item will be applied |
./WeekChekingDates/@Day | 1 | Values: Mon, Tue, Wed, Thu, Fri, Sat, Sun |
./WeekChekingDates/@Restrictive | 1 | Possible values: • True: Check in and check out restriction for the selected days. • False: only check in restriction |
./Rules/WeekStayDates | 0..1 | Week stay dates where the item will be applied |
./WeekStayDates/@Day | 1 | Values: Mon, Tue, Wed, Thu, Fri, Sat, Sun |
./Rules/AdvanceBooking | 0..1 | Number of days prior to the check-in date |
./AdvanceBooking/@min | 1 | Min days |
./AdvanceBooking/@max | 1 | Max days |
./Rules/MatchAllStay | 1 | Possible values: • 1: the item only applies if match all stay dates • 0: if one stay date match, the item will be applied |
./Rules/MatchOneApplyWholeStay | 1 | Possible values: • 1: Should any date coincide, apply this condition to the whole stay • 0: apply to the specified stay dates |
./Rules/AlternateWithSupplements | 0..1 | List of supplements that will be offered as an alternative to this one. |
./AlternateWithSupplements/Supplement | 1..N | Supplement identifier |
./Rules/MinAge | 0..1 | |
./Rules/SpecialTax | 1 | Special meal plan taxes. For informative purposes only. |
./Rules/SpecialType | 0..1 | Special Supplements/Offers types. For informative purposes only |
./Rules/Packaged | 1 | Indicates if the supplement is part of a package. For informative purposes only. |
./Rules/Voucher | 1 | If the item will be printed in the voucher. For informative purposes only. |
./Rules/Displacement | 1 | Service displacement. Possible values: • No: No displacement • Si: Service starts next day • ClientChoice: Client may choose the first day of the service. |
./Rules/Additionals | 1 | Indicates if the item applies to additional paxes. |
./Rules/Children | 1 | Indicates if the item applies to children. |
./Rules/NonRefundable | 0..1 | Indicates if the item will have 100% cancellation charges. |
./Rules/DirectPayment | 1 | Indicates if the Supplement will be paid directly at the hotel |
./Rules/ApplyWithOffers | 0..1 | By default, when dates overlap, only one offer is allowed. If this node is returned, you can apply more offers even when dates overlap. When two or more offers are applied at once, by default, they will follow their own Prices/Application in order to determine how will they be applied but there are some exceptions: • If a class="LowerPrice" offer is involved, all of the related offers will be applied sequentially (like if they had a Normal application), regardless of their own Application values. • If all of the involved offers are % discount offers and share the same exact application type (base, normal, total), then, the mentioned offers will be applied simultaneously (like if they had a Total application) It is also important to note that the maximum number of combinable offers may depend on your supplier (some suppliers may only allow for up to two offers to be applied at once), kindly contact with your Juniper supplier for additional information in this regard. |
./ApplyWithOffers/Offer | 1...N | Compatible offer identifier |
./Rules/RoomTypes | 0..1 | List of Room types which the item is applied to. If this tag does not appear, it will be applied to all of the room types. |
./RoomTypes/RoomType | 0..N | |
./RoomType/@id | 1 | |
./Rules/BoardTypes | 0..1 | List of Board types which the item is applied to. If this tag does not appear, it will be applied to all of the room types. |
./BoardTypes/BoardType | 0..N | |
./BoardType/@id | 1 | |
./Rules/RoomPlan | 0..1 | Room type upgrade. E.g.: you pay DBL and get DBLSuit |
./RoomPlan/@pay | 1 | Customer pays |
./RoomPlan/@get | 1 | Customer gets |
./Rules/MealPlan | 0..1 | Meal plan upgrade. E.g.: you pay RO and get AI. |
./MealPlan/@pay | 1 | Customer pays |
./MealPlan/@get | 1 | Customer gets |
./Rules/Nights | 0..1 | Free nights |
./Nights/@Nights | 1 | Number of nights needed to apply the offer |
./Nights/@night | 1 | Type of night for which the rule stands for. Possible values: • Cheapest • Expensive • First • Last • CheapestPeriod • LastPeriod • Average. |
./Nights/@free | 1 | Number of free nights |
./Nights/@applyOnce | 1 | Possible values: • True: apply once • False: it can be applied several times. Ie: an offer 7x6 and you book 14 nights. You will have 2 free nights. |
./Rules/MinAge | 0..1 | The Supplement/Offer will only apply to those rooms in which there is at least one adult with this minimum age |
./Rules/Occupancies | 0..1 | Apply only to these occupancies |
./Occupancies/@BabiesAllowed | 0..1 | The Supplement/Offer will be applied to distributions with children considered as babies due to their age |
./Occupancies/@minPaxes | 0..1 | Minimum number of passengers required in order to apply the offer. |
./Occupancies/@maxPaxes | 0..1 | Maximum number of passengers required in order to apply the offer. |
./Occupancies/Occupancy | 0.. N | Occupancy distribution |
./Occupancy/@minChild | 1 | |
./Occupancy/@minAdult | 1 | |
./Occupancy/@maxChild | 1 | |
./Occupancy/@maxAdult | 1 | |
./Rules/FreePaxes | 0..1 | Free passenger information. Available on FreePassengers supplements. |
./FreePaxes/Additional | 1 | Additional adult. If true, the third+ will be free. |
./Additional/@first | 0..1 | If true, the first will be free. |
./Additional/@second | 0..1 | If true, the second will be free. |
./FreePaxes/ChildA | 1 | ChildA. If true, the third+ will be free. |
./ChildA/@first | 0..1 | If true, the first will be free. |
./ChildA/@second | 0..1 | If true, the second will be free. |
./FreePaxes/ChildB | 1 | ChildB. If true, the third+ will be free. |
./ChildB/@first | 0..1 | If true, the first will be free. |
./ChildB/@second | 0..1 | If true, the second will be free. |
./FreePaxes/ChildC | 1 | ChildC. As of the moment of writing this, it is not possible to establish ChildC passengers on free-pax supplements. |
./Rules/ChildrenAgeRange | 0..1 | New children age range. |
./ChildrenAgeRange/AgeRange | 1.. 2 | |
./AgeRange/@code | 1 | Age range code. Possible values: • ChildA: First age range • ChildB: Second age range • ChildC: Third age range |
./AgeRange/@fromAge | 1 | |
./AgeRange/@toAge | 1 | |
./Rules/PaymentConditions | 0..1 | Indicates if an Early Booking offer has a payment condition, a deposit you have to pay at a given date. |
./PaymentConditions/PaymentDate | 1 | |
./PaymentConditions/Percentage | 1 | Percentage you have to pay |
./Rules/CountryOfResidence | 0..1 | Country of residence application rules. |
./CountryOfResidence/@Allowed | 1 | Indicates if the country codes listed below should be allowed or not. Possible values: • true: Indicates that the element should only be applied when the reservation is made using any of the country codes listed below • false: Indicates that the element should only be applied whenever the reservation is made using any country code that is not listed below. |
./CountryOfResidence/Country | 1..N | Country name |
./Country/@Code | 1 | Country code |
Prices | 0..1 | Supplements prices |
./Prices/Application | 1 | Application type. Possible values: • Base: to apply to base rate price • Normal: to apply the base rate with board and room type • Total: apply this Supplement/Offer after applying other supplements and discounts • TotalNoBaseRate: Apply this supplement after applying other supplements and discounts without board and room type. |
./Prices/PricePerNight | 1 | Indicates if prices are defined by night |
./Prices/Seasons | 0..1 | |
./Seasons/@quotation | 1 | Value: Day |
./Seasons/@quotationMode | 1 | Quotation mode. Possible values: • PerNight • MoreNightsFirstDay: Booking stay period coinciding with more nights; if they coincide apply the date period of the first night. • MoreNightsFirst: Booking stay period coinciding with more nights; if they coincide apply the more expensive date period. • MoreNightsMostExpensive: Booking stay period coinciding with more nights; if they coincide apply the more expensive date period. • MoreNightsCheapest: Booking stay period coinciding with more nights; if they coincide apply the cheapest date period. • FirstDay: Apply the price of the first day. |
./Seasons/Season | 1..N | |
./Season/idSea | 1 | |
./Prices/Price | 0..N | List of prices |
./Price/@baseSupplement | 0..1 | Indicates the base supplement (true) or the id (integer) of the board plan that will be used in order to calculate the price of this supplement. |
./Price/@mealSupplement | 0..1 | Indicates that the mentioned price is a meal plan supplement and that consequently needs to be applied over the base supplement price (specified in baseSupplement) instead of applying the same to the base rate price directly (as per the application rules) |
./Price/BoardTypes | 0..1 | |
./BoardTypes/BoardType | 0..N | |
./BoardType/@id | 1 | When supplement class = “BoardSup”, identifies the new board type resulting on applying the supplement to the base board / Room type. If supplement class = “RoomSup”, identifies all possible combinations off Room type / Base board. |
./Price/RoomTypes | 0..1 | |
./RoomTypes/RoomType | 0..N | |
./RoomType/@id | 1 | When supplement class = “RoomSup”, identifies the new room type resulting on applying the supplement to the base room / Board type. If supplement class = “BoardSup”, identifies all possible combinations off Board type / Base room. |
./Price/room | 0..1 | Room fixed price. Only if the price is per room. There are two price types: per room or per person. |
./room/@rec | 0..1 | Recommended price |
./Price/Adult | 0..1 | Adult price. Only if the price is per person |
./Adult/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./Adult/rec | 0..1 | Recommended price |
./Price/ChildA1 | 0..1 | Price for first child from first age range |
./ChildA1/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./ChildA1/rec | 0..1 | Recommended price |
./Price/ChildA2 | 0..1 | Price for second child from first age range |
./ChildA2/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./ChildA2/rec | 0..1 | Recommended price |
./Price/ChildB1 | 0..1 | Price for first child from second age range |
./ChildB1/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./ChildB1/rec | 0..1 | Recommended price |
./Price/ChildB2 | 0..1 | Price for second child from second age range |
./ChildB2/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./ChildB2/rec | 0..1 | Recommended price |
./Price/ChildC1 | 0..1 | Price for first child from third age range |
./ChildC1/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./ChildC1/rec | 0..1 | Recommended price |
./Price/ChildC2 | 0..1 | Price for second child from third age range |
./ChildC2/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./ChildC2/rec | 0..1 | Recommended price |
./Price/Addit1 | 0..1 | Additional passenger price. |
./Addit1/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./Addit1/rec | 0..1 | Recommended price |
./Price/Baby | 0..1 | Price for babies. |
./Baby/@type | 1 | Price type. Possible values: • Fixed • Porcentual • SubstractAmount • ReplacePrices • ApplyRateDiscount. |
./Baby/rec | 0..1 | Recommended price |
./Price/Percentage | 0..1 | Percentage room price supplement/discount |
Allotments | 0..1 | Supplements allotments. Available whenever an offer conveys specific allotments. |
./Allotments/Allotment | 1 | Allotment node. |
./Allotment/@to | 1 | Allotment to date. |
./Allotment/@from | 1 | Allotment from date. |
./Allotment/@value | 0..1 | Allotment value (number of rooms). |
1. Basic discount 10%
<Offer priority="0" onRequest="false" name="10% DISCOUNT" idCat="27" id="909184" class="BasicDisc">
<Rules>
<StayDates>
<Date from="2019-05-25T00:00:00" to="2019-05-25T00:00:00" />
<Date from="2020-06-01T00:00:00" to="2020-06-01T00:00:00" />
</StayDates>
<BookingPeriod min="2019-05-21T00:00:00" max="9999-12-31T00:00:00" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<MinAge>0</MinAge>
<RoomTypes />
<BoardTypes />
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
<Prices>
<Application>Total</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<Percentage>10</Percentage>
</Price>
</Price>
</Prices>
</Offer>
2. Basic discount drinks included on meals
There are no price or percentage discount.
<Offer priority="4" onRequest="false" name="Drinks included on meals from 01/11/2019 to 30/04/2020(Water,wine,refreshments and draft beer) " idCat="26" id="874324" class="BasicDisc">
<Rules>
<StayDates>
<Date from="2019-11-01T00:00:00" to="2020-04-30T00:00:00" />
</StayDates>
<BookingPeriod min="2019-04-23T00:00:00" max="9999-12-31T00:00:00" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<ApplyWithOffers>
<Offer>874297</Offer>
<Offer>874383</Offer>
<Offer>874300</Offer>
<Offer>874385</Offer>
</ApplyWithOffers>
<MinAge>0</MinAge>
<RoomTypes />
<BoardTypes />
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
<Prices>
<Application>Base</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<BoardTypes>
<BoardType id="1" />
</BoardTypes>
</Price>
<Price>
<BoardTypes>
<BoardType id="4" />
</BoardTypes>
</Price>
</Price>
</Prices>
</Offer>
3. Early Booking
Early booking if stay dates between 08-31 and 10-18, the book is made from 09-27 to 07-31. It just applies to room types 87, 112, 200, 205 and 252.
<Offer priority="0" onRequest="false" name="EARLY BOOKING 10%" idCat="24" id="647890" class="EarlyBooking">
<Rules>
<StayDates>
<Date from="2019-08-31T00:00:00" to="2019-10-18T00:00:00" />
</StayDates>
<BookingPeriod min="2018-09-27T00:00:00" max="2019-07-31T00:00:00" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<MinAge>0</MinAge>
<RoomTypes>
<RoomType id="87" />
<RoomType id="112" />
<RoomType id="200" />
<RoomType id="205" />
<RoomType id="252" />
</RoomTypes>
<BoardTypes />
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
<PaymentConditions>
<PaymentDate>2019-08-15T00:00:00</PaymentDate>
<Percentage>50</Percentage>
</PaymentConditions>
</Rules>
<Prices>
<Application>Total</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<RoomTypes>
<RoomType id="87" />
<RoomType id="112" />
<RoomType id="200" />
<RoomType id="205" />
<RoomType id="252" />
</RoomTypes>
<Percentage>10</Percentage>
</Price>
</Price>
</Prices>
</Offer>
4. Free Nights
<Offer priority="0" onRequest="false" name="7x6 OFFER" idCat="25" id="585879" class="FreeNights">
<Rules>
<StayDates>
<Date from="2020-03-23T00:00:00" to="2020-06-21T00:00:00" />
<Date from="2020-09-07T00:00:00" to="2020-11-03T00:00:00" />
</StayDates>
<BookingPeriod min="2018-07-27T00:00:00" max="9999-12-31T00:00:00" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<ApplyWithOffers>
<Offer>585877</Offer>
<Offer>585915</Offer>
</ApplyWithOffers>
<MinAge>0</MinAge>
<RoomTypes />
<BoardTypes />
<Nights Nights="7" night="Cheapest" free="1" applyOnce="false" />
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
</Offer>
5. Free meal / meal upgrade
<Offer priority="0" onRequest="false" name="FBxHB " idCat="26" id="641361" class="FreeMeals">
<Rules>
<StayDates>
<Date from="2020-06-15T00:00:00" to="2020-06-21T00:00:00" />
</StayDates>
<BookingPeriod min="2018-09-20T00:00:00" max="9999-12-31T00:00:00" />
<LenghtStay min="7" max="1000" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<MinAge>0</MinAge>
<RoomTypes />
<BoardTypes>
<BoardType id="4" />
</BoardTypes>
<MealPlan pay="1" get="4" />
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
</Offer>
6. Lower price
If AI (id 5) the adult price = 20.5
<Offer priority="8" onRequest="false" name="AI SPECIAL OFFER" idCat="27" id="900434" class="LowerPrice">
<Rules>
<StayDates>
<Date from="2020-05-24T00:00:00" to="2020-06-08T00:00:00" />
</StayDates>
<BookingPeriod min="2019-05-15T00:00:00" max="9999-12-31T00:00:00" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<MinAge>0</MinAge>
<RoomTypes />
<BoardTypes />
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
<Prices>
<Application>Base</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<BoardTypes>
<BoardType id="5" />
</BoardTypes>
<Adult type="ReplacePrices">20.5</Adult>
<ChildA1>0</ChildA1>
<Addit1>0</Addit1>
</Price>
</Price>
</Prices>
</Offer>
7. Lower price
Seniors 60+ 10%
<Offer priority="1" onRequest="false" name="DISCOUNT SENIORS 60+" idCat="27" id="821199" class="LowerPrice" PromotionalCode="DISCOUNT SENIORS 60+">
<Rules>
<StayDates>
<Date from="2019-11-01T00:00:00" to="2022-04-30T00:00:00" />
</StayDates>
<BookingPeriod min="2020-03-07T00:00:00" max="9999-12-31T00:00:00" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<MinAge>60</MinAge>
<RoomTypes />
<BoardTypes />
<Packaged>false</Packaged>
<SpecialType code="Mas60">Mayores de 60 años</SpecialType>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
<Prices>
<Application>Normal</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<Percentage>10</Percentage>
</Price>
</Price>
</Prices>
</Offer>
7. Free passengers
When the related conditions apply (such as <Date from = "2023-01-17T00:00:00" to = "2023-12-31T00:00:00"/>
and <LenghtStay applyToLengthStayOnly = "false" min = "4" max = "1000" multiples = "0"/>
), the passengers types specified on the FreePaxes node will be free of charge.
<Offer priority = "0" onRequest = "false" name = "FreePaxes Push" idCat = "1" id = "322790" class = "FreePassengers" PromotionalCode = "">
<Rules>
<CheckInDates>
<Date from = "2023-01-17T00:00:00" to = "2023-12-31T00:00:00"/>
</CheckInDates>
<BookingPeriod min = "2023-01-17T00:00:00" max = "9999-12-31T00:00:00"/>
<LenghtStay applyToLengthStayOnly = "false" min = "4" max = "1000" multiples = "0"/>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<MinAge>0</MinAge>
<FreePaxes>
<Additional first = "true"/>
<ChildA second = "true"/>
<ChildB>true</ChildB>
<ChildC/>
</FreePaxes>
<Packaged>false</Packaged>
<Additionals>true</Additionals>
<Children>true</Children>
<NonRefundable>false</NonRefundable>
</Rules>
<Prices>
<Application>Base</Application>
<PricePerNight>false</PricePerNight>
</Prices>
</Offer>
1. Basic Supplement
Prices are applied depending on the passenger of the booking. In the following example Adults, children and additional adults have different rates.
<Supplement id="939302" name="Gala New Years Eve 31.12 (BB)" class="BasicSupl" onRequest="false" mandatory="false" idCat="30">
<Rules>
<StayDates>
<Date from="2019-12-31T00:00:00" to="2019-12-31T00:00:00" />
</StayDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>false</SpecialTax>
<Packaged>false</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>false</Additionals>
<Children>false</Children>
</Rules>
<Prices>
<Application>Total</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<BoardTypes>
<BoardType id="2" />
</BoardTypes>
<Adult type="Fixed">134.02</Adult>
<ChildA1>67.01</ChildA1>
<ChildA2>67.01</ChildA2>
<ChildB1>0</ChildB1>
<Addit1>134.02</Addit1>
</Price>
</Price>
</Prices>
</Supplement>
2. Basic supplement. E.g. VISTA MAR
There is a fixed price for each room and then, some extra passenger (ChildA1, ChildA2 and Addit1 may have further prices for this supplement).
Total price has to be calculated adding the < room > value and the extra passengers that are included in the booking.
Also, this supplement is optional
<Supplement id="737083" name="SUPLEMENTO VISTA MAR" class="BasicSupl" onRequest="false" mandatory="false" idCat="34">
<Rules>
<StayDates>
<Date from="2019-10-30T00:00:00" to="2020-10-31T00:00:00" />
</StayDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>false</SpecialTax>
<Packaged>false</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>false</Additionals>
<Children>false</Children>
</Rules>
<Prices>
<Application>Normal</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<room>15.46</room>
<RoomTypes>
<RoomType id="253" />
</RoomTypes>
<ChildA1>0</ChildA1>
<ChildB1>0</ChildB1>
<Addit1>0</Addit1>
</Price>
</Price>
</Prices>
</Supplement>
3. Basic supplement short stay
If the stay is shorter than 5 nights (1-4), a supplement will be charged in the price.
The additional charge is not a fixed price, but a percentage of the price per night of the booking (30%).
<Supplement id="851369" name="Supl. Corta Estancia 2-4 Noches" class="ShortStaySupl" onRequest="false" mandatory="true" idCat="33">
<Rules>
<StayDates>
<Date from="2019-10-30T00:00:00" to="2020-10-31T00:00:00" />
</StayDates>
<LenghtStay totalBooking="true" min="1" max="4" />
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>false</SpecialTax>
<Packaged>false</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>false</Additionals>
<Children>false</Children>
</Rules>
<Prices>
<Application>Total</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day" />
<Price>
<Price>
<Percentage>30</Percentage>
</Price>
</Price>
</Prices>
</Supplement>
4. Room type supplement
From these supplements, you will obtain a new price based on the baseRoom, by adding the supplement amount to the base rate matching baseRoom + BoardType.
Ej: To obtain new rate RoomType = 85 BoardType = 2, we will add -9.33 to rate RoomType = 112 BoardType = 2.
<Supplement id="3951571" name="Habitacion interior estandar (sin terraza)" class="RoomSup" onRequest="false" mandatory="false" idCat="0" baseRoom="112">
<Rules>
<StayDates>
<Date from="2019-10-30T00:00:00" to="2020-10-31T00:00:00"/>
</StayDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>true</SpecialTax>
<Packaged>false</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>false</Additionals>
<Children>false</Children>
</Rules>
<Prices>
<Application>Base</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day"/>
<Price>
<Price>
<RoomTypes>
<RoomType id="85"/>
</RoomTypes>
<BoardTypes>
<BoardType id="2"/>
<BoardType id="1"/>
<BoardType id="4"/>
</BoardTypes>
<Adult type="Fixed">-9.33</Adult>
<ChildA1 type="ApplyRateDiscount"/>
<Addit1 type="ApplyRateDiscount"/>
</Price>
</Price>
</Prices>
</Supplement>
5. Board type supplement
From these supplements, you will obtain a new price based on the baseBoard, by adding the supplement amount to the base rate matching baseBoard + RoomType.
Ej: To obtain new rate RoomType = 85 BoardType = 2, we will add -9.33 to rate RoomType = 85 BoardType = 1.
<Supplement id="3951571" name="Habitacion interior estandar (sin terraza)" class="BoardSup" onRequest="false" mandatory="false" idCat="0" baseBoard="1">
<Rules>
<StayDates>
<Date from="2019-10-30T00:00:00" to="2020-10-31T00:00:00"/>
</StayDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>true</SpecialTax>
<Packaged>false</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>false</Additionals>
<Children>false</Children>
</Rules>
<Prices>
<Application>Base</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation="Day"/>
<Price>
<Price>
<RoomTypes>
<RoomType id="85"/>
<RoomType id="112"/>
</RoomTypes>
<BoardTypes>
<BoardType id="2"/>
</BoardTypes>
<Adult type="Fixed">-9.33</Adult>
<ChildA1 type="ApplyRateDiscount"/>
<Addit1 type="ApplyRateDiscount"/>
</Price>
</Price>
</Prices>
</Supplement>
6. Basic supplement with @baseSupplement
It is possible for some basic supplements to base its price on a specific board (named @baseSupplement), given the case, the price of a specific board will need to be calculated in addition to the one of the baseSupplement.
Ej: If we selected any room (as this supplement applies to all of the rooms of the contract) and the 2 BoardType, we would get a supplement price of 24.21 (in other words, the price of the base supplement 10.53 plus the price of the selected board 13.68) per adult which would need to be added to the base price of the selected room / board.
<Supplement id="644" name="baseSupplement" class="BasicSupl" onRequest="false" mandatory="true" idCat="1">
<Rules>
<DirectPayment>false</DirectPayment>
<CheckInDates>
<Date from = "2019-10-30T00:00:00" to = "2023-10-31T00:00:00"/>
</CheckInDates>
<MatchAllStay>0</MatchAllStay>
<MatchOneApplyWholeStay>0</MatchOneApplyWholeStay>
<SpecialTax>true</SpecialTax>
<Packaged>false</Packaged>
<Voucher>false</Voucher>
<Displacement>No</Displacement>
<Additionals>true</Additionals>
<Children>true</Children>
</Rules>
<Prices>
<Application>Normal</Application>
<PricePerNight>true</PricePerNight>
<Seasons quotation = "Day"/>
<Price>
<Price baseSupplement = "3">
<BoardTypes>
<BoardType id = "3"/>
</BoardTypes>
<Adult type = "Fixed">10.53</Adult>
<ChildA1 type = "ApplyRateDiscount"/>
<ChildB1 type = "ApplyRateDiscount"/>
<Addit1 type = "ApplyRateDiscount"/>
</Price>
<Price baseSupplement = "3" mealSupplement = "True">
<BoardTypes>
<BoardType id = "5"/>
</BoardTypes>
<Adult type = "Fixed">11.58</Adult>
<ChildA1 type = "ApplyRateDiscount"/>
<ChildB1 type = "ApplyRateDiscount"/>
<Addit1 type = "ApplyRateDiscount"/>
</Price>
<Price baseSupplement = "3" mealSupplement = "True">
<BoardTypes>
<BoardType id = "1"/>
</BoardTypes>
<Adult type = "Fixed">12.63</Adult>
<ChildA1 type = "ApplyRateDiscount"/>
<ChildB1 type = "ApplyRateDiscount"/>
<Addit1 type = "ApplyRateDiscount"/>
</Price>
<Price baseSupplement = "3" mealSupplement = "True">
<BoardTypes>
<BoardType id = "2"/>
</BoardTypes>
<Adult type = "Fixed">13.68</Adult>
<ChildA1 type = "ApplyRateDiscount"/>
<ChildB1 type = "ApplyRateDiscount"/>
<Addit1 type = "ApplyRateDiscount"/>
</Price>
</Price>
</Prices>
</Supplement>
To make a booking through “Push system”, it is necessary to collect the information from XMLs JP_HotelRatePlanNotifRQ and JP_HotelAvailNotifRQ.
From JP_HotelAvailNotifRQ_HBE129_324_243.xml you will obtain response to whether the selected dates are available or not in order to make a booking
<Contract id="324_243" delta="false">
<Allotments>
<Allotment idRoomType="198" from="2019-10-30T00:00:00" to="2022-12-31T00:00:00" available="1" />
<Allotment idRoomType="2" from="2019-10-30T00:00:00" to="2022-12-31T00:00:00" available="1" />
<Allotment idRoomType="203" from="2019-10-30T00:00:00" to="2022-12-31T00:00:00" available="1" />
<Allotment idRoomType="204" from="2019-10-30T00:00:00" to="2022-12-31T00:00:00" available="1" />
<Allotment idRoomType="5" from="2019-10-30T00:00:00" to="2022-12-31T00:00:00" available="1" />
</Allotments>
<StopSales />
</Contract>
In this example it is possible to book between 2019-10-30 and 2022-12-31 for room code 203 (available=”1”).
With JP_HotelRatePlanNotifRQ_HBE129_324.xml you can obtain the rest of information (hotelcode, contract id, prices, board, room occupancy, offers, supplements…).
<JP_HotelRatePlanNotifRQ id="324" name="Payment at destination sales contract" type="FIT" idHotel="HBE|129" idHotelEncryp="Howmhwpb4balDTdoPISQ7Q==" nameHotel="Ortigas Budget Hotel - Kapitolyo"
delta="false" currency="USD" multimarkup="false" applicationTypeOffer="Priority">
<Rates>
<Rate id="1">
<Dates>
<Date from="2019-01-09T00:00:00" to="2022-12-31T00:00:00" />
</Dates>
<ChildrenAgeRange>
<AgeRange code="ChildA" fromAge="2" toAge="12" />
</ChildrenAgeRange>
<Prices>
<PricePerNight>false</PricePerNight>
<Price>
<RoomTypes>
<RoomType id="273"/>
</RoomTypes>
<BoardTypes>
<BoardType id="2"/>
</BoardTypes>
<Adult type="Fixed">190</Adult>
<ChildA1>95</ChildA1>
<ChildA2>95</ChildA2>
<ChildB1>95</ChildB1>
<ChildB2>95</ChildB2>
</Price>
</Prices>
</Rate>
</Rates>
<Taxes>
<!-- Taxes-->
</Taxes>
<CancellationPolicies>
<!-- Cancellation Policies-->
</CancellationPolicies>
<Supplements>
<!-- Supplements -->
</Supplements>
<Offers>
<!-- Offers -->
</Offers>
<Restrictions>
<!-- Restrictions -->
</Restrictions>
<SpecialNotes>
<!-- SpecialNotes -->
</SpecialNotes>
</JP_HotelRatePlanNotifRQ>