Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The alternative way for the Hotel-Spider system to receive reservations from an online booking system is via the OTA_ReadRQ / OTA_ResRetrieveRS message pair followed by the OTA_NotifReportRQ / OTA_NotifReportRS message pair. Reservations / modifications / cancellations are polled / pulled by the Hotel-Spider system from the online booking system using the OTA_ReadRQ / OTA_ResRetrieveRS request and in a second communication, the Hotel-Spider system pushes the confirmation that the reservation / modification / cancellation has correctly been integrated via the OTA_NotifReportRQ / OTA_NotifReportRS request.

 

Every minute the Hotel-Spider system will poll the online booking system to check if a reservation / modification / cancellation was made / modified / cancelled on the online booking system. When a reservation is available, the entire reservation should be returned to the Hotel-Spider system. As this is a "notif" message, it implies that the third party software client pushes the information to the Hotel-Spider servers.

Endpoints

Two distincts endpoints should be provided when starting the integration. One for the staging / testing and one for the production.

Example request and response

Code Block
titleUse case 1: Poll for unconfirmed reservations with stay dates in the future
<OTA_ReadRQ Target="Test" EchoToken="7571639933" TimeStamp="2015-11-12T18:05:39+01:00" Version="1.000">
  <POS>
    <Source>
      <RequestorID ID="MASTERUSERNAME" MessagePassword="MASTERPASSWORD" />
    </Source>
  </POS>
  <ReadRequests>
     <HotelReadRequest>
       <SelectionCriteria SelectionType="Undelivered" />
     </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

...

