Reservation Notif
OTA Message Pair: OTA_HotelResNotifRQ / OTA_HotelResNotifRS
The Hotel Reservation Notification provides a request/response pair of messages to support the functionality of updating Levart with full reservation data. The message set assumes a push model.
The message is a notification of the creation of a booking and does not require the receiving system to confirm the booking being placed in real-time, only the receipt of the message so it can be removed from the queue appropriately. The responding system will add its own confirmation ID in the response message once successfully imported.
Modification notification should be sent using the OTA_HotelResModifyNotifRQ message which is essentially the same as OTA_HotelResNotifRQ apart for some minor details.
Cancellations should be sent using the OTA_CancelRQ message.
Direction
The 3rd party should send Levart the Reservation Notification using the OTA_HotelResNotifRQ message. The receiving system will acknowledge its receipt of that report using the OTA_HotelResNotifRS message.
Test Booking Details (Represented in XML Below)
Reference Number | 1111111123 |
---|---|
Source | 3rd Party |
Property | Test Hotel |
Requested | Saturday, 9 June 2018 22:40:21 +08:00 |
Arrival | Wednesday, 6 February 2019 |
Departure | Tuesday, 12 February 2019 |
Stay Duration | 6 Nights |
Status | Booked |
Total Cost | $ 4,050.00 AUD |
Principal Guest
Salutation | Mr |
---|---|
First Name | James |
Middle Name | P |
Last Name | Simmonds |
jammes@levart.com.au | |
Phone | 08 9382 8001 |
Fax | 08 9382 8003 |
Mobile | 0444 444 444 |
Address | Unit 2 39 Chapel Street |
Accommodation
Room Type | Rate Type | A/C | 06/02/2019 | 07/02/2019 | 08/02/2019 | 09/02/2019 | 10/02/2019 | 11/02/2019 | Total |
---|---|---|---|---|---|---|---|---|---|
Standard Room | BAR Rate | 2 Adults / 1 Child | $ 500.00 | $ 600.00 | $ 700.00 | $ 700.00 | $ 700.00 | $ 700.00 | $ 3,900.00 AUD |
Accommodation Total | $ 3,900.00 AUD |
Extra Information & Guest Comments
Test Comment |
Payment Details
Card Holder Name | James Test Card |
---|---|
Card Type | Visa |
Card Number | 4111-1111-1111-1111 |
Card Expiry | 03 / 2008 |
Travel Agent
Name | Super Travel Co |
---|---|
IATA Code | 0123456 |
Address | Floor 2 44 William Street Perth WA 6000 AUSTRALIA |
Phone | 08 9444 4444 |
Fax | 08 9382 8003 |
agent@levart.com.au |
Request
<OTA_HotelResNotifRQ 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 https://secure.levartdistributionsystems.com.au/html/schema/OTA/2015B/OTA_HotelResNotifRQ.xsd"
TimeStamp="2020-06-19T22:21:23+08:00" Target="Production" Version="1.0" ResStatus="Book" EchoToken="12345">
<HotelReservations>
<HotelReservation CreateDateTime="2018-06-09T22:40:21+08:00" RoomStayReservation="true" CreatorID="3rd Party">
<UniqueID Type="14" ID="1111111123" ID_Context="CrsConfirmNumber" />
<RoomStays>
<RoomStay MarketCode="MKT" SourceOfBusiness="13">
<RoomTypes>
<RoomType IsRoom="true" RoomTypeCode="STD" NumberOfUnits="1">
<RoomDescription Name="Standard Room">
<Text></Text>
</RoomDescription>
</RoomType>
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="BAR" EffectiveDate="2019-02-06" ExpireDate="2019-02-12">
<RatePlanDescription Name="BAR Rate">
<Text>BAR Rate</Text>
</RatePlanDescription>
</RatePlan>
</RatePlans>
<RoomRates>
<RoomRate EffectiveDate="2019-02-06" ExpireDate="2019-02-13" RoomTypeCode="STD" RatePlanCode="BAR" NumberOfUnits="1">
<Rates>
<Rate RateTimeUnit="Day" UnitMultiplier="1" EffectiveDate="2019-02-06" ExpireDate="2019-02-07">
<Base AmountAfterTax="500.00" CurrencyCode="AUD" DecimalPlaces="2"/>
<Total AmountAfterTax="500.00" CurrencyCode="AUD" DecimalPlaces="2"/>
</Rate>
<Rate RateTimeUnit="Day" UnitMultiplier="1" EffectiveDate="2019-02-07" ExpireDate="2019-02-08">
<Base AmountAfterTax="600.00" CurrencyCode="AUD" DecimalPlaces="2"/>
<Total AmountAfterTax="600.00" CurrencyCode="AUD" DecimalPlaces="2"/>
</Rate>
<Rate RateTimeUnit="Day" UnitMultiplier="1" EffectiveDate="2019-02-08" ExpireDate="2019-02-12">
<Base AmountAfterTax="700.00" CurrencyCode="AUD" DecimalPlaces="2"/>
<Total AmountAfterTax="700.00" CurrencyCode="AUD" DecimalPlaces="2"/>
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<GuestCounts IsPerRoom="true">
<GuestCount AgeQualifyingCode="10" Count="2" />
<GuestCount AgeQualifyingCode="8" Count="1" />
</GuestCounts>
<TimeSpan Start="2019-02-06" End="2019-02-12" Duration="P6N" />
<Total AmountAfterTax="3900.00" CurrencyCode="AUD" DecimalPlaces="2" />
<BasicPropertyInfo HotelCode="504" HotelName="Test Hotel"/>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest>
<Profiles>
<ProfileInfo>
<UniqueID Type="1" ID="911bcfce96694f40803821559423d9ea" ID_Context="ProfileID"/>
<Profile ProfileType="1">
<Customer>
<PersonName>
<NamePrefix>Mr</NamePrefix>
<GivenName>James</GivenName>
<MiddleName>P</MiddleName>
<Surname>Simmonds</Surname>
</PersonName>
<Telephone PhoneTechType="1" PhoneNumber="08 9382 8001" />
<Telephone PhoneTechType="3" PhoneNumber="08 9382 8003" />
<Telephone PhoneTechType="5" PhoneNumber="0444 444 444" />
<Email>jammes@levart.com.au</Email>
<Address>
<AddressLine>Unit 2</AddressLine>
<AddressLine>39 Chapel Street</AddressLine>
<CityName>Melbourne</CityName>
<PostalCode>3000</PostalCode>
<StateProv>NSW</StateProv>
<CountryName Code="AU">Australia</CountryName>
</Address>
</Customer>
<Affiliations>
<TravelArranger TravelSector="3" CompanyShortName="Super Travel Co" Code="0123456" CodeContext="IATA" />
</Affiliations>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<Services>
<Service Quantity="1">
<Price>
<Total AmountAfterTax="100.00" CurrencyCode="AUD"/>
</Price>
<ServiceDetails>
<ServiceDescription Name="Town Tour"/>
</ServiceDetails>
</Service>
<Service Quantity="1">
<Price>
<Total AmountAfterTax="50.00" CurrencyCode="AUD"/>
</Price>
<ServiceDetails>
<ServiceDescription Name="Champagne"/>
</ServiceDetails>
</Service>
</Services>
<ResGlobalInfo>
<Comments>
<Comment>
<Text>Test Comment</Text>
</Comment>
</Comments>
<Guarantee>
<GuaranteesAccepted>
<GuaranteeAccepted PaymentTransactionTypeCode="charge">
<PaymentCard SeriesCode="456" CardType="1" CardCode="VI" CardNumber="4111111111111111" ExpireDate="0308">
<CardHolderName>James Test Card</CardHolderName>
</PaymentCard>
</GuaranteeAccepted>
</GuaranteesAccepted>
</Guarantee>
<Total AmountAfterTax="4050.00" CurrencyCode="AUD" DecimalPlaces="2"/>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_Value="1111111123" ResID_Source="CRS" ResID_SourceContext="CrsConfirmNumber" />
</HotelReservationIDs>
<Profiles>
<ProfileInfo>
<UniqueID Type="5" ID="0123456" ID_Context="IATA"/>
<Profile ProfileType="4">
<CompanyInfo>
<CompanyName CodeContext="IATA" CompanyShortName="Super Travel Co" TravelSector="3" Code="0123456" />
<AddressInfo></AddressInfo>
<TelephoneInfo PhoneTechType="1" PhoneNumber="08 9444 4444" />
<TelephoneInfo PhoneTechType="3" PhoneNumber="08 9382 8003" />
<TelephoneInfo PhoneTechType="5" PhoneNumber="0444 444 444" />
<Email>agent@levart.com.au</Email>
<BusinessLocale Type="2">
<AddressLine>Floor 2</AddressLine>
<AddressLine>44 William Street</AddressLine>
<CityName>Perth</CityName>
<PostalCode>6000</PostalCode>
<StateProv>WA</StateProv>
<CountryName Code="AU">Australia</CountryName>
</BusinessLocale>
</CompanyInfo>
</Profile>
</ProfileInfo>
</Profiles>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRQ>
Element | Num | Description |
---|---|---|
OTA_HotelResNotifRQ | 1 | The OTA_HotelResNotifRQ is the message that sends the notification of a hotel reservation. |
OTA_HotelResNotifRQ > @xmlns | 1 | Namespace for the OTA payload message. |
OTA_HotelResNotifRQ > @EchoToken | 0..1 | |
OTA_HotelResNotifRQ > @TimeStamp | 1 | Timestamp of when this message was generated. ISO 8601 extended format: YYYY-MM-DDThh:mm:ss[+/-]hh:mm |
OTA_HotelResNotifRQ > @Target | 1 | Indicates the message is a production message. |
OTA_HotelResNotifRQ > @Version | 1 | Version of the OTA message. Currently 1.0 |
OTA_HotelResNotifRQ > @ResStatus | 1 | An enumeration that indicates the action to be taken on the request. Only Commit is supported. |
POS | 0..1 | Container element for point of sale information. For more information and examples about this object, please refer to Understanding the POS element in the FAQ & Guides section. |
Source | 1..2 | Source of the booking notification. |
RequestorID | 0..1 | Identifier of the notification requester. |
RequestorID > @Type | 1 | Reference to the type of requester. |
RequestorID >@ID | 1 | |
BookingChannel | 0..1 | This is sent only for @Type=18. Omitted for @Type=5. |
BookingChannel > @Type | 1 | The type of booking channel. Fixed value. 2= CRO (Customer Reservations Office). |
BookingChannel > @Primary | 1 | Indicates whether the enumerated booking channel is the primary means of connectivity used by the source. Fixed value. |
CompanyName | 1 | Identifies the company that is associated with the source ID. |
HotelReservations | 1 | Collection of Hotel Reservations. Container element. Only 1 reservation will be sent per request. |
HotelReservations > HotelReservation | 1 | A single Hotel Reservation. |
HotelReservation > @RoomStayReservation | 1 | Always set to "true". |
HotelReservation > @CreateDateTime | 1 | Date and time stamp of when the reservation was created using ISO 8601 format. |
HotelReservation > @CreatorID | 1 | |
UniqueID | 1 | Unique identifier of the reservation. |
UniqueID > @Type | 1 | Always set to 14=Reservation. |
UniqueID > @ID | 1 | A unique identifying value assigned by the creating system to the reservation. |
HotelReservation > RoomStays | 1 | Collection of room stays, often referred to as segments. Container element. Single occurrence. |
RoomStays > RoomStay | 1 | A single instance of a room stay. Container element. Single occurrence. |
RoomStay > RoomTypes | 1 | Collection of room types. Room types serve as a list of rooms used in the room stay. Container element. Single occurrence. |
RoomTypes > RoomType | 1 | An individual room type. Single occurrence. |
RoomType > @IsRoom | 1 | Always set to true. |
RoomType > @RoomTypeCode | 1 | Room type code: will contain the room type ID. |
RoomStay > RatePlans | 1 | Collection of Rate Plans. |
RatePlans > RatePlan | 1..n | An individual rate plan. Will be repeated once per stay date. |
RatePlan > @RatePlanCode | 1 | Rate plan code: will contain the rate plan ID. |
RatePlan > @EffectiveDate | 1 | Effective Date. Will be repeated for each stay date covered by the booking. Can be ignored. |
RatePlan > @ExpireDate | 1 | Expiry Date, will be set to stay date+1. Can be ignored. |
RoomStay > RoomRates | 1 | Collection of Room Rates. Room rates contain the actual amounts charged for a room. Single occurrence. |
RoomRates > RoomRate | 1..n | An individual room rate. |
RoomRate > @EffectiveDate | 1 | Start date for room and rate combination. |
RoomRate > @ExpireDate | 1 | End date for room and rate combination. |
RoomRate > @RoomTypeCode | 1 | Room type code: will contain the room type ID. |
RoomRate > @NumberOfUnits | 1 | Number of rooms. |
RoomRate > @RatePlanCode | 1 | Rate plan code: will contain the rate plan ID. |
RoomRate > Rates | 1 | A collection of rates for a given room and rate combination. Rates can vary by date range and by age. Container element. Single occurrence. |
Rates > Rate | 1..n | An individual rate. The room rates, fees and extra person charges are as defined by the supplier. |
Rate > @EffectiveDate | 1 | Start date for the rate. |
Rate > @ExpireDate | 1 | End date for the rate. |
Rate > @RateTimeUnit | 1 | Rate time unit. Always set to Day. |
Rate > @UnitMultiplier | 1 | Indicates the number of rate time units such as "3 Days". |
Base | 1 | Base rate. |
@AmountAfterTax | 1 | Daily rate. |
@CurrencyCode | 1 | Currency of the rate using ISO 4217 alphabetic code. |
AdditionalGuestAmounts | 0..1 | Collection of additional guest amounts. Only specified when additional guests amounts need to be charged. |
AdditionalGuestAmount | 1..14 | Incremental amount charged for additional occupants per qualifying age group. |
AdditionalGuestAmount > @AgeQualifyingCode | 0..1 | Age category. OTA codes: 7 for Infant, 8 for Child and 10 for Adult. |
Amount | 0..1 | Amount of additional guest fees. |
Amount > @AmountAfterTax | 0..1 | Additional guest fees including taxes. |
Amount > @CurrencyCode | 0..1 | Currency of the additional guest fees rate using ISO 4217 alphabetic code. e.g. AU for Australia |
Fees | 0..1 | Collection of fees. Container element. Optional element, used only when reservation includes fees. |
Fee | 0..1 | Per day fees added on top of the base daily rate. Not include the per stay fees, which will be added up in the final Total element. |
Fee > @TaxInclusive | 0..1 | Indicates whether taxes are included when figuring the fees. |
Fee > @Type | 0..1 | An enumerated type that defines the type of fees applied to a rate. |
Fee > @Code | 0..1 | Code identifying the fee. |
Fee > @Amount | 0..1 | Fee Amount |
Fee > @CurrencyCode | 0..1 | Currency of the fee amount using ISO 4217 alphabetic code. |
GuestCounts | 1 | Collection of guest counts by age categories. |
@IsPerRoom | 1 | Indicates the guest counts are per room. |
GuestCount | 1..3 | Guest count for a given guest type. |
GuestCount > @AgeQualifyingCode | 1 | Age category. OTA codes: 8 for Child 10 for Adult |
GuestCount> @Count | 1 | The number of guests for the given age category. |
GuestCount > @Age | 1 | The age of each children. Only set for Children age category. |
TimeSpan | 1 | The Time Span that covers the entire room stay. |
TimeSpan > @Start | 1 | Start date for entire room stay (aka Arrival date) |
TimeSpan > @End | 1 | End date for entire room stay (aka Departure date) |
PaymentCard | 1 | Container element that holds the actual credit card information. |
PaymentCard > @CardType | 1 | Use "1" for Credit Card |
PaymentCard > @CardCode | 1 | 2-letter code for the type of credit card: AX: American Express DN: Diners Club DS: Discover Card JC: Japanese Credit Bureau International MC: MasterCard VI: Visa CU: China Union Pay |
PaymentCard > @CardNumber | 1 | The card PAN number. |
PaymentCard > @ExpireDate | 1 | Expiration date of the credit card IN MMYY format. |
PaymentCard > @SeriesCode | 0..1 | Card CSV or CVV. |
PaymentCard > CardHolderName | 0..1 | Container element that holds the card holder name. |
PaymentCard > Address | 0..1 | Billing address. |
Address > AddressLine | 1 | Street number and street name. Set to: 333 108th Avenue NE |
Address > CityName | 1 | City name. Set to: Bellevue |
Address > PostalCode | 1 | Zip or postal code. Set to: 98004 |
Address > StateProv | 0..1 | State or province name; . |
StateProv > @StateCode | 0..1 | State/Province code |
Address > CountryName | 1 | Country name. |
CountryName > @Code | 0..1 | Two letter country codes from the ISO 3166 code list. |
Total | 1 | Total charge for the entire room stay. |
Total > @AmountAfterTax | 1 | Total charge including everything (daily rate, additional guest charges, taxes, fees, etc.). |
Total > @CurrencyCode | 1 | Currency of the total charge in the ISO 4217 alphabetic format. |
Taxes | 1 | Total of taxes charged for entire room stay. |
Taxes > @Amount | 1 | Total tax amount charged. This will be the sum of all amounts in the child elements. |
Taxes > @CurrencyCode | 1 | Currency of total tax amount in the ISO 4217 alphabetic format. |
Tax | 1..n | Individual tax breakdown. |
@Type | 1 | An enumerated type that defines the way taxes are applied to a rate. |
@Code | 1 | Code identifying the tax. Fixed value. 27=Miscellaneous. Ref at the end of this document. Taxes will be combined into a single total. |
@Amount | 1 | Tax amount. |
@CurrencyCode | 1 | Currency of the tax amount using the ISO 4217 alphabetic code. |
BasicPropertyInfo | 1 | Hotel associated with the room stay. The hotel reference identifies a specific hotel by using the Chain Code, the Brand Code, and the Hotel Code. |
@HotelCode | 1 | The code that uniquely identifies a single hotel property. |
ResGuestRPHs | 0..1 | Collection of pointers (Reference Place Holders a.k.a. foreign keys) to establish a link between reservation guests and a given room stay. Collection element. |
ResGuestRPH | 0..1 | An individual guest RPH (pointer) element. Single occurrence. |
@RPH | 0..1 | RPH is used to link the reservation guest to the room stay. Fixed value=1, as there is only one room stay per reservation and a single guest name. |
SpecialRequests | 0..1 | Collection of special requests associated with the room stay. Container element. |
SpecialRequest | 0..n | An Individual special request. |
@Language | 0..1 | Language of the Text element using the RFC 3066 format. See the language code list at the end of the document. |
@RequestCode | 0..1 | Coded special request. |
Text | 0..1 | Textual description of special request. In the case of RequestCode=4, this element will contain the free-form text entered by the consumer. |
@Formatted | 0..1 | Indicates if text is formatted. |
@Language | 0..1 | Language of the Text element, as described above. |
ResGuests | 1 | Collection of reservation guests. Container element. |
ResGuest | 1..n | An individual reservation guest. Single occurrence. Only one guest name will be included with a reservation. |
@ResGuestRPH | 1 | The reservation guest Reference Place Holder. Used to link the reservation guest to the room stay. Fixed value=1, as there is only one room stay per reservation and a single guest name. |
@AgeQualifyingCode | 1 | Age category 10 = Adult 8 = Child. |
Profiles | 1 | Container element for profiles. |
Profiles > ProfileInfo | 1 | Collection of profile elements. Container element. |
ProfileInfo > Profile | 1 | Individual profile. Single occurrence as a ResGuest will have only one associated profile. |
@ProfileType | 1 | Profile type. Fixed value. 1=Customer. |
Customer | 1 | Customer profile element. |
Customer > PersonName | 1 | Container element for full guest name. |
PersonName > GivenName | 1 | Guest first name. |
PersonName > MiddleName | 0..1 | Guest middle name. |
PersonName > Surname | 1 | Guest surname. |
Customer > Telephone | 0..1 | Element that contains the customer phone number. |
Telephone > @PhoneNumber | 0..1 | Telephone number. |
Telephone > @PhoneTechType | 0..1 | 1 = Normal Landline, 3 = Fax, 5 = Mobile / Cell |
ResGlobalInfo | 1 | A collection of objects which are common to the entire reservation. Container element. |
Memberships | 0..1 | A collection of Membership objects. The element provides a list of reward programs which may be credited with points accrued from the guest's activity. Container element. The element optional since only corporate reservations will include membership information |
Membership | 1..n | The Membership object identifies the frequent customer reward program and (optionally) indicates points awarded for stay activity. |
@ProgramCode | 1 | The code or name of the membership program. See and at the end of this document for complete list. |
@AccountID | 1 | The account identification number for this particular member in this particular program. |
HotelReservationIDs | 1 | Collection of hotel reservation and confirmation IDs. Container element. |
HotelReservationID | 1..2 | |
@ResID_Type | 1 | Reservation ID Type. |
@ResID_Value | 1 | |
@ResID_Source | 1 | |
@ResID_Date | 1 | The creation date and time of this reservation ID as the local date and time using the format specified by ISO 8601. |
Response (Success)
<OTA_HotelResNotifRS 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 https://secure.levartdistributionsystems.com.au/html/schema/OTA/2015B/OTA_HotelResNotifRS.xsd"
TimeStamp="2020-06-19T22:21:23+08:00" Target="Production" Version="1.0" EchoToken="12345">
<Success/>
<HotelReservations>
<HotelReservation>
<UniqueID Type="14" ID="13353000014" ID_Context="CrsConfirmNumber" />
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_SourceContext="PmsConfirmNumber" ResID_Value="124" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRS>
Response (Error)
<OTA_HotelResNotifRS 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 https://secure.levartdistributionsystems.com.au/html/schema/OTA/2015B/OTA_HotelResNotifRS.xsd"
TimeStamp="2020-06-19T22:21:23+08:00" Target="Production" Version="1.0" EchoToken="12345">
<Warnings>
<Warning Type="1">Error: Could not find mapping for RatePlanCode: '1234' with incoming booking '13353455'</Warning>
</Warnings>
<HotelReservations>
<HotelReservation>
<UniqueID Type="14" ID="13353455" ID_Context="CrsConfirmNumber" />
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_SourceContext="PmsConfirmNumber" ResID_Value="" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRS>