Expedia Compatible OTA XML Channel API

Does your Channel Manager product support sending rates and availability to Expedia and retrieving bookings from them? Then adding tobook.com as a channel partner is simple!

Expedia uses a subset of an open XML standard known as OTA XML (Open Travel Alliance), to allow channel partners to update rates and availability and retrieve bookings.

To make adding tobook as a supported channel simple for channel providers, we have deployed an XML channel service that uses a strict subset of the part of OTA used by Expedia, with model and operational semantics based on Expedia's protocol.

Get started on implementing tobook channel support today, re-using your existing Expedia channel code with a minimum of fuss!

If your product does not support all features available under the API, such as occupancy based pricing models, or closing out rate packages that are defined as discounts on a Hotel's tobook extranet, no need to implement the whole API.

Notes on endpoints, schemas, supported fields and model considerations are provided below, don't hesitate to message our backend team for test account credentials, if you need help with the swift resolution of any implementation issues, or have any further questions.

Bookings can be forwarded either via the classic Booking Retrieval pull API, (OTA XML Classic - BookingRetrievalRQ/RS, BookingConfirmRQ/RS), or via the newer push notification API, (OTA XML BN - OTA_HotelResNotifRQ/RS, OTA_HotelResModifyNotifRQ/RS, OTA_CancelRQ/RS). Whichever method you already support, our services are ready to go!

Unicode values are supported in all string values, and all API requests and responses are UTF-8 encoded.

Availability and Rate Update

Endpoint

The endpoint for XML rate and availability update requests expects OTA AvailRateUpdateRQ (non-SOAP) XML messages, and is located at:
https://www.tobook.com/Delta/RQueryRESTService/xml/Extensions/RateUpdate

Namespace & Schema

Request (AvailRateUpdateRQ)

Supported Namespaces:
http://www.expediaconnect.com/EQC/AR/2011/06
http://www.expediaconnect.com/EQC/AR/2007/02
Schema available at:
https://expediaconnectivity.com/files/AvailRateUpdateRQ.xsd

Response (AvailRateUpdateRS)

Supported Namespaces:
http://www.expediaconnect.com/EQC/AR/2007/02
Schema available at:
https://expediaconnectivity.com/files/AvailRateUpdateRS.xsd

Model & Supported Flags

Sample Messages

Example AvailRateUpdateRQ message demonstrating most functionality. Note that you have the same flexibility to split and batch update operations in accordance with the schema as you do with the Expedia implementation of the protocol:

<?xml version="1.0" encoding="UTF-8"?>
<AvailRateUpdateRQ xmlns="http://www.expediaconnect.com/EQC/AR/2011/06">
  <Authentication username="MyTestAccountName" password="MyTestPassword"/>
  <Hotel id="204020"/>
  <AvailRateUpdate>
    <DateRange from="2020-01-01" to="2020-01-15"/>
    <DateRange from="2020-01-25" to="2020-01-28"/>
    <RoomType id="6">
      <Inventory totalInventoryAvailable="14"/>
      <RatePlan id="3" closed="false">
        <Rate currency="EUR">
          <PerOccupancy rate="100.00" occupancy="1"/>
          <PerOccupancy rate="150.00" occupancy="2"/>
          <PerOccupancy rate="200.00" occupancy="3"/>
        </Rate>
        <Restrictions closedToArrival="false" closedToDeparture="false" minLOS="2" maxLOS="28"/>
      </RatePlan>
    </RoomType>
  </AvailRateUpdate>
  <AvailRateUpdate>
    <DateRange from="2020-02-16" to="2020-05-31" sun="true" mon="false" tue="false" wed="false" thu="false" fri="true" sat="true"/>
    <RoomType id="4">
      <RatePlan id="1" closed="false">
        <Rate currency="EUR">
          <PerDay rate="210.00"/>
        </Rate>
        <Restrictions closedToArrival="true" closedToDeparture="false"/>
      </RatePlan>
    </RoomType>
  </AvailRateUpdate>
  <AvailRateUpdate>
    <DateRange from="2020-03-01" to="2020-03-07"/>
    <RoomType id="4">
      <RatePlan id="8" closed="true"/>
    </RoomType>
  </AvailRateUpdate>
</AvailRateUpdateRQ>

Example AvailRateUpdateRS message notifying a successful update:

<?xml version="1.0" encoding="UTF-8"?>
<AvailRateUpdateRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.expediaconnect.com/EQC/AR/2007/02">
    <Success/>
</AvailRateUpdateRS>

Example AvailRateUpdateRS message notifying that an error occurred:

<?xml version="1.0" encoding="UTF-8"?>
<AvailRateUpdateRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.expediaconnect.com/EQC/AR/2007/02">
    <Error code="3021">Validation error: end date must not be before start date.</Error>
</AvailRateUpdateRS>

Booking Retrieval

Endpoint

The endpoint for XML booking retrieval requests expects OTA BookingRetrievalRQ (non-SOAP) XML messages, and is located at:
https://www.tobook.com/Delta/RQueryRESTService/xml/Extensions/RetrieveBookings

Namespace & Schema

Request (BookingRetrievalRQ)

Supported Namespaces:
http://www.expediaconnect.com/EQC/BR/2014/01
http://www.expediaconnect.com/EQC/BR/2007/02
Schema available at:
https://expediaconnectivity.com/filesBookingRetrievalRQ.xsd

Response (BookingRetrievalRS)

