Reservation Notif

OTA Message Pair: OTA_HotelResNotifRQ / OTA_HotelResNotifRS

Modelviewer: RQ / RS

Schema: RQ / RS


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 Number1111111123
Source3rd Party
PropertyTest Hotel
RequestedSaturday, 9 June 2018 22:40:21 +08:00
ArrivalWednesday, 6 February 2019
DepartureTuesday, 12 February 2019
Stay Duration6 Nights
StatusBooked
Total Cost$ 4,050.00 AUD

Principal Guest

SalutationMr
First NameJames
Middle NameP
Last NameSimmonds
Emailjammes@levart.com.au
Phone08 9382 8001
Fax08 9382 8003
Mobile0444 444 444
Address

Unit 2 39 Chapel Street
Melbourne
NSW
3000
AUSTRALIA

Accommodation

Room TypeRate TypeA/C06/02/201907/02/201908/02/201909/02/201910/02/201911/02/2019Total
Standard RoomBAR Rate2 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 NameJames Test Card
Card TypeVisa
Card Number4111-1111-1111-1111
Card Expiry03 / 2008

Travel Agent

NameSuper Travel Co
IATA Code0123456
AddressFloor 2 44 William Street
Perth
WA
6000
AUSTRALIA
Phone08 9444 4444
Fax08 9382 8003
Emailagent@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>

ElementNumDescription
OTA_HotelResNotifRQ1The OTA_HotelResNotifRQ is the message that sends the notification of a hotel reservation.
OTA_HotelResNotifRQ > @xmlns1Namespace for the OTA payload message.
OTA_HotelResNotifRQ > @EchoToken0..1
OTA_HotelResNotifRQ > @TimeStamp1Timestamp of when this message was generated. ISO 8601 extended format: YYYY-MM-DDThh:mm:ss[+/-]hh:mm
OTA_HotelResNotifRQ > @Target1Indicates the message is a production message.
OTA_HotelResNotifRQ > @Version1Version of the OTA message. Currently 1.0
OTA_HotelResNotifRQ > @ResStatus1An enumeration that indicates the action to be taken on the request. Only Commit is supported.
POS0..1Container 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.
Source1..2Source of the booking notification.
RequestorID0..1Identifier of the notification requester.
RequestorID > @Type1Reference to the type of requester.
RequestorID >@ID1
BookingChannel0..1This is sent only for @Type=18. Omitted for @Type=5.
BookingChannel > @Type1The type of booking channel. Fixed value. 2= CRO (Customer Reservations Office).
BookingChannel > @Primary1Indicates whether the enumerated booking channel is the primary means of connectivity used by the source. Fixed value.
CompanyName1Identifies the company that is associated with the source ID.
HotelReservations1Collection of Hotel Reservations. Container element. Only 1 reservation will be sent per request.
HotelReservations > HotelReservation1A single Hotel Reservation.
HotelReservation > @RoomStayReservation1Always set to "true".
HotelReservation > @CreateDateTime1Date and time stamp of when the reservation was created using ISO 8601 format.
HotelReservation > @CreatorID1
UniqueID1Unique identifier of the reservation.
UniqueID > @Type1Always set to 14=Reservation.
UniqueID > @ID1A unique identifying value assigned by the creating system to the reservation.
HotelReservation > RoomStays1Collection of room stays, often referred to as segments. Container element. Single occurrence.
RoomStays > RoomStay1A single instance of a room stay. Container element. Single occurrence.
RoomStay > RoomTypes1Collection of room types. Room types serve as a list of rooms used in the room stay. Container element. Single occurrence.
RoomTypes > RoomType1An individual room type. Single occurrence.
RoomType > @IsRoom1Always set to true.
RoomType > @RoomTypeCode1Room type code: will contain the room type ID.
RoomStay > RatePlans1Collection of Rate Plans.
RatePlans > RatePlan1..nAn individual rate plan. Will be repeated once per stay date.
RatePlan > @RatePlanCode1Rate plan code: will contain the rate plan ID.
RatePlan > @EffectiveDate1Effective Date. Will be repeated for each stay date covered by the booking. Can be ignored.
RatePlan > @ExpireDate1Expiry Date, will be set to stay date+1. Can be ignored.
RoomStay > RoomRates1Collection of Room Rates. Room rates contain the actual amounts charged for a room. Single occurrence.
RoomRates > RoomRate1..nAn individual room rate.
RoomRate > @EffectiveDate1Start date for room and rate combination.
RoomRate > @ExpireDate1End date for room and rate combination.
RoomRate > @RoomTypeCode1Room type code: will contain the room type ID.
RoomRate > @NumberOfUnits1Number of rooms.
RoomRate > @RatePlanCode1Rate plan code: will contain the rate plan ID.
RoomRate > Rates1A collection of rates for a given room and rate combination. Rates can vary by date range and by age. Container element. Single occurrence.
Rates > Rate1..nAn individual rate. The room rates, fees and extra person charges are as defined by the supplier.
Rate > @EffectiveDate1Start date for the rate.
Rate > @ExpireDate1End date for the rate.
Rate > @RateTimeUnit1Rate time unit. Always set to Day.
Rate > @UnitMultiplier1Indicates the number of rate time units such as "3 Days".
Base1Base rate.
@AmountAfterTax1Daily rate.
@CurrencyCode1Currency of the rate using ISO 4217 alphabetic code.
AdditionalGuestAmounts0..1Collection of additional guest amounts. Only specified when additional guests amounts need to be charged.
AdditionalGuestAmount1..14Incremental amount charged for additional occupants per qualifying age group.
AdditionalGuestAmount > @AgeQualifyingCode0..1Age category. OTA codes: 7 for Infant, 8 for Child and 10 for Adult.
Amount0..1Amount of additional guest fees.
Amount > @AmountAfterTax0..1Additional guest fees including taxes.
Amount > @CurrencyCode0..1Currency of the additional guest fees rate using ISO 4217 alphabetic code. e.g. AU for Australia
Fees0..1Collection of fees. Container element. Optional element, used only when reservation includes fees.
Fee0..1Per 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 > @TaxInclusive0..1Indicates whether taxes are included when figuring the fees.
Fee > @Type0..1An enumerated type that defines the type of fees applied to a rate.
Fee > @Code0..1Code identifying the fee.
Fee > @Amount0..1Fee Amount
Fee > @CurrencyCode0..1Currency of the fee amount using ISO 4217 alphabetic code.
GuestCounts1Collection of guest counts by age categories.
@IsPerRoom1Indicates the guest counts are per room.
GuestCount1..3Guest count for a given guest type.
GuestCount > @AgeQualifyingCode1

