OTA_HotelResNotifRQ/RS

OTA_HotelResNotifRQ

This message supports the functionality of updating other systems with reservation data. The message assumes a push model, with the originating system pushing the data to another system. The originating system would usually be a booking source.

<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRQ PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0">
  <POS>
    <Source AgentDutyCode="OTA">
      <RequestorID ID="APIKey" MessagePassword="APIKeyPassword"> </RequestorID>
    </Source>
  </POS>
  <HotelReservations>
    <HotelReservation ResStatus="Book" CreateDateTime="2018-09-22T08:26:21" LastModifyDateTime="2018-09-22T08:27:06">
      <RoomStays>
        <RoomStay IndexNumber="401">
          <RoomTypes>
            <RoomType RoomTypeCode="23456" NumberOfUnits="1" />
          </RoomTypes>
          <RoomRates>
            <RoomRate RatePlanCode="1">
              <Rates>
                <Rate EffectiveDate="2018-10-11">
                  <Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
                </Rate>
                <Rate EffectiveDate="2018-10-12">
                  <Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
                </Rate>
                <Rate EffectiveDate="2018-10-13">
                  <Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
                </Rate>
              </Rates>
            </RoomRate>
          </RoomRates>
          <RatePlans>
            <RatePlan>
              <MealsIncluded MealPlanCodes="12" />
              <Commission>
                <CommissionPayableAmount Amount="5355" DecimalPlaces="3" CurrencyCode="EUR"/>
              </Commission>
            </RatePlan>
          </RatePlans>
          <GuestCounts>
            <GuestCount AgeQualifyingCode="10" Count="2" isPerRoom="true" />
          </GuestCounts>
          <TimeSpan Start="2018-10-11" End="2018-10-14" />
          <Comments>
            <Comment>
              <Text>
                <![CDATA[Fictional comment]]>
              </Text>
            </Comment>
            <Comment>
              <Text>
                <![CDATA[Another fictional comment]]>
              </Text>
            </Comment>
          </Comments>
          <SpecialRequests>
            <SpecialRequest>
              <Text>
                <![CDATA[Smoking preference : Non-Smoking]]>
              </Text>
            </SpecialRequest>
          </SpecialRequests>
          <Total AmountAfterTax="28500" AmountBeforeTax="33000" CurrencyCode="EUR" DecimalPlaces="2" />
          <ResGuestRPHs>
            <ResGuestRPH RPH="1" />
          </ResGuestRPHs>
        </RoomStay>
        <RoomStay IndexNumber="402">
          <RoomTypes>
            <RoomType RoomTypeCode="23457" NumberOfUnits="1" />
          </RoomTypes>
          <RoomRates>
            <RoomRate RatePlanCode="1">
              <Rates>
                <Rate EffectiveDate="2018-10-11">
                  <Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
                </Rate>
                <Rate EffectiveDate="2018-10-12">
                  <Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
                </Rate>
                <Rate EffectiveDate="2018-10-13">
                  <Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
                </Rate>
              </Rates>
            </RoomRate>
          </RoomRates>
          <RatePlans>
            <RatePlan>
              <MealsIncluded MealPlanCodes="12" />
              <Commission>
                <CommissionPayableAmount Amount="5355" DecimalPlaces="3" CurrencyCode="EUR"/>
              </Commission>
            </RatePlan>
          </RatePlans>
          <GuestCounts>
            <GuestCount AgeQualifyingCode="10" Count="2" isPerRoom="true" />
          </GuestCounts>
          <TimeSpan Start="2018-10-11" End="2018-10-14" />
          <Comments>
            <Comment>
              <Text>
                <![CDATA[Fictional comment]]>
              </Text>
            </Comment>
            <Comment>
              <Text>
                <![CDATA[Another fictional comment ]]>
              </Text>
            </Comment>
          </Comments>
          <SpecialRequests>
            <SpecialRequest>
              <Text>
                <![CDATA[Smoking preference : Non-Smoking]]>
              </Text>
            </SpecialRequest>
          </SpecialRequests>
          <Total AmountAfterTax="28500" AmountBeforeTax="33000" CurrencyCode="EUR" DecimalPlaces="2">
            <Taxes>
              <Tax Amount="2030" CurrencyCode="EUR" DecimalPlaces="2" />
            </Taxes>
          </Total>
          <ResGuestRPHs>
            <ResGuestRPH RPH="2" />
          </ResGuestRPHs>
        </RoomStay>
      </RoomStays>
      <ResGuests>
        <ResGuest ResGuestRPH="1">
          <Profiles>
            <ProfileInfo>
              <Profile>
                <Customer>
                  <PersonName>
                    <GivenName>
                      <![CDATA[John]]>
                    </GivenName>
                    <Surname>
                      <![CDATA[Smith]]>
                    </Surname>
                  </PersonName>
                </Customer>
              </Profile>
            </ProfileInfo>
            <ProfileInfo>
              <Profile>
                <Customer>
                  <PersonName>
                    <GivenName>
                      <![CDATA[Jane]]>
                    </GivenName>
                    <Surname>
                      <![CDATA[Smith]]>
                    </Surname>
                  </PersonName>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
        <ResGuest ResGuestRPH="2">
          <Profiles>
            <ProfileInfo>
              <Profile>
                <Customer>
                  <PersonName>
                    <GivenName>
                      <![CDATA[John]]>
                    </GivenName>
                    <Surname>
                      <![CDATA[Doe]]>
                    </Surname>
                  </PersonName>
                </Customer>
              </Profile>
            </ProfileInfo>
            <ProfileInfo>
              <Profile>
                <Customer>
                  <PersonName>
                    <GivenName>
                      <![CDATA[Jane]]>
                    </GivenName>
                    <Surname>
                      <![CDATA[Doe]]>
                    </Surname>
                  </PersonName>
                </Customer>
              </Profile>
            </ProfileInfo>
            <ProfileInfo>
              <Profile>
                <Customer>
                  <PersonName>
                    <GivenName>
                      <![CDATA[Jake]]>
                    </GivenName>
                    <Surname>
                      <![CDATA[Doe]]>
                    </Surname>
                  </PersonName>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
      </ResGuests>
      <ResGlobalInfo>
        <Profiles>
          <ProfileInfo>
            <Profile ProfileType="1">
              <Customer Gender="Male" BirthDate="1955-08-01">
                <PersonName>
                  <GivenName>
                    <![CDATA[John]]>
                  </GivenName>
                  <Surname>
                    <![CDATA[Doe]]>
                  </Surname>
                </PersonName>
                <Telephone PhoneNumber="+31307820590" />
                <Email>j.doe@gmail.com</Email>
                <Address>
                  <StreetNmbr>Orteliuslaan 19</StreetNmbr>
                  <CityName>Utrecht</CityName>
                  <PostalCode>3528 BA</PostalCode>
                  <CountryName>NL</CountryName>
                  <CompanyName>Smarthotel</CompanyName>
                </Address>
              </Customer>
            </Profile>
          </ProfileInfo>
        </Profiles>
        <Comments>
          <Comment>
            <Text>
              <![CDATA[Comment that will be displayed on the reservation.]]>
            </Text>
          </Comment>
        </Comments>
        <Guarantee>
          <GuaranteesAccepted>
            <GuaranteeAccepted>
              <PaymentCard CardCode="VI" CardNumber="4444444444444444" SeriesCode="333" ExpireDate="0919" CurrentBalance="28500" DecimalPlaces="2" EffectiveDate="2018-10-11" VCCExpirationDate="2019-01-14">
                <CardHolderName>John Smith</CardHolderName>
              </PaymentCard>
            </GuaranteeAccepted>
          </GuaranteesAccepted>
        </Guarantee>
        <Total AmountAfterTax="28500" CurrencyCode="EUR" DecimalPlaces="2" />
        <BasicPropertyInfo HotelCode="12345" />
        <HotelReservationIDs>
          <HotelReservationID ResID_Value="your-unique-reference" ResID_Type="14" />
        </HotelReservationIDs>
      </ResGlobalInfo>
    </HotelReservation>
  </HotelReservations>