Supported Namespaces:
http://www.expediaconnect.com/EQC/BR/2014/01
http://www.expediaconnect.com/EQC/BR/2007/02
Schema available at:
https://expediaconnectivity.com/files/BookingRetrievalRS.xsd

Model & Supported Flags

Sample Messages

Example BookingRetrievalRQ message requesting unconfirmed active bookings:

<?xml version="1.0" encoding="UTF-8"?>
<BookingRetrievalRQ xmlns="http://www.expediaconnect.com/EQC/BR/2014/01">
    <Authentication username="MyTestAccountName" password="MyTestPassword"/>
    <Hotel id="204020" />
</BookingRetrievalRQ>

Example BookingRetrievalRQ message requesting all bookings from the last 3 days:

<?xml version="1.0" encoding="UTF-8"?>
<BookingRetrievalRQ xmlns="http://www.expediaconnect.com/EQC/BR/2014/01">
    <Authentication username="MyTestAccountName" password="MyTestPassword"/>
    <Hotel id="204020" />
    <ParamSet>
        <NbDaysInPast>3</NbDaysInPast>
    </ParamSet>
</BookingRetrievalRQ>

Example BookingRetrievalRS message notifying that an error occurred:

<?xml version="1.0" encoding="UTF-8"?>
<BookingRetrievalRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.expediaconnect.com/EQC/BR/2014/01">
    <Error code="1001">Authentication error: invalid username or password.</Error>
</BookingRetrievalRS>

Example BookingRetrievalRS message with some typical booking messages representing a new booking, a new group booking with two linked room stays, a modification and a cancellation. The Credit Card Numbers shown here are standard public test numbers:

<?xml version="1.0" encoding="UTF-8"?>
<BookingRetrievalRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.expediaconnect.com/EQC/BR/2014/01">
    <Bookings>
        <Booking createDateTime="2020-04-17T23:33:26.823" id="204020-483-200830-200831-A" source="tobook.com" type="Book" status="pending">
            <Hotel id="204020" />
            <PrimaryGuest>
                <Name givenName="John" surname="Doe" />
                <Phone number="+44 123 321 098" />
                <Email>j.doe@tobook.com</Email>
            </PrimaryGuest>
            <RoomStay ratePlanID="2" roomTypeID="18">
                <GuestCount adult="2" />
                <PaymentCard cardCode="AX" cardNumber="378282246310005" expireDate="0323" seriesCode="394">
                    <CardHolder address="" city="" country="UK" name="John Doe" postalCode="" stateProv="" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="131.33" stayDate="2020-08-30" />
                </PerDayRates>
                <StayDate arrival="2020-08-30" departure="2020-08-31" />
                <Total amountAfterTaxes="140.00" amountOfTaxes="8.67" />
            </RoomStay>
        </Booking>
        <Booking createDateTime="2020-04-17T23:38:36.15" id="204020-485-200831-200904-A" source="tobook.com" type="Book" status="pending">
            <Hotel id="204020" />
            <PrimaryGuest>
                <Name givenName="San" surname="Chi Yun" />
                <Phone number="+31 112 334 556" />
                <Email>s.chiyun@tobook.com</Email>
            </PrimaryGuest>
            <RoomStay ratePlanID="1" roomTypeID="17">
                <GuestCount adult="3" />
                <PaymentCard cardCode="VI" cardNumber="4012888888881881" expireDate="0326" seriesCode="987">
                    <CardHolder address="" city="" country="CN" name="San Chi Yun" postalCode="" stateProv="" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="177.29" stayDate="2020-08-31" />
                    <PerDayRate baseRate="177.29" stayDate="2020-09-01" />
                    <PerDayRate baseRate="194.18" stayDate="2020-09-02" />
                    <PerDayRate baseRate="194.18" stayDate="2020-09-03" />
                </PerDayRates>
                <StayDate arrival="2020-08-31" departure="2020-09-04" />
                <Total amountAfterTaxes="792.00" amountOfTaxes="49.06" />
            </RoomStay>
            <SpecialRequest code="4">Would prefer not to have a street facing room.</SpecialRequest>
        </Booking>
        <Booking createDateTime="2020-02-17T23:32:36.15" id="204020-485-200831-200904-B" source="tobook.com" type="Book" status="pending">
            <Hotel id="204020" />
            <PrimaryGuest>
                <Name givenName="Ash" surname="Brinda" />
                <Phone number="" />
                <Email>ash.brinda@tobook.com</Email>
            </PrimaryGuest>
            <RoomStay ratePlanID="1" roomTypeID="22">
                <GuestCount adult="1" />
                <PaymentCard cardCode="VI" cardNumber="4012888888881881" expireDate="0326" seriesCode="987">
                    <CardHolder address="" city="" country="CN" name="San Chi Yun" postalCode="" stateProv="" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="118.19" stayDate="2020-08-31" />
                    <PerDayRate baseRate="118.19" stayDate="2020-09-01" />
                    <PerDayRate baseRate="135.08" stayDate="2020-09-02" />
                    <PerDayRate baseRate="135.08" stayDate="2020-09-03" />
                </PerDayRates>
                <StayDate arrival="2020-08-31" departure="2020-09-04" />
                <Total amountAfterTaxes="540.00" amountOfTaxes="33.46" />
            </RoomStay>
            <SpecialRequest code="1.94">Single Occupancy</SpecialRequest>
            <SpecialRequest code="4">Would prefer not to have a street facing room.</SpecialRequest>
        </Booking>
        <Booking createDateTime="2020-04-17T23:33:26.823" id="204020-484-200830-200831-A" source="tobook.com" type="Modify" status="pending">
            <Hotel id="204020" />
            <PrimaryGuest>
                <Name givenName="Александр" surname="Садоўскі" />
                <Phone number="+38 044 555 1234" />
                <Email>alex.sadowski@tobook.com</Email>
            </PrimaryGuest>
            <RoomStay ratePlanID="2" roomTypeID="16">
                <GuestCount adult="1" />
                <PaymentCard cardCode="AX" cardNumber="(already retrieved)" expireDate="0323" seriesCode="394">
                    <CardHolder address="" city="" country="UA" name="А Садоўскі" postalCode="" stateProv="" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="111.33" stayDate="2020-08-30" />
                    <PerDayRate baseRate="111.33" stayDate="2020-08-31" />
                </PerDayRates>
                <StayDate arrival="2020-08-30" departure="2020-08-32" />
                <Total amountAfterTaxes="240.00" amountOfTaxes="17.34" />
            </RoomStay>
        </Booking>
        <Booking createDateTime="2020-04-19T21:15:17.17" id="204020-392-200831-200902-A" source="tobook.com" type="Cancel" status="pending">
            <Hotel id="204020" />
            <PrimaryGuest>
                <Name givenName="Mike" surname="Ericsson" />
                <Phone number="+31 2765 287 61" />
                <Email>m.ericsson@tobook.com</Email>
            </PrimaryGuest>
            <RoomStay ratePlanID="2" roomTypeID="18">
                <GuestCount adult="2" />
                <PaymentCard cardCode="CB" cardNumber="(already retrieved)" expireDate="0828" seriesCode="901">
                    <CardHolder address="" city="" country="NL" name="Mike Ericsson" postalCode="" stateProv="" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="112.56" stayDate="2020-09-15" />
                    <PerDayRate baseRate="112.56" stayDate="2020-09-16" />
                    <PerDayRate baseRate="112.56" stayDate="2020-09-17" />
                    <PerDayRate baseRate="112.56" stayDate="2020-09-18" />
                    <PerDayRate baseRate="112.56" stayDate="2020-09-19" />
                </PerDayRates>
                <StayDate arrival="2020-09-15" departure="2020-09-20" />
                <Total amountAfterTaxes="0.00" amountOfTaxes="0.00" />
            </RoomStay>
            <SpecialRequest code="4">Quiet room, non-smoking.</SpecialRequest>
        </Booking>
    </Bookings>