Age category. OTA codes:

8 for Child

10 for Adult

GuestCount> @Count1The number of guests for the given age category.
GuestCount > @Age1The age of each children. Only set for Children age category.
TimeSpan1The Time Span that covers the entire room stay.
TimeSpan > @Start1Start date for entire room stay (aka Arrival date)
TimeSpan > @End1End date for entire room stay (aka Departure date)
PaymentCard1Container element that holds the actual credit card information.
PaymentCard > @CardType1Use "1" for Credit Card
PaymentCard > @CardCode1

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 > @CardNumber1The card PAN number.
PaymentCard > @ExpireDate1Expiration date of the credit card IN MMYY format.
PaymentCard > @SeriesCode0..1Card CSV or CVV.
PaymentCard > CardHolderName0..1Container element that holds the card holder name.
PaymentCard > Address0..1Billing address.
Address > AddressLine1Street number and street name. Set to: 333 108th Avenue NE
Address > CityName1City name. Set to: Bellevue
Address > PostalCode1Zip or postal code. Set to: 98004
Address > StateProv0..1State or province name; .
StateProv > @StateCode0..1State/Province code
Address > CountryName1Country name.
CountryName > @Code0..1Two letter country codes from the ISO 3166 code list.
Total1Total charge for the entire room stay.
Total > @AmountAfterTax1Total charge including everything (daily rate, additional guest charges, taxes, fees, etc.).
Total > @CurrencyCode1Currency of the total charge in the ISO 4217 alphabetic format.
Taxes1Total of taxes charged for entire room stay.
Taxes > @Amount1Total tax amount charged. This will be the sum of all amounts in the child elements.
Taxes > @CurrencyCode1Currency of total tax amount in the ISO 4217 alphabetic format.
Tax1..nIndividual tax breakdown.
@Type1An enumerated type that defines the way taxes are applied to a rate.
@Code1Code identifying the tax. Fixed value. 27=Miscellaneous. Ref at the end of this document. Taxes will be combined into a single total.
@Amount1Tax amount.
@CurrencyCode1Currency of the tax amount using the ISO 4217 alphabetic code.
BasicPropertyInfo1Hotel associated with the room stay. The hotel reference identifies a specific hotel by using the Chain Code, the Brand Code, and the Hotel Code.
@HotelCode1The code that uniquely identifies a single hotel property.
ResGuestRPHs0..1Collection of pointers (Reference Place Holders a.k.a. foreign keys) to establish a link between reservation guests and a given room stay. Collection element.
ResGuestRPH0..1An individual guest RPH (pointer) element. Single occurrence.
@RPH0..1RPH 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.
SpecialRequests0..1Collection of special requests associated with the room stay. Container element.
SpecialRequest0..nAn Individual special request.
@Language0..1Language of the Text element using the RFC 3066 format. See the language code list at the end of the document.
@RequestCode0..1Coded special request.
Text0..1Textual description of special request. In the case of RequestCode=4, this element will contain the free-form text entered by the consumer.
@Formatted0..1Indicates if text is formatted.
@Language0..1Language of the Text element, as described above.
ResGuests1Collection of reservation guests. Container element.
ResGuest1..nAn individual reservation guest. Single occurrence. Only one guest name will be included with a reservation.
@ResGuestRPH1The 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.
@AgeQualifyingCode1

Age category

10 = Adult

8 = Child.

Profiles1Container element for profiles.
Profiles > ProfileInfo1Collection of profile elements. Container element.
ProfileInfo > Profile1Individual profile. Single occurrence as a ResGuest will have only one associated profile.
@ProfileType1Profile type. Fixed value. 1=Customer.
Customer1Customer profile element.
Customer > PersonName1Container element for full guest name.
PersonName > GivenName1Guest first name.
PersonName > MiddleName0..1Guest middle name.
PersonName > Surname1Guest surname.
Customer > Telephone0..1Element that contains the customer phone number.
Telephone > @PhoneNumber0..1Telephone number.
Telephone > @PhoneTechType0..11 = Normal Landline, 3 = Fax, 5 = Mobile / Cell
ResGlobalInfo1A collection of objects which are common to the entire reservation. Container element.
Memberships0..1A 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
Membership1..nThe Membership object identifies the frequent customer reward program and (optionally) indicates points awarded for stay activity.
@ProgramCode1The code or name of the membership program. See and at the end of this document for complete list.
@AccountID1The account identification number for this particular member in this particular program.
HotelReservationIDs1Collection of hotel reservation and confirmation IDs. Container element.
HotelReservationID1..2
@ResID_Type1Reservation ID Type.
@ResID_Value1
@ResID_Source1
@ResID_Date1The 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>