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!

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

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

Availability and Rate Update

Endpoint

The endpoiont 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 containing most functionality:

<?xml version="1.0" encoding="UTF-8"?>
<AvailRateUpdateRQ xmlns="http://www.expediaconnect.com/EQC/AR/2011/06">
  <Authentication username="MyTestAccountName" password="MyTestPassword"/>
  <Hotel id="1234"/>
  <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="1" 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">
          <PerOccupancy rate="210.00" occupancy="1"/>
          <PerOccupancy rate="260.00" occupancy="2"/>
        </Rate>
        <Restrictions closedToArrival="false" closedToDeparture="false" minLOS="2" maxLOS="28"/>
      </RatePlan>
    </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 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 endpoiont 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 un-confirmed active bookings:

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

Example BookingRetrievalRS message notifying 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:

<?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="4257-484-200830-200831-A" source="tobook.com" type="Book" status="pending">
            <Hotel id="4257" />
            <PrimaryGuest>
                <Name givenName="John" surname="Doe" />
                <Phone number="+44 123 321 098" />
            </PrimaryGuest>
            <RoomStay ratePlanID="2" roomTypeID="18">
                <GuestCount adult="2" />
                <PaymentCard cardCode="AX" cardNumber="XXXXX" expireDate="0323" seriesCode="394">
                    <CardHolder address="1 London Street" city="London" name="John Doe" postalCode="ABC 12" />
                </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>
            <SpecialRequest code="4">Towels and bathrobe in room please!</SpecialRequest>
        </Booking>
        <Booking createDateTime="2020-04-17T23:33:26.823" id="4257-484-200830-200831-B" source="tobook.com" type="Book" status="pending">
            <Hotel id="4257" />
            <PrimaryGuest>
                <Name givenName="Jane" surname="Doe" />
                <Phone number="" />
            </PrimaryGuest>
            <RoomStay ratePlanID="2" roomTypeID="16">
                <GuestCount adult="1" />
                <PaymentCard cardCode="AX" cardNumber="XXXXX" expireDate="0323" seriesCode="394">
                    <CardHolder address="1 London Street" city="London" name="John Doe" postalCode="ABC 12" />
                </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-17T23:38:36.15" id="4257-485-200831-200902-A" source="tobook.com" type="Book" status="pending">
            <Hotel id="4257" />
            <PrimaryGuest>
                <Name givenName="San" surname="Chi Yun" />
                <Phone number="+31 112 334 556" />
            </PrimaryGuest>
            <RoomStay ratePlanID="1" roomTypeID="17">
                <GuestCount adult="3" />
                <PaymentCard cardCode="VI" cardNumber="XXXXX" expireDate="0326" seriesCode="987">
                    <CardHolder address="12 Smith Square" city="Den Haag" name="San Chi Yun" postalCode="AZ8J" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="115.57" stayDate="2020-08-31" />
                    <PerDayRate baseRate="99.06" stayDate="2020-09-01" />
                </PerDayRates>
                <StayDate arrival="2020-08-31" departure="2020-09-02" />
                <Total amountAfterTaxes="228.80" amountOfTaxes="14.17" />
            </RoomStay>
            <SpecialRequest code="4">Would prefer not to have a street facing room.</SpecialRequest>
        </Booking>
        <Booking createDateTime="2020-02-17T23:32:36.15" id="4257-486-200831-200902-A" source="tobook.com" type="Modify" status="pending">
            <Hotel id="4257" />
            <PrimaryGuest>
                <Name givenName="Ash" surname="Brinda" />
                <Phone number="+36 1123 034 557" />
            </PrimaryGuest>
            <RoomStay ratePlanID="1" roomTypeID="22">
                <GuestCount adult="1" />
                <PaymentCard cardCode="AX" cardNumber="(already retrieved)" expireDate="0323" seriesCode="223">
                    <CardHolder address="1 Main Avenue" city="Jamesville" name="a brinda" postalCode="NPQ8C" />
                </PaymentCard>
                <PerDayRates currency="EUR">
                    <PerDayRate baseRate="105.57" stayDate="2020-08-31" />
                    <PerDayRate baseRate="89.06" stayDate="2020-09-01" />
                </PerDayRates>
                <StayDate arrival="2020-08-31" departure="2020-09-02" />
                <Total amountAfterTaxes="208.80" amountOfTaxes="14.17" />
            </RoomStay>
        </Booking>
        <Booking createDateTime="2020-04-19T21:15:17.17" id="4257-392-200831-200902-A" source="tobook.com" type="Cancel" status="pending">
            <Hotel id="4257" />
            <PrimaryGuest>
                <Name givenName="Mike" surname="Ericsson" />
                <Phone number="+31 2765 287 61" />
            </PrimaryGuest>
            <RoomStay ratePlanID="2" roomTypeID="18">
                <GuestCount adult="2" />
                <PaymentCard cardCode="CB" cardNumber="(already retrieved)" expireDate="0828" seriesCode="901">
                    <CardHolder address="1 Main Square" city="Lower Allanberg" name="Mike Ericsson" postalCode="1MX CC" />
                </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.58" 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 endpoiont 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"/>
    <BookingConfirmNumbers>
        <BookingConfirmNumber bookingID="257-486-200831-200902-A" bookingType="Book" confirmNumber="257-486-200831-200902-A" confirmTime="2020-01-30T23:45:00Z"/>
        <BookingConfirmNumber bookingID="257-487-200612-200618-A" bookingType="Cancel" confirmNumber="257-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 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>