Code Block
languagexml
titleOTA_ResRetrieveRS request
<OTA_ResRetrieveRS Target="Test" EchoToken="7571639933" TimeStamp="2015-11-12T18:05:39+01:00" Version="1.000">
  <ReservationsList>
    <HotelReservation ResStatus="Reserved" OriginalDeliveryMethodCode="11" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-11-12T18:06:39+01:00" LastModifyDateTime="2015-11-12T18:06:40+01:00">
      <POS>
        <Source>
          <RequestorID ID="ONLINEBOOKINGSYSTEMIDENTIFIER" Type="22" />
          <BookingChannel Type="7">
            <CompanyName>ONLINEBOOKINGSYSTEMNAME</CompanyName>
          </BookingChannel>
        </Source>
      </POS>
      <RoomStays>
        <RoomStay IndexNumber="1" RoomStayStatus="Reserved">
          <RoomTypes>
            <RoomType RoomID="00L55bf507c63634" IsRoom="1">
              <RoomDescription Name="Double Room with lake view"/>
            </RoomType>
          </RoomTypes>
          <RoomRates>
            <RoomRate EffectiveDate="2015-11-20" ExpireDate="2015-11-20" RatePlanID="00L55cdbe855ce0b">
              <Rates>
                <Rate>
                  <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="162.00"/>
                  <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="162.00"/>
                </Rate>
              </Rates>
              <RoomRateDescription>
                <Text>Best Available Rate</Text>
              </RoomRateDescription>
            </RoomRate>
            <RoomRate EffectiveDate="2015-11-21" ExpireDate="2015-11-21" RatePlanID="00L55cdbe855ce0b">
              <Rates>
                <Rate>
                  <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="162.00"/>
                  <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="162.00"/>
                </Rate>
              </Rates>
              <RoomRateDescription>
                <Text>Best Available Rate</Text>
              </RoomRateDescription>
            </RoomRate>
          </RoomRates>
          <GuestCounts>
            <GuestCount AgeQualifyingCode="10" Count="1"/>
          </GuestCounts>
          <TimeSpan Start="2015-11-20" End="2015-11-22" Duration="P2D"/>
          <CancelPenalties>
            <CancelPenalty>
              <Deadline AbsoluteDeadline="2015-11-18T00:00:00+01:00"/>
              <AmountPercent FeesInclusive="1" Amount="162.00" CurrencyCode="CHF"/>
              <PenaltyDescription Name="free cancellation 48 hours"/>
            </CancelPenalty>
          </CancelPenalties>
          <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="324.00"/>
          <BasicPropertyInfo HotelCode="HOTELCODE" HotelName="HOTELNAME" CurrencyCode="CHF"/>
          <ResGuestRPHs>1</ResGuestRPHs>
        </RoomStay>
        <RoomStay IndexNumber="2" RoomStayStatus="Reserved">
          <RoomTypes>
            <RoomType RoomID="00L55bf507c63634" IsRoom="1">
              <RoomDescription Name="Double Room with lake view"/>
            </RoomType>
          </RoomTypes>
          <RoomRates>
            <RoomRate EffectiveDate="2015-11-20" ExpireDate="2015-11-20" RatePlanID="00L55cdbe855ce0b">
              <Rates>
                <Rate>
                  <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="143.00"/>
                  <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="143.00"/>
                </Rate>
              </Rates>
              <RoomRateDescription>
                <Text>Best Available Rate</Text>
              </RoomRateDescription>
            </RoomRate>
            <RoomRate EffectiveDate="2015-11-21" ExpireDate="2015-11-21" RatePlanID="00L55cdbe855ce0b">
              <Rates>
                <Rate>
                  <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="143.00"/>
                  <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="143.00"/>
                </Rate>
              </Rates>
              <RoomRateDescription>
                <Text>Best Available Rate</Text>
              </RoomRateDescription>
            </RoomRate>
          </RoomRates>
          <GuestCounts>
            <GuestCount AgeQualifyingCode="10" Count="1"/>
          </GuestCounts>
          <TimeSpan Start="2015-11-20" End="2015-11-22" Duration="P2D"/>
          <CancelPenalties>
            <CancelPenalty>
              <Deadline AbsoluteDeadline="2015-11-18T00:00:00+01:00"/>
              <AmountPercent FeesInclusive="1" Amount="162.00" CurrencyCode="CHF"/>
              <PenaltyDescription Name="free cancellation 48 hours"/>
            </CancelPenalty>
          </CancelPenalties>
          <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="286.00"/>
          <BasicPropertyInfo HotelCode="HOTELCODE" HotelName="HOTELNAME" CurrencyCode="CHF"/>
          <ResGuestRPHs>2</ResGuestRPHs>
        </RoomStay>
      </RoomStays>
      <ResGuests>
        <ResGuest ResGuestRPH="1">
          <Profiles>
            <ProfileInfo>
              <Profile ProfileType="1">
                <Customer MaritalStatus="Unknown" Gender="Unknown">
                  <PersonName>
                    <GivenName>James</GivenName>
                    <Surname>Bond</Surname>
                  </PersonName>
                  <Email>jamesbond@secretmail.ch</Email>
                  <Address>
                    <StreetNmbr>2</StreetNmbr>
                    <AddressLine>Bahnhofstrasse</AddressLine>
                    <CityName>Zurich</CityName>
                    <PostalCode>1000</PostalCode>
                    <County>Zurich</County>
                    <StateProv>Zurich</StateProv>
                    <CountryName Code="CH">Switzerland</CountryName>
                  </Address>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
        <ResGuest ResGuestRPH="2">
          <Profiles>
            <ProfileInfo>
              <Profile ProfileType="1">
                <Customer MaritalStatus="Unknown" Gender="Unknown">
                  <PersonName>
                    <GivenName>Money</GivenName>
                    <Surname>Penny</Surname>
                  </PersonName>
                  <Email>moneypenny@secretmail.ch</Email>
                  <Address>
                    <StreetNmbr>2</StreetNmbr>
                    <AddressLine>Bahnhofstrasse</AddressLine>
                    <CityName>Zurich</CityName>
                    <PostalCode>1000</PostalCode>
                    <County>Zurich</County>
                    <StateProv>Zurich</StateProv>
                    <CountryName Code="CH">Switzerland</CountryName>
                  </Address>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
      </ResGuests>
      <ResGlobalInfo>
        <GuestCounts>
          <GuestCount AgeQualifyingCode="10" Count="2"/>
        </GuestCounts>
        <TimeSpan Start="2015-11-20" End="2015-11-22" Duration="P2D"/>
        <Comments>
          <Comment>
            <Text>They are on a secret mission</Text>
          </Comment>
        </Comments>
        <Guarantee GuaranteeType="CC/DC/Voucher">
          <GuaranteesAccepted>
            <GuaranteeAccepted>
              <PaymentCard CardCode="MC" ExpireDate="0717">
                <CardHolderName>Gareth Mallory</CardHolderName>
                <CardNumber Mask="xxxxxxxxxxxx1111">4111111111111111</CardNumber>
              </PaymentCard>
            </GuaranteeAccepted>
          </GuaranteesAccepted>
        </Guarantee>
        <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="324.00"/>
        <HotelReservationIDs>
          <HotelReservationID ResID_Source="ONLINEBOOKINGSYSTEMID" ResID_SourceContext="ONLINEBOOKINGSYSTEMNAME" ResID_Type="14" ResID_Value="ABCD-668591"/>
        </HotelReservationIDs>
        <Profiles>
          <ProfileInfo>
            <Profile ProfileType="1">
              <Customer MaritalStatus="Unknown" Gender="Unknown">
                <PersonName>
                  <GivenName>Gareth</GivenName>
                  <Surname>Mallory</Surname>
                </PersonName>
                <Email>garethmallory@secretmail.ch</Email>
                <Address>
                  <StreetNmbr>2</StreetNmbr>
                  <AddressLine>Bahnhofplatz</AddressLine>
                  <CityName>Winterthur</CityName>
                  <PostalCode>4104</PostalCode>
                  <County>Winterthur</County>
                  <StateProv>Winterthur</StateProv>
                  <CountryName Code="CH">Switzerland</CountryName>
                </Address>
              </Customer>
            </Profile>
          </ProfileInfo>
          <ProfileInfo>
            <Profile ProfileType="4">
              <CompanyInfo>
                <CompanyName>Her Majesty's secret services</CompanyName>
                <Email>quartermaster@secretmail.ch</Email>
                <AddressInfo>
                  <StreetNmbr>2</StreetNmbr>
                  <AddressLine>Bahnhofplatz</AddressLine>
                  <CityName>Winterthur</CityName>
                  <PostalCode>4104</PostalCode>
                  <County>Winterthur</County>
                  <StateProv>Winterthur</StateProv>
                  <CountryName Code="CH">Switzerland</CountryName>
                </AddressInfo>
              </CompanyInfo>
            </Profile>
          </ProfileInfo>
        </Profiles>
        <BasicPropertyInfo HotelCode="00L55bf2f4e6c708" HotelName="Hôtel du Port" CurrencyCode="CHF"/>
      </ResGlobalInfo>
    </HotelReservation>
  </ReservationsList>