</BookingRetrievalRS>

Booking Confirmation

Endpoint

The endpoint for post-retrieval XML booking confirmation requests expects OTA BookingConfirmRQ (non-SOAP) XML messages, and is located at:
https://www.tobook.com/Delta/RQueryRESTService/xml/Extensions/ConfirmBookings

Namespace & Schema

Request (BookingConfirmRQ)

Supported Namespaces:
http://www.expediaconnect.com/EQC/BC/2007/09
Schema available at:
https://expediaconnectivity.com/files/BookingConfirmRQ.xsd

Response (BookingConfirmRS)

Supported Namespaces:
http://www.expediaconnect.com/EQC/BC/2007/08
Schema available at:
https://expediaconnectivity.com/files/BookingConfirmRS.xsd

Model & Supported Flags

Sample Messages

Example BookingConfirmRQ message containing some typical confirmations:

<?xml version="1.0" encoding="UTF-8"?>
<BookingConfirmRQ xmlns="http://www.expediaconnect.com/EQC/BC/2007/09">
    <Authentication username="MyTestAccountName" password="MyTestPassword"/>
    <Hotel id="204020" />
    <BookingConfirmNumbers>
        <BookingConfirmNumber bookingID="204020-486-200831-200902-A" bookingType="Book" confirmNumber="204020-486-200831-200902-A" confirmTime="2020-01-30T23:45:00Z"/>
        <BookingConfirmNumber bookingID="204020-487-200612-200618-A" bookingType="Cancel" confirmNumber="204020-487-200612-200618-A" confirmTime="2020-01-30T23:45:00Z"/>
    </BookingConfirmNumbers>
</BookingConfirmRQ>

Example BookingConfirmRS message notifying successful receipt of confirmations:

<?xml version="1.0" encoding="UTF-8"?>
<BookingConfirmRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.expediaconnect.com/EQC/BC/2007/08">
    <Success/>
</BookingConfirmRS>

Example BookingConfirmRS message notifying that an error occurred:

<?xml version="1.0" encoding="UTF-8"?>
<BookingConfirmRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.expediaconnect.com/EQC/BC/2007/08">
    <Error code="10080">No such booking number for this hotel.</Error>
</BookingConfirmRS>

Booking Notification

Endpoint

The endpoint for OTA XML BN booking push notification requests expects OTA_HotelResNotifRQ, OTA_HotelResModifyNotifRQ, and OTA_CancelRQ SOAP XML messages, and is provided by you along with credentials for authenticating push notification requests.

Namespaces & Schemas

SOAP envelope (including SOAP faults)

Supported Namespace:
http://schemas.xmlsoap.org/soap/envelope/
Schema available at:
https://schemas.xmlsoap.org/soap/envelope/

Protocol specific SOAP header