</OTA_HotelResNotifRQ>
Element / @Attribute Parent Info Values Occurrence
HotelReservations OTA_HotelResNotifRQ 1
Hotelreservation HotelReservations 1..n
@ResStatus HotelReservation Book 1
@CreateDateTime HotelReservation [yyyy-MM-ddTHH:mm:ss] 1
RoomStays HotelReservation 1
RoomStay RoomStays 1..n
@IndexNumber RoomStay Please find the description on how to use the IndexNumber under this table 1..65535 0..1
RoomTypes RoomStays 1
RoomType RoomTypes 1..n
@RoomTypeCode RoomType 1
@NumberOfUnits RoomType 1..n 1
RoomRates RoomStay 1
RoomRate RoomRates 1..n
@RatePlanCode RoomRate 1
Rates RoomRate 1
Rate Rates 1
@EffectiveDate Rate [yyyy-MM-dd] 1
Base Rate 1
@AmountAfterTax Base No decimal point: 120.50 becomes 12050 1
@AmountBeforeTax Base No decimal point: 120.50 becomes 12050 1
@CurrencyCode Base EUR, GBP, USD, ... Refer to ISO 4217 1
@DecimalPlaces Base 2 1
RatePlans RoomStay 1
RatePlan RatePlans 0..1
MealsIncluded MealsIncluded 0..1
@MealPlanCodes MealsIncluded Refer to OpenTravel Code List Meal Plan Type (MPT) 1
Commission RatePlan 0..1
CommissionPayableAmount Commission 1
@Amount CommissionPayableAmount 1
@DecimalPlaces CommissionPayableAmount 1
@CurrencyCode CommissionPayableAmount 1
GuestCounts RoomStay 1
GuestCount GuestCounts 1..n
@AgeQualifyingCode GuestCount Refer to OpenTravel Code List Age Qualifying Code (AQC) 1
@Count GuestCount 1..n 1
TimeSpan RoomStay 1
@Start TimeSpan Check in Date [yyyy-MM-dd] 1
@End TimeSpan Check out Date [yyyy-MM-dd] 1
Comments RoomStay 0..1
Comment Comments 1..n
Text Comment Comment included as CDATA, to prevent invalid characters from breaking the XML. 1
SpecialRequests RoomStay 0..n
SpecialRequest SpecialRequests 1..n
Text SpecialRequest Request included as CDATA, to prevent invalid characters from breaking the XML. 1
Total RoomStay Total of the RoomStay 1
@AmountAfterTax Total No decimal point: 120.50 becomes 12050 1
@AmountBeforeTax Total No decimal point: 120.50 becomes 12050 1
@CurrencyCode Total EUR, GBP, USD, ... Refer to ISO 4217 1
@DecimalPlaces Total 2 1
Taxes Total 0..1
Tax Tax 1
@Amount Tax No decimal point: 120.50 becomes 12050 1
@DecimalPlaces Tax 2 1
@CurrencyCode Tax EUR, GBP, USD, ... Refer to ISO 4217 1
ResGuestRPHs RoomStay Reference which ResGuest is in which RoomStay 1
@RPH ResGuestRPH The reference number of the guest. Must stay consistent with the RPH values defined in ResGuest. 1
Services HotelReservation Collection of services. A collection of Service objects. This is the collection of all services associated with any part of this reservation (the reservation in its entirety, one or more guests, or one or more room stays). Which services are attributable to which part is determined by each object's ServiceRPHs collection. 1
Service Services A Service object represents a non-room product provided to guests. Service products may have associated inventory and charges. 0..n
@ServiceRPH Service A unique ID for a service that may be referenced elsewhere in the schema. [integer] 1
@ServiceInventoryCode Service The external code of the room the service applies to. [integer] 1
@ID Service A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation. [integer] 1
Price Service The selling price of this Service. 1
@NumberOfUnits Price The number of services. [integer] 1
Base Price The base amount charged for the service per unit of time. 1
@AmountAfterTax Price The total amount including all associated taxes. [numeric] 1
@DecimalPlaces Price The ISO 4217 standard "minor unit" for the number of decimal places for a particular currency. [integer] 0..1
ServiceDetails Service Details on the Service including Guest Counts, Time Span of this Service, pointers to Res Guests, guest Memberships, Comments and Special Requests pertaining to this particular Service and finally financial information related to the Service, including Guarantee, Deposit and Payment and Cancellation Penalties. 1
GuestCounts ServiceDetails A collection of Guest Counts associated to the whole Reservation or a particular Room Stay or Service. A child Guest Count element is required for each distinct age group. A collection of GuestCount by age group. 1
GuestCount GuestCounts A recurring element that identifies the number of guests and ages of the guests. 1
@Count GuestCount The number of guests in one AgeQualifyingCode or Count. [integer] 1
TimeSpan ServiceDetails The Time Span which covers the Service. 1
@Start TimeSpan The starting value of the time span. [yyyy-MM-dd] 1
@End TimeSpan The ending value of the time span. [yyyy-MM-dd] 1
ServiceDescription ServiceDetails Description of the service. An indication of a new paragraph for a sub-section of a formatted text message. 1
Text ServiceDescription Formatted text content. [CDATA string] 1
TPA_Extensions Service A placeholder in the schema to allow for additional elements and attributes to be included per Trading Partner Agreement (TPA). Allows extensions to be added to the OpenTravel specification per trading partner agreement. 1
ServiceExtension TPA_Extensions An extension to the service. 1
@ServiceChargeType ServiceExtension The way the service is charged. Refer to Code List Service Charge Type 1
SelectedDates ServiceExtension A collection of dates on which the service is active. 1
Date SelectedDates A date on which the service is active. 0..n
@Value Date The date. [yyyy-MM-dd] 1
ResGuests HotelReservation 1
ResGuest Resguests 1..n
@ResguestRPH ResGuest 1
Profiles ResGuest 1
ProfileInfo Profiles 1..n
Profile ProfileInfo 1
Customer Profile 1
PersonName Customer 1
GivenName PersonName GivenName included as CDATA, to prevent invalid characters from breaking the XML. 1
SurName PersonName Surname included as CDATA, to prevent invalid characters from breaking the XML. 1
ResGlobalInfo HotelReservation 1
Profiles ResGlobalInfo Contains the data of the booker 1
Profile Profiles 1..n
@ProfileType Profile Refer to OpenTravel Code List Profile Types (PRT) 1
Customer Profile 1
@Gender Customer Male
Female
0..1
@BirthDate Customer [yyyy-MM-dd] 0..1
PersonName Customer 0..1
GivenName PersonName GivenName included as CDATA, to prevent invalid characters from breaking the XML. 1
SurName PersonName SurName included as CDATA, to prevent invalid characters from breaking the XML. 1
Telephone Customer 0..1
@PhoneNumber Telephone 1
Email Customer 0..1
Address Customer 0..1
StreetNmbr Address 1
CityName Address 1
PostalCode Address 1
CountryName Address The code of a country (e.g. NL). Refer to ISO 3166-1 alpha-2 1
CompanyName Address 0..1
Comments ResGlobalInfo 1
Comment Comments Comment included as CDATA, to prevent invalid characters from breaking the XML. 1..n
Text Comment 1
Guarantee ResGlobalInfo Credit card details related to the reservation 0..1
GuaranteesAccepted Guarantee 1
PaymentCard GuaranteesAccepted 1
@CardCode PaymentCard VI, MC, ... Refer to Code List Card Code 1
@CardNumber PaymentCard 1
@ExpireDate PaymentCard [MMyy] 1
@CurrentBalance PaymentCard Virtual credit card amount. No decimal point: 120.50 becomes 12050. 0..1
@DecimalPlaces PaymentCard Virtual credit card decimal places for CurrentBalance. 0..1
@EffectiveDate PaymentCard The date the virtual credit card can be charged. [yyyy-MM-dd] 0..1
@VCCExpirationDate PaymentCard The date until when the virtual credit card can be charged. [yyyy-MM-dd] 0..1
CardHolderName PaymentCard The credit card holder name [string] 1
Total ResGlobalInfo Reservation total 1
@AmountAfterTax Total No decimal point: 120.50 becomes 12050 1
@AmountBeforeTax Total No decimal point: 120.50 becomes 12050 1
@CurrencyCode Total EUR, GBP, USD, ... Refer to ISO 4217 1
@DecimalPlaces Total 2 1
BasicPropertyInfo ResGlobalInfo 1
@HotelCode BasicPropertyInfo The hotel code that identifies this hotel (PIN code). 1
HotelreservationIDs ResGlobalInfo 1
HotelReservationID HotelReservationIDs 1
ResID_Value HotelReservationID The reservation number supplied by the OTA. The same reservation number must be used for the lifespan of the reservation through all its possible mutations (modifications and cancellation). 1
ResID_Type HotelReservationID 14 1

