Avail & Rates Search
OTA Message Pair: OTA_HotelAvailRQ / OTA_HotelAvailRS
Description
The OTA_HotelAvailRQ message is a request for current live availability, rates and restrictions from a single property.
In order to use this service, a live connection to Levart along with a valid username and password are required (HTTP Basic Authentication)
When a client application sends a correctly-formatted OTA_HotelAvailRQ message Levart will respond with an OTA_HotelAvailRS message containing the property availability.
The request must contain a valid HotelCode (gained from the OTA_HotelSearch messages) and a valid Start and End dates in the StayDateRange element.
The response will list all the available RoomRates and availability data.
Please don't publish the property availability (NumberOfUnits) data to the public.
Request
<OTA_HotelAvailRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="dsfausdg6ss4sbax7" TimeStamp="2016-01-28T15:15:00+08:00">
<AvailRequestSegments>
<AvailRequestSegment>
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode="www.property.com.au"/>
<StayDateRange Start="2016-02-17" End="2016-02-27"/>
</Criterion>
</HotelSearchCriteria>
</AvailRequestSegment>
</AvailRequestSegments>
</OTA_HotelAvailRQ>
The results provided in the OTA_HotelAvailRS response are a representation of actual property rates and inventory, not a list of directly bookable options by themselves. The StayDateRange Start and End dates should not be used as a check-in and check-out dates merely a range to search for Inventory, Rates and Restrictions data. You will need to take into account all restrictions including the daily MinLOS (Minimum Length of Stay), Closed to Arrival and Closed to Departure restrictions when determining if a guest can stay in a particular set of dates.
OTA_HotelAvailRQ Specification
Element | Num | Description |
---|---|---|
OTA_HotelAvailRQ | 1 | Root element |
@Version | 1 | Current Version 1.0 |
@EchoToken | 0..1 | EchoToken string unique ID |
@TimeStamp | 1 | Date and time of the transaction in ISO 8601 format. e.g. 2016-01-28T15:15:00+08:00 |
AvailRequestSegments / AvailRequestSegment / HotelSearchCriteria / Criterion | 1 | Availability Search Criterion element |
HotelRef | 1 | HotelRef element |
@HotelCode | 1 | The Levart hotel code for which the information is being requested. The value is similar to a web address i.e. www.property.com.au |
StayDateRange | 1 | HotelStayDateRange element |
@Start | 1 | Start Date i.e. 2016-01-01 (inclusive) |
@End | 1 | End Date i.e. 2016-02-01 (inclusive) |
Response (Success)
<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="dsfausdg6ss4sbax7" TimeStamp="2016-01-28T15:15:00+08:00">
<Success/>
<RoomStays>
<RoomStay AvailabilityStatus="AvailableForSale">
<RoomTypes>
<RoomType RoomTypeCode="190">
<RoomDescription Name="Onslow Room"/>
</RoomType>
</RoomTypes>
<RoomRates>
<RoomRate RoomTypeCode="190" RatePlanCode="1569" Availability="AvailableForSale">
<Rates>
<Rate EffectiveDate="2016-02-17" ExpireDate="2016-02-18" NumberOfUnits="20" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="230.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
</Rate>
<Rate EffectiveDate="2016-02-19" ExpireDate="2016-02-19" NumberOfUnits="20" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="232.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<TPA_Extensions>
<Restrictions ClosedToArrival="True"/>
</TPA_Extensions>
</Rate>
<Rate EffectiveDate="2016-02-21" ExpireDate="2016-02-21" NumberOfUnits="8" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="234.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="30.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="20.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
</Rate>
<Rate EffectiveDate="2016-02-22" ExpireDate="2016-02-22" NumberOfUnits="1" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="235.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
<TPA_Extensions>
<Restrictions ClosedToDeparture="True"/>
</TPA_Extensions>
</Rate>
<Rate EffectiveDate="2016-02-23" ExpireDate="2016-02-23" NumberOfUnits="20" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="236.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
</Rate>
<Rate EffectiveDate="2016-02-24" ExpireDate="2016-02-24" NumberOfUnits="20" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="237.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
</Rate>
<Rate EffectiveDate="2016-02-25" ExpireDate="2016-02-25" NumberOfUnits="20" MaxGuestApplicable="2" MinLOS="2">
<Base AmountAfterTax="238.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
</Rate>
<Rate EffectiveDate="2016-02-26" ExpireDate="2016-02-27" NumberOfUnits="20" MaxGuestApplicable="2" MinLOS="1">
<Base AmountAfterTax="230.00" CurrencyCode="AUD"/>
<!--The AgeQualifyingCode attribute is present if the extra pax rate applies to a specific guest type. 10 = adult, 8 = child. See OTA AQC code types.-->
<AdditionalGuestAmounts>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="10">
<Amount AmountAfterTax="10.00"/>
</AdditionalGuestAmount>
<AdditionalGuestAmount MaxAdditionalGuests="2" AgeQualifyingCode="8">
<Amount AmountAfterTax="5.00"/>
</AdditionalGuestAmount>
</AdditionalGuestAmounts>
</Rate>
</Rates>
<RoomRateDescription Name="Internet Rate"/>
</RoomRate>
</RoomRates>
</RoomStay>
</RoomStays>
<Criteria>
<Criterion>
<HotelRef HotelCode="www.property.com.au"/>
<StayDateRange Start="2016-02-17" End="2016-02-27"/>
</Criterion>
</Criteria>
</OTA_HotelAvailRS>
Note that Rate element effective for the 20th is not present. This represents that the room type and rate type combination is not available for this day.
A daily MinLOS (Minimum Length of Stay) of X represents that if this date is included in a booking the total stay must be longer than X nights. e.g. A single night booking will not be possible on the 25th with the current results due to the MinLOS of 2.
Representation of Response
Date | 17/02 | 18/02 | 19/02 | 20/02 | 21/02 | 22/02 | 23/02 | 24/02 | 25/02 | 26/02 | 27/02 |
---|---|---|---|---|---|---|---|---|---|---|---|
Rate | $230.00 | $230.00 | $232.00 | $0.00 | $234.00 | $235.00 | $236.00 | $237.00 | $238.00 | $230.00 | $230.00 |
Availability | 20 | 20 | 20 | 0 | 8 | 1 | 20 | 20 | 20 | 20 | 20 |
Room Rate up to | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX |
Max Additional Guests | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX | 2 PAX |
Extra Adult Rate | $10.00 | $10.00 | $10.00 | $0.00 | $30.00 | $10.00 | $10.00 | $10.00 | $10.00 | $10.00 | $10.00 |
Extra Child Rate | $5.00 | $5.00 | $5.00 | $0.00 | $20.00 | $5.00 | $5.00 | $5.00 | $5.00 | $5.00 | $5.00 |
Min LOS | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 1 |
Closed Arrivals | False | False | True | False | False | False | False | False | False | False | False |
Closed Departures | False | False | False | False | False | True | False | False | False | False | False |
Response (Error)
<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="dsfausdg6ss4sbax7" TimeStamp="2016-01-28T15:15:00+08:00">
<Errors>
<Error>Could not find property</Error>
</Errors>
</OTA_HotelAvailRS>
Response Specification
Element | Num | Description |
---|---|---|
OTA_HotelAvailRS | 1 | Root element |
@Version | 1 | Current Version 1.0 |
@EchoToken | 0..1 | EchoToken attribute response |
@TimeStamp | 1 | Date and time of the transaction in ISO 8601 format. e.g. 2016-01-28T15:15:00+08:00 |
Success | 0..1 | Successful transaction if exists |
Errors / Error | 0..n | Error messages |
RoomStays / RoomStay | 1..n | Availability Search Criterion element |
@AvailabilityStatus | 1 | Should always equal AvailableForSale |
RoomTypes / RoomType | 1 | RoomType element of the current RoomStay |
@RoomTypeCode | 1 | Code of the room e.g. 1404 |
RoomDescription | 1 | RoomDescription element |
@Name | 1 | Text description of the room. e.g. 1 Bedroom Aparrment |
RoomRates / RoomRate | 1..n | RoomRate element. 1 per Room Type and Rate Type (Plan) combination. |
@RoomTypeCode | 1 | Room Type Code |
@RatePlanCode | 1 | Rate Plan Code |
@Availability | 1 | Always 'AvailableForSale' |
Rates / Rate | 1..n | Rate element |
@EffectiveDate | 1 | Start date of current rate period e.g. 2016-05-05 (inclusive) |
@ExpireDate | 1 | End date of current rate period e.g. 2016-05-10 (inclusive) |
@NumberOfUnits | 1 | Current availability (Remainder) of rooms within the Rate / Room type |
@MaxGuestApplicable | 1 | Maximum guests that are applicable for the Room Rate specified in /Base/@AmountAfterTax Any guests in addition to this need to be priced in as an AdditionalGuestAmount (If rate supports additional guests) |
@MinLOS | 1 | Minimum length of stay restriction in days |
Base | 1 | Base pricing element |
@AmountAfterTax | 1 | The daily price for the room for the night |
@CurrencyCode | 1 | 3 letter currency code defined in ISO 4217 e.g. AUD for Australian Dollar |
AdditionalGuestAmounts | 0..1 | Defined if over the room rate applies for |
AdditionalGuestAmount | 1..n | AdditionalGuestAmount element |
@AgeQualifyingCode | 1 | Code is 8 for Child or 10 for Adult. Refer to the OTA Age Qualifying Code (AQC) Table |
@MaxAdditionalGuests | 1 | Maximum PAX that the AdditionalGuestAmount can be used on top of the base MaxGuestApplicable |
Amount | Amount Element | |
@AmountAfterTax | 1 | Per PAX additional person charge. |
TPA_Extensions | 0..1 | TPA_Extensions element is Included if restrictions element required |
Restrictions | 1 | Restrictions element |
@ClosedToArrival | 0..1 | If ClosedToArrival attribute is set to True if the room is currently closed to all guest arrivals. |
@ClosedToDeparture | 0..1 | If ClosedToDeparture attribute is set to True if the room is currently closed to all guest departures. |
RoomRate / RoomRateDescription | 1 | RoomRateDescription element |
@Name | 1 | Name of the current Rate Type (of the RoomStay). |
Criteria / Criterion | 1 | Search Criterion element (Repeated from Request message) |
HotelRef | 1 | HotelRef element |
@HotelCode | 1 | The Levart hotel code for which the information was requested. |
StayDateRange | 1 | HotelStayDateRange element |
@Start | 1 | Start Date i.e. 2016-01-01 |
@End | 1 | End Date i.e. 2016-02-01 |
OTA Age Qualifying Code (AQC) Table
Code | Description |
---|---|
1 | Over 21 |
2 | Over 65 |
3 | Under 2 |
4 | Under 12 |
5 | Under 17 |
6 | Under 21 |
7 | Infant |
8 | Child |
9 | Teenager |
10 | Adult |
11 | Senior |
12 | Additional occupant with adult |
13 | Additional occupant without adult |
14 | Free child |
15 | Free adult |
16 | Young driver |
17 | Younger driver |
18 | Under 10 |
19 | Junior |
*Only Adult and Child supported by Levart