Supported Namespace:
http://www.newtrade.com/expedia/R14/header
Schema available at:
https://expediaconnectivity.com/files/SOAP_header.xsd

Request (OTA_HotelResNotifRQ, OTA_HotelResModifyNotifRQ, OTA_CancelRQ)

Supported Namespace:
http://www.opentravel.org/OTA/2003/05
Schemas available at:
https://expediaconnectivity.com/files/OTA_HotelResNotifRQ.xsd
https://expediaconnectivity.com/files/OTA_HotelResModifyNotifRQ.xsd
https://expediaconnectivity.com/files/OTA_CancelRQ.xsd

Response (OTA_HotelResNotifRS, OTA_HotelResModifyNotifRS, OTA_CancelRS)

Supported Namespaces:
http://www.opentravel.org/OTA/2003/05
Schemas available at:
https://expediaconnectivity.com/files/OTA_HotelResNotifRS.xsd
https://expediaconnectivity.com/files/OTA_HotelResModifyNotifRQ.xsd
https://expediaconnectivity.com/files/OTA_CancelRS.xsd

Model & Supported Flags

Sample Messages

Example OTA_HotelResNotifRQ message containing a typical new booking:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<Interface Name="ExpediaDirectConnect" Version="4.0" xmlns="http://www.newtrade.com/expedia/R14/header">
  <PayloadInfo RequestId="783401" RequestorId="tobook" ResponderId="PartnerName" ExpirationDateTime="2021-09-02T20:45:02.3395746+02:00">
    <CommDescriptor SourceId="tobook" DestinationId="PartnerName" RetryIndicator="false">
      <Authentication Username="tobook" Password="password-here" />
    </CommDescriptor>
    <PayloadDescriptor Name="OTA_HotelResNotifRQ" Version="2003A">
      <PayloadReference SupplierHotelCode="204020" DistributorHotelId="204020" />
    </PayloadDescriptor>
  </PayloadInfo>
</Interface>
</soap-env:Header>
<soap-env:Body>
<OTA_HotelResNotifRQ EchoToken="783401" PrimaryLangID="en-uS" TimeStamp="2020-09-02T20:45:02.3395746+02:00" Version="1.0" ResStatus="Commit" xmlns="http://www.opentravel.org/OTA/2003/05">
  <POS>
    <Source>
      <RequestorID Type="18" ID="tobook" />
      <BookingChannel Type="2" Primary="true">
        <CompanyName>tobook</CompanyName>
      </BookingChannel>
    </Source>
  </POS>
  <HotelReservations>
    <HotelReservation RoomStayReservation="true" CreateDateTime="2020-09-02T01:51:51.373" CreatorID="tobook">
      <UniqueID Type="14" ID="204020-692-201112-201116-A" />
      <RoomStays>
        <RoomStay>
          <RoomTypes>
            <RoomType RoomTypeCode="3" IsRoom="true" />
          </RoomTypes>
          <RatePlans>
            <RatePlan RatePlanCode="4" EffectiveDate="2020-11-12" ExpireDate="2020-11-13" />
            <RatePlan RatePlanCode="4" EffectiveDate="2020-11-13" ExpireDate="2020-11-14" />
            <RatePlan RatePlanCode="4" EffectiveDate="2020-11-14" ExpireDate="2020-11-15" />
            <RatePlan RatePlanCode="4" EffectiveDate="2020-11-15" ExpireDate="2020-11-16" />
          </RatePlans>
          <RoomRates>
            <RoomRate EffectiveDate="2020-11-12" ExpireDate="2020-11-13" RoomTypeCode="3" NumberOfUnits="1" RatePlanCode="4" PromotionCode="">
              <Rates>
                <Rate EffectiveDate="2020-11-12" ExpireDate="2020-11-13" RateTimeUnit="Day" UnitMultiplier="1">
                  <Base AmountBeforeTax="118.1900" CurrencyCode="EUR" />
                  <Fees>
                    <Fee TaxInclusive="false" Type="Exclusive" Code="1" Amount="0" CurrencyCode="EUR" />
                  </Fees>
                </Rate>
              </Rates>
            </RoomRate>
            <RoomRate EffectiveDate="2020-11-13" ExpireDate="2020-11-14" RoomTypeCode="3" NumberOfUnits="1" RatePlanCode="4" PromotionCode="">
              <Rates>
                <Rate EffectiveDate="2020-11-13" ExpireDate="2020-11-14" RateTimeUnit="Day" UnitMultiplier="1">
                  <Base AmountBeforeTax="135.0800" CurrencyCode="EUR" />
                  <Fees>
                    <Fee TaxInclusive="false" Type="Exclusive" Code="1" Amount="0" CurrencyCode="EUR" />
                  </Fees>
                </Rate>
              </Rates>
            </RoomRate>
            <RoomRate EffectiveDate="2020-11-14" ExpireDate="2020-11-15" RoomTypeCode="3" NumberOfUnits="1" RatePlanCode="4" PromotionCode="">
              <Rates>
                <Rate EffectiveDate="2020-11-14" ExpireDate="2020-11-15" RateTimeUnit="Day" UnitMultiplier="1">
                  <Base AmountBeforeTax="135.0800" CurrencyCode="EUR" />
                  <Fees>
                    <Fee TaxInclusive="false" Type="Exclusive" Code="1" Amount="0" CurrencyCode="EUR" />
                  </Fees>
                </Rate>
              </Rates>
            </RoomRate>
            <RoomRate EffectiveDate="2020-11-15" ExpireDate="2020-11-16" RoomTypeCode="3" NumberOfUnits="1" RatePlanCode="4" PromotionCode="">
              <Rates>
                <Rate EffectiveDate="2020-11-15" ExpireDate="2020-11-16" RateTimeUnit="Day" UnitMultiplier="1">
                  <Base AmountBeforeTax="118.2000" CurrencyCode="EUR" />
                  <Fees>
                    <Fee TaxInclusive="false" Type="Exclusive" Code="1" Amount="0" CurrencyCode="EUR" />
                  </Fees>
                </Rate>
              </Rates>
            </RoomRate>
          </RoomRates>
          <GuestCounts IsPerRoom="true">
            <GuestCount AgeQualifyingCode="10" Count="1" />
          </GuestCounts>
          <TimeSpan Start="2020-11-12" End="2020-11-16" />
          <Guarantee>
            <GuaranteesAccepted>
              <GuaranteeAccepted>
                <PaymentCard CardType="1" CardCode="UP" CardNumber="6212345678901232" SeriesCode="456" ExpireDate="0923">
                  <CardHolderName>femke v. d. leeuw</CardHolderName>
                  <Address>
                    <AddressLine />
                    <CityName />
                    <PostalCode />
                    <StateProv StateCode=""></StateProv>
                    <CountryName Code="NL"></CountryName>
                  </Address>
                </PaymentCard>
              </GuaranteeAccepted>
            </GuaranteesAccepted>
          </Guarantee>
          <Total AmountAfterTax="546.0800" CurrencyCode="EUR">
            <Taxes Amount="39.5300" CurrencyCode="EUR">
              <Tax Type="Exclusive" Code="27" Amount="39.5300" CurrencyCode="EUR" />
            </Taxes>
          </Total>
          <BasicPropertyInfo HotelCode="204020" />
          <ResGuestRPHs>
            <ResGuestRPH RPH="1" />
          </ResGuestRPHs>
          <SpecialRequests>
            <SpecialRequest Language="en-us" RequestCode="1.94">
              <Text Formatted="false" Language="en-us">Single Occupancy</Text>
            </SpecialRequest>
            <SpecialRequest Language="en-us" RequestCode="4">
              <Text Formatted="true" Language="en-us">Both triples non-smoking rooms please!</Text>
            </SpecialRequest>
          </SpecialRequests>
        </RoomStay>
      </RoomStays>
      <ResGuests>
        <ResGuest ResGuestRPH="1" AgeQualifyingCode="10">
          <Profiles>
            <ProfileInfo>
              <Profile ProfileType="1">
                <Customer>
                  <PersonName>
                    <GivenName>Femke</GivenName>
                    <Surname>Van der Leeuw</Surname>
                  </PersonName>
                  <Telephone CountryAccessCode="" AreaCityCode="" PhoneNumber="+31 655 5992 85" Extension="" />
                  <Email>f.vanderleeuw@tobook.com</Email>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
      </ResGuests>
      <ResGlobalInfo>
        <HotelReservationIDs>
          <HotelReservationID ResID_Type="8" ResID_Value="204020-692-201112-201116-A" ResID_Source="tobook" ResID_Date="2020-09-02T01:51:51.373" />
        </HotelReservationIDs>
      </ResGlobalInfo>
    </HotelReservation>
  </HotelReservations>