How to use IndexNumber

Explanation on how to use IndexNumber, as these numbers always need to be unique throughout the booking process, to modify and cancel per RoomStay.

Example:

  • Reservation with 2 room stays, one has IndexNumber 123 and the other has 456.
  • Then a modification is created with 3 room stays, IndexNumbers 123, 456 and 789. This means the first 2 were modified and 789 is a new room stay.
  • Following a new modification with 4 room stays IndexNumbers 789, 145, 658, 987. 789 was modified, 123 and 456 were canceled and 145, 658 and 987 were booked.

OTA_HotelResNotifRS

This message returns acknowledgement that the reservation has been successfully received, or includes warnings from business processing rules or errors if the request did not succeed. It may optionally include the updated reservation data.

Success:

<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRS>
  <Success />
  <HotelReservations>
    <HotelReservation>
      <UniqueID Type="14" ID="your-unique-reference" />
      <ResGlobalInfo>
        <HotelReservationIDs>
          <HotelReservationID ResID_Type="14" ResID_Value="1160" />
        </HotelReservationIDs>
      </ResGlobalInfo>
    </HotelReservation>
  </HotelReservations>
</OTA_HotelResNotifRS>

Error:

<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRS>
  <Errors>
    <Error Code="11">
      <Text>No ID was found for hotel with code 12345.</Text>
    </Error>
  </Errors>
</OTA_HotelResNotifRS>
Element / @Attribute Parent Info Values Occurrence
Success OTA_HotelResNotifRS Only there if reservation was added successfully 0..1
Errors OTA_HotelResNotifRS Only if the reservation was not added 0..1
Error Errors 1..n
@Code Error 1
Text Error
HotelReservations OTA_HotelResNotifRS 0..1
HotelReservation HotelReservations 1..n
UniqueID HotelReservation 1
@Type UniqueID 14 1
@ID UniqueID Reservation number supplied by the OTA 1
ResGlobalInfo HotelReservation 1
HotelReservationIDs ResGlobalInfo 1
HotelReservationID HotelReservationIDs 1..n
@ResID_Type HotelReservationID 14 1
@ResID_Value HotelReservationID Reservation ID from the Channel manager 1