</OTA_ResRetrieveRS>

 

Request structure

OTA_ReadRQ

Parent: None (Root element)

...

NameMandatoryDescription
TypeYes

Possible values are:

  • 14 (Reservation)
  • 15 (Cancellation) 
IDYesThe reservation number as assigned by the online booking system and communicated to the end customer/guest 

Child elements: None


ReadRequests

...

NameMandatoryDescription
HotelCodeNoThe ID of the hotel as defined on the online booking system

Child elements: SelectionCriteria

...

NameMandatoryDescription
DateTypeNo 

Possible values are:

 
  • ArrivalDate
  • CreateDate
  • DepartureDate
  • LastUpdateDate
     
ResStatusNo

Possible values are:

 
  • Reserved
  • Cancelled
SelectionTypeNo

Possible values are:

 
  • All
  • PreviouslyDelivered
  • Undelivered
StartNoThe format will respect the ISO 8601 2015-11-16T22:23:48+00:00
EndNoThe format will respect the ISO 8601 2015-11-16T22:23:48+00:00

Child elements: None


Response structure

OTA_ResRetrieveRS

Parent: None (Root element)

...

Price for the room night + services

 
The value in the Total element will reflect the price of the room stay with any additional services.

...

Price for the room nights + services

 
The value in the Total element will reflect the sum of the room nights with any additional services.

...