</OTA_HotelResNotifRQ>
</soap-env:Body>
</soap-env:Envelope>

Example OTA_HotelResNotifRS message containing a typical new booking confirmation:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <Interface xmlns="http://www.newtrade.com/expedia/R14/header" Name="ExpediaDirectConnect" Version="4.0">
      <PayloadInfo RequestId="783401" RequestorId="tobook" ResponderId="PartnerName" Location="Body">
        <CommDescriptor SourceId="PartnerName" DestinationId="tobook" RetryIndicator="false"/>
        <PayloadDescriptor Name="OTA_HotelResNotifRS" Version="2003A">
          <PayloadReference SupplierHotelCode="204020"/>
        </PayloadDescriptor>
      </PayloadInfo>
    </Interface>
  </soap-env:Header>
  <soap-env:Body>
    <OTA_HotelResNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1" ResResponseType="Committed" TimeStamp="2020-09-02T20:45:02.8015823+02:00" Target="Production" PrimaryLangID="en-us">
      <Success/>
      <HotelReservations>
        <HotelReservation>
          <ResGlobalInfo>
            <HotelReservationIDs>
              <HotelReservationID ResID_Type="3" ResID_Value="BookConf123" ResID_Date="2020-09-02T01:51:51.373" ResID_Source="PartnerName"/>
              <HotelReservationID ResID_Type="8" ResID_Value="204020-692-201112-201116-A" ResID_Source="tobook" ResID_Date="2020-09-02T01:51:51.373"/>
            </HotelReservationIDs>
          </ResGlobalInfo>
        </HotelReservation>
      </HotelReservations>
    </OTA_HotelResNotifRS>
  </soap-env:Body>
</soap-env:Envelope>

Example OTA_HotelResModifyNotifRQ message containing a typical booking modification:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<Interface Name="ExpediaDirectConnect" Version="4.0" xmlns="http://www.newtrade.com/expedia/R14/header">
  <PayloadInfo RequestId="783402" RequestorId="tobook" ResponderId="PartnerName" ExpirationDateTime="2021-09-02T21:46:53.4740759+02:00">
    <CommDescriptor SourceId="tobook" DestinationId="PartnerName" RetryIndicator="false">
      <Authentication Username="tobook" Password="password-here" />
    </CommDescriptor>
    <PayloadDescriptor Name="OTA_HotelResModifyNotifRQ" Version="2003A">
      <PayloadReference SupplierHotelCode="204020" DistributorHotelId="204020" />
    </PayloadDescriptor>
  </PayloadInfo>
</Interface>
</soap-env:Header>
<soap-env:Body>
<OTA_HotelResModifyNotifRQ EchoToken="783402" PrimaryLangID="en-uS" TimeStamp="2020-09-02T21:46:53.4740759+02:00" Version="1.0" ResStatus="Commit" xmlns="http://www.opentravel.org/OTA/2003/05">
  <POS>
    <Source>
      <RequestorID Type="18" ID="tobook" />
      <BookingChannel Type="2" Primary="true">
        <CompanyName>tobook</CompanyName>
      </BookingChannel>
    </Source>
  </POS>
  <HotelResModifies>
    <HotelResModify RoomStayReservation="true" CreateDateTime="2020-09-02T01:50:57.19" CreatorID="tobook">
      <UniqueID Type="14" ID="204020-693-201113-201116-A" />
      <RoomStays>
        <RoomStay>
          <RoomTypes>
            <RoomType RoomTypeCode="2" IsRoom="true" />
          </RoomTypes>
          <RatePlans>
            <RatePlan RatePlanCode="1" EffectiveDate="2020-11-13" ExpireDate="2020-11-14" />
            <RatePlan RatePlanCode="1" EffectiveDate="2020-11-14" ExpireDate="2020-11-15" />
          </RatePlans>
          <RoomRates>
            <RoomRate EffectiveDate="2020-11-13" ExpireDate="2020-11-14" RoomTypeCode="2" NumberOfUnits="1" RatePlanCode="1" PromotionCode="">
              <Rates>
                <Rate EffectiveDate="2020-11-13" ExpireDate="2020-11-14" RateTimeUnit="Day" UnitMultiplier="1">
                  <Base AmountBeforeTax="131.3200" CurrencyCode="EUR" />
                  <Fees>
                    <Fee TaxInclusive="false" Type="Exclusive" Code="1" Amount="0" CurrencyCode="EUR" />
                  </Fees>
                </Rate>
              </Rates>
            </RoomRate>
            <RoomRate EffectiveDate="2020-11-14" ExpireDate="2020-11-15" RoomTypeCode="2" NumberOfUnits="1" RatePlanCode="1" PromotionCode="">
              <Rates>
                <Rate EffectiveDate="2020-11-14" ExpireDate="2020-11-15" RateTimeUnit="Day" UnitMultiplier="1">
                  <Base AmountBeforeTax="131.3300" CurrencyCode="EUR" />
                  <Fees>
                    <Fee TaxInclusive="false" Type="Exclusive" Code="1" Amount="0" CurrencyCode="EUR" />
                  </Fees>
                </Rate>
              </Rates>
            </RoomRate>
          </RoomRates>
          <GuestCounts IsPerRoom="true">
            <GuestCount AgeQualifyingCode="10" Count="2" />
          </GuestCounts>
          <TimeSpan Start="2020-11-13" End="2020-11-15" />
          <Guarantee>
            <GuaranteesAccepted>
              <GuaranteeAccepted>
                <PaymentCard CardType="1" CardCode="AX" CardNumber="378282246310005" SeriesCode="123" ExpireDate="1023">
                  <CardHolderName>Arthur Mathers</CardHolderName>
                  <Address>
                    <AddressLine />
                    <CityName />
                    <PostalCode />
                    <StateProv StateCode=""></StateProv>
                    <CountryName Code="CA"></CountryName>
                  </Address>
                </PaymentCard>
              </GuaranteeAccepted>
            </GuaranteesAccepted>
          </Guarantee>
          <Total AmountAfterTax="280.0000" CurrencyCode="EUR">
            <Taxes Amount="17.3500" CurrencyCode="EUR">
              <Tax Type="Exclusive" Code="27" Amount="17.3500" CurrencyCode="EUR" />
            </Taxes>
          </Total>
          <BasicPropertyInfo HotelCode="204020" />
          <ResGuestRPHs>
            <ResGuestRPH RPH="1" />
          </ResGuestRPHs>
        </RoomStay>
      </RoomStays>
      <ResGuests>
        <ResGuest ResGuestRPH="1" AgeQualifyingCode="10">
          <Profiles>
            <ProfileInfo>
              <Profile ProfileType="1">
                <Customer>
                  <PersonName>
                    <GivenName>Arthur</GivenName>
                    <Surname>Mathers</Surname>
                  </PersonName>
                  <Telephone CountryAccessCode="" AreaCityCode="" PhoneNumber="+1 604 541 5678" Extension="" />
                  <Email>a.mathers@tobook.com</Email>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
      </ResGuests>
      <ResGlobalInfo>
        <HotelReservationIDs>
          <HotelReservationID ResID_Type="8" ResID_Value="204020-693-201113-201116-A" ResID_Source="tobook" ResID_Date="2020-09-02T01:50:57.19" />
          <HotelReservationID ResID_Type="3" ResID_Value="BookConf234" ResID_Source="PartnerName" ResID_Date="2020-09-02T01:50:57.19" />
        </HotelReservationIDs>
      </ResGlobalInfo>
    </HotelResModify>
  </HotelResModifies>
</OTA_HotelResModifyNotifRQ>
</soap-env:Body>
</soap-env:Envelope>

Example OTA_HotelResModifyNotifRS message containing a typical booking modification confirmation:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <Interface xmlns="http://www.newtrade.com/expedia/R14/header" Name="ExpediaDirectConnect" Version="4.0">
      <PayloadInfo Location="Body" RequestId="783402" RequestorId="tobook" ResponderId="PartnerName">
        <CommDescriptor DestinationId="tobook" SourceId="PartnerName" RetryIndicator="false"/>
        <PayloadDescriptor Name="OTA_HotelResModifyNotifRS" Version="2003A"/>
      </PayloadInfo>
    </Interface>
  </soap-env:Header>
  <soap-env:Body>
    <OTA_HotelResModifyNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" PrimaryLangID="en-us" ResResponseType="Modified" Target="Production" TimeStamp="2021-09-02T21:46:53.8341273+02:00" Version="1.000">
      <Success/>
      <HotelResModifies>
        <HotelResModify>
          <ResGlobalInfo>
            <HotelReservationIDs>
              <HotelReservationID ResID_Date="2020-09-02T01:50:57.19" ResID_Source="tobook" ResID_Type="8" ResID_Value="204020-693-201113-201116-A"/>
              <HotelReservationID ResID_Date="2020-09-02T01:50:57.19" ResID_Source="PartnerName" ResID_Type="3" ResID_Value="ModifyConf234"/>
            </HotelReservationIDs>
          </ResGlobalInfo>
        </HotelResModify>
      </HotelResModifies>
    </OTA_HotelResModifyNotifRS>
  </soap-env:Body>
</soap-env:Envelope>

Example OTA_CancelRQ message containing a typical booking cancellation:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<Interface Name="ExpediaDirectConnect" Version="4.0" xmlns="http://www.newtrade.com/expedia/R14/header">
  <PayloadInfo RequestId="783403" RequestorId="tobook" ResponderId="PartnerName" ExpirationDateTime="2021-09-02T22:38:33.9513804+02:00">
    <CommDescriptor SourceId="tobook" DestinationId="PartnerName" RetryIndicator="false">
      <Authentication Username="tobook" Password="password-here" />
    </CommDescriptor>
    <PayloadDescriptor Name="OTA_CancelRQ" Version="2003A">
      <PayloadReference SupplierHotelCode="204020" DistributorHotelId="204020" />
    </PayloadDescriptor>
  </PayloadInfo>
</Interface>
</soap-env:Header>
<soap-env:Body>
<OTA_CancelRQ EchoToken="783403" PrimaryLangID="en-uS" TimeStamp="2020-09-02T22:38:33.9513804+02:00" Version="1.0" CancelType="Commit" xmlns="http://www.opentravel.org/OTA/2003/05">
  <POS>
    <Source>
      <RequestorID Type="18" ID="tobook" />
      <BookingChannel Type="2" Primary="true">
        <CompanyName>tobook</CompanyName>
      </BookingChannel>
    </Source>
  </POS>
  <UniqueID Type="14" ID="204020-694-201119-201120-A">
    <CompanyName>tobook</CompanyName>
  </UniqueID>
  <UniqueID Type="10" ID="BookConf345">
    <CompanyName>PartnerName</CompanyName>
  </UniqueID>
  <Verification>
    <PersonName>
      <GivenName>Александр</GivenName>
      <Surname>Садоўскі</Surname>
    </PersonName>
    <Vendor Code="1" CodeContext="ChainCode"></Vendor>
    <Vendor Code="2" CodeContext="BrandCode"></Vendor>
    <Vendor Code="3" CodeContext="HotelCode">204020</Vendor>
    <ReservationTimeSpan Start="2020-11-19" End="2020-11-19" />
    <AssociatedQuantity Code="1" CodeContext="Number of rooms" Quantity="1" />
    <AssociatedQuantity Code="2" CodeContext="Number of guests" Quantity="1" />
  </Verification>
</OTA_CancelRQ>
</soap-env:Body>
</soap-env:Envelope>

Example OTA_CancelRS message containing a typical booking cancellation confirmation:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <Interface xmlns="http://www.newtrade.com/expedia/R14/header" Name="ExpediaDirectConnect" Version="4.0">
      <PayloadInfo Location="Body" RequestId="783403" RequestorId="tobook" ResponderId="PartnerName" ExpirationDateTime="2021-09-02T22:38:34.1704396+02:00">
        <CommDescriptor DestinationId="tobook" SourceId="PartnerName" RetryIndicator="false"/>
        <PayloadDescriptor Name="OTA_CancelRS" Version="2003A">
          <PayloadReference SupplierHotelCode="204020"/>
        </PayloadDescriptor>
      </PayloadInfo>
    </Interface>
  </soap-env:Header>
  <soap-env:Body>
    <OTA_CancelRS xmlns="http://www.opentravel.org/OTA/2003/05" Target="Production" TimeStamp="2020-09-02T22:38:34.1704396+02:00" Version="1.000" PrimaryLangID="en-us" Status="Cancelled">
      <Success/>
      <UniqueID ID="204020-694-201119-201120-A" Type="14">
        <CompanyName>tobook</CompanyName>
      </UniqueID>
      <UniqueID ID="BookConf345" Type="10">
        <CompanyName>PartnerName</CompanyName>
      </UniqueID>
      <CancelInfoRS>
        <UniqueID ID="CancelConf345" Type="10">
          <CompanyName>PartnerName</CompanyName>
        </UniqueID>
      </CancelInfoRS>
    </OTA_CancelRS>
  </soap-env:Body>
</soap-env:Envelope>

Example OTA_HotelResNotifRS message containing an error status:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <Interface xmlns="http://www.newtrade.com/expedia/R14/header" Name="ExpediaDirectConnect" Version="4.0">
      <PayloadInfo RequestId="783404" RequestorId="tobook" ResponderId="PartnerName" Location="Body">
        <CommDescriptor DestinationId="tobook" SourceId="PartnerName" RetryIndicator="false"/>
        <PayloadDescriptor Name="OTA_HotelResNotifRS" >
          <PayloadReference SupplierHotelCode="204020"/>
        </PayloadDescriptor>
      </PayloadInfo>
    </Interface>
  </soap-env:Header>  
  <soap-env:Body>
    <OTA_HotelResNotifRS TimeStamp="2020-09-03T08:32:01.8598106+02:00" Target="Production" Version="1.000" PrimaryLangID="en-us" ResResponseType="Ignored" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Errors>
        <Error Language="en-us" Type="3" ShortText="3203" Code="450">The Room Type Code is missing or invalid</Error>
      </Errors>
    </OTA_HotelResNotifRS>
  </soap-env:Body>
</soap-env:Envelope>

Example SOAP fault message:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header/>
  <soap-env:Body>
    <soap-env:Fault>
      <faultcode>2002</faultcode>
      <faultstring>SOAP envelope was not found.</faultstring>
      <faultactor>SchemaValidation</faultactor>
    </soap-env:Fault>
  </soap-env:Body>
</soap-env:Envelope>

Roomtypes Retrieval

Endpoint

The endpoint for XML Roomtypes retrieval requests expects standard RoomTypesRQ (non-SOAP) XML messages, and is located at:
https://www.tobook.com/Delta/RQueryRESTService/xml/Extensions/RetrieveRoomTypes

Namespace & Schema

Request (RoomTypesRQ)

Supported Namespaces:
http://www.w3.org/2001/XMLSchema
Schema available at:
http://www.tobook.com/static/files/RoomTypesRQ.xsd

Response (RoomTypesRS)

Supported Namespaces:
http://www.w3.org/2001/XMLSchema
Schema available at:
http://www.tobook.com/static/files/RoomTypesRS.xsd

Model

Sample Messages

Example RoomTypesRQ message requesting list of Room-Types:


<?xml version="1.0" encoding="UTF-8"?>
<RoomTypesRQ>
    <Authentication username="MyTestAccountName" password="MyTestPassword"/>
    <Hotel id="204020"/>
</RoomTypesRQ>

Example RoomTypesRS message notifying that an error occurred:


<?xml version="1.0" encoding="UTF-8"?>
<RoomTypesRQ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
    <Error code="1001">Authentication error: invalid username or password.</Error>
</RoomTypesRQ>

Example RoomTypesRS message with some typical list of Room-Types messages:


<?xml version="1.0" encoding="UTF-8"?>
<RoomTypesRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Hotel id="200093"/>
    <RoomTypes>
        <RoomType RoomTypeName="Basic single" id="1" PersonsNormal="1" />
        <RoomType RoomTypeName="Basic double" id="2" PersonsNormal="2" />
        <RoomType RoomTypeName="Superior double" id="4" PersonsNormal="2" />
    </RoomTypes>
</RoomTypesRS>

Offer Types Retrieval

Endpoint

The endpoint for XML OfferTypes retrieval requests expects standard OfferTypesRQ (non-SOAP) XML messages, and is located at:
https://www.tobook.com/Delta/RQueryRESTService/xml/Extensions/RetrieveOfferTypes

Namespace & Schema

Request (OfferTypesRQ)

Supported Namespaces:
http://www.w3.org/2001/XMLSchema
Schema available at:
http://www.tobook.com/static/files/OfferTypesRQ.xsd

Response (OfferTypesRS)

Supported Namespaces:
http://www.w3.org/2001/XMLSchema
Schema available at:
http://www.tobook.com/static/files/OfferTypesRS.xsd

Model

Sample Messages

Example OfferTypeRQ message requesting all base-rate-plans:


<?xml version="1.0" encoding="UTF-8"?>
<OfferTypesRQ>
    <Authentication username="MyTestAccountName" password="MyTestPassword"/>
    <Hotel id="204020" />
</OfferTypesRQ>

Example OfferTypRS message notifying that an error occurred:


  <?xml version="1.0" encoding="UTF-8"?>
  <OfferTypesRS  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <Error code="1001">Authentication error: invalid username or password.</Error>
  </OfferTypesRS>

Example OfferTypRS message with some typical rate-plans.


<?xml version="1.0" encoding="UTF-8"?>
<OfferTypesRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Hotel id="204020" />
    <OfferTypes>
        <OfferType OfferTypeName="Standard Rate" id="1" ReleaseDays="0" PaymentSchemeName="Payment on Arrival" />
        <OfferType OfferTypeName="Standard Rate with Breakfast" id="3" ReleaseDays="0" PaymentSchemeName="Payment on Arrival" />
    </OfferTypes>
</OfferTypesRS>