OTA_ReadRQ / OTA_HotelResNotifRQ or OTA_ResRetrieveRS

OTA_ReadRQ / OTA_HotelResNotifRQ or OTA_ResRetrieveRS

a

The OTA_ReadRQ messages are used to request the following elements in the Hotel-Spider system:

  • New reservations

  • Modified reservations

  • Cancelled reservations



Prior to retrieving reservations/modifications/cancellations from the Hotel-Spider servers, the room types and rate plans need to be mapped. For this purpose, a third party software provider can use either the OTA_HotelRoomListRQ/OTA_HotelRoomListRS pair or the combination of the OTA_HotelDescriptiveInfoRQ/OTA_HotelDescriptiveInfoRS and OTA_HotelRatePlanRQ/OTA_HotelRatePlanRS request pairs.



Response format

Depending on the preferences of the third party software provider, the Hotel-Spider system will either reply to an OTA_ReadRQ with an OTA_HotelResNotifRQ (asynchronous usage) or with an OTA_ResRetrieveRS response.  By default, our system will reply with the OTA_HotelResNotifRQ format. For other formats, please contact us.

Confirming successful import

Disregarding which response format the Hotel-Spider system will return the third party software client needs to confirm every reservation/modification/cancellation it has imported via an OTA_HotelResNotifRS / OTA_HotelResNotifRS or an OTA_NotifReportRQ / OTA_NotifReportS call.

Reservation are automatically flagged as exported after 5 reads

After any reservation has been returned 5 times (with SelectionType set to Undelivered) it will be marked as exported, and thus will not be returned in the subsequent responses to OTA_ReadRQ requests.

Credit-card information specifics

If your system is PCI-DSS compliant and you are using the secure endpoints, please be aware that credit-card number is returned in clear text in response to the first read request only

The next responses will contain only the masked card number.

Regarding the CVC code, please be aware that it can be exported only one time, either on the extranet or through the API. If the CVC code as been shown in the extranet, it will be be present in the response.

Endpoints

Example request and response

OTA_ReadRQ request
<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2018-03-17T09:30:47-05:00" Target="Test" Version="2.0"> <POS> <Source> <RequestorID ID="USERNAME" MessagePassword="PASSWORD" /> </Source> </POS> <UniqueID Type="14" ID="" /> <ReadRequests> <HotelReadRequest HotelCode="" HotelName=""> <SelectionCriteria SelectionType="Undelivered" DateType="" Start="" End="" /> </HotelReadRequest> </ReadRequests> </OTA_ReadRQ>
OTA_HotelReservationNotifRQ response
<OTA_HotelResNotifRQ Target="Production" TimeStamp="2011-08-01T14:47:59" Version="2.0" PrimaryLangID="en" 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 OTA_HotelResNotifRQ.xsd"> <Success /> <HotelReservations> <HotelReservation ResStatus="Book" ForcedSellIndicator="0" OriginalDeliveryMethodCode="11" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-10-29T17:06:02+01:00" LastModifyDateTime="2015-10-29T17:06:03+01:00"> <POS> <Source> <RequestorID ID="0" Type="22"/> <BookingChannel Type="5"> <CompanyName>Hotel-Spider</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00F55f80d7db845a" IsRoom="1"> <RoomDescription Name="Single room standard"/> </RoomType> </RoomTypes> <RatePlans> <RatePlan RatePlanID="00P561b590116e60"> <MealsIncluded MealPlanIndicator="1" MealPlanCodes="4.MPT"/> </RatePlan> </RatePlans> <RoomRates> <RoomRate EffectiveDate="2015-09-16" ExpireDate="2015-09-19" RatePlanID="00F55f80f515c377"> <Rates> <Rate EffectiveDate="2015-09-16" ExpireDate="2015-09-16"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-17" ExpireDate="2015-09-17"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-18" ExpireDate="2015-09-18"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-19" ExpireDate="2015-09-19"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> </Rates> <RoomRateDescription> <Text>Standard with breakfast</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-09-16" End="2015-09-20" Duration="P4D"/> <CancelPenalties> <CancelPenalty PolicyCode="STD" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <AmountPercent FeesInclusive="1" Amount="0.0000"/> <PenaltyDescription Name="Standard"/> </CancelPenalty> </CancelPenalties> <DepositPayments> <GuaranteePayment GuaranteeType="PrePay" Type="RequiredPayment" NonRefundableIndicator="False"> <AcceptedPayments> <AcceptedPayment GuaranteeTypeCode="4" PaymentTransactionTypeCode="charge"> <PaymentCard CardCode="VI" ExpireDate="0917"> <CardHolderName>Dr WhoWho II</CardHolderName> <CardNumber> <PlainText>4970497049704971</PlainText> </CardNumber> <SeriesCode> <PlainText>124</PlainText> </SeriesCode> </PaymentCard> </AcceptedPayment> </AcceptedPayments> <AmountPercent Percent="10" CurrencyCode="EUR" Amount="5.90" DecimalPlaces="2" ApplyAs="FirstAndLastNightDeposit" /> <Description> <Text>This is a test DepositPayment on the RoomStay level</Text> </Description> </GuaranteePayment> </DepositPayments> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="680.00" DecimalPlaces="2" /> <BasicPropertyInfo HotelCode="00F55f7e28de4a33" HotelName="Hotel Ennit PO" CurrencyCode="EUR"/> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> <RoomStay IndexNumber="2" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00F55f80d7db845a" IsRoom="1"> <RoomDescription Name="Single room standard"/> </RoomType> </RoomTypes> <RatePlans> <RatePlan RatePlanID="00P561b58e7250da"> <MealsIncluded MealPlanIndicator="0"/> </RatePlan> </RatePlans> <RoomRates> <RoomRate EffectiveDate="2015-09-16" ExpireDate="2015-09-19" RatePlanID="00F55f80f515c377"> <Rates> <Rate EffectiveDate="2015-09-16" ExpireDate="2015-09-16"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-17" ExpireDate="2015-09-17"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-18" ExpireDate="2015-09-18"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-19" ExpireDate="2015-09-19"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> </Rates> <RoomRateDescription> <Text>Standard with breakfast</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-09-16" End="2015-09-20" Duration="P4D"/> <CancelPenalties> <CancelPenalty PolicyCode="STD" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <AmountPercent FeesInclusive="1" Amount="0.00" DecimalPlaces="2" /> <PenaltyDescription Name="Standard"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="680.00" DecimalPlaces="2" /> <BasicPropertyInfo HotelCode="00F55f7e28de4a33" HotelName="Hotel Ennit PO" CurrencyCode="EUR"/> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <UniqueID ID="00R5615405a213c7" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-10-07T17:55:06+02:00" LastModifyDateTime="2015-10-29T17:06:05+01:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Friedrichstraße</GivenName> <Surname>Crescenzio</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">fabio.crescenzio@hotel-spider.com</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>Friedrichstraße 7</AddressLine> <CityName>Montcherand</CityName> <PostalCode>1354</PostalCode> <CountryName>Switzerland</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-09-16" End="2015-09-19" Duration="P3D"/> <Comments> <Comment CreateDateTime="2015-10-29T17:06:03+01:00" LastModifyDateTime="2015-10-29T17:06:03+01:00" Language="en"> <Text>This reservation has been sent to test if everything is working fine with the OTA messages, you can ignore it</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher" GuaranteeCode="00F563243eb94a3c"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="1111"> <CardHolderName>Fabio Crescenzio</CardHolderName> <CardNumber Mask="xxxxxxxxxxxx1111"> <PlainText>4242424242421111</PlainText> </CardNumber> <SeriesCode> <PlainText>011</PlainText> </SeriesCode> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <DepositPayments> <GuaranteePayment GuaranteeType="PrePay" Type="RequiredPayment" NonRefundableIndicator="False"> <AcceptedPayments> <AcceptedPayment GuaranteeTypeCode="4" PaymentTransactionTypeCode="charge"> <PaymentCard CardCode="VI" ExpireDate="0917"> <CardHolderName>Dr WhoWho II</CardHolderName> <CardNumber> <PlainText>4970497049704971</PlainText> </CardNumber> <SeriesCode> <PlainText>124</PlainText> </SeriesCode> </PaymentCard> </AcceptedPayment> </AcceptedPayments> <AmountPercent Percent="10" CurrencyCode="EUR" Amount="5.90" DecimalPlaces="2" ApplyAs="FirstAndLastNightDeposit" /> <Description> <Text>This is a test DepositPayment on the Reservation level</Text> </Description> </GuaranteePayment> </DepositPayments> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="1360.00" DecimalPlaces="2" /> <HotelReservationIDs> <HotelReservationID ResID_Date="2015-10-29T17:06:04+01:00" ResID_Source="1" ResID_SourceContext="Tourisoft" ResID_Type="14" ResID_Value="12315465678914guiguifbuif"/> <HotelReservationID ResID_Date="2015-10-29T17:06:04+01:00" ResID_SourceContext="Hotel Spider" ResID_Type="34" ResID_Value="00F563243ea41b11"/> </HotelReservationIDs> <Profiles> <ProfileInfo> <UniqueID ID="00R5615405a213c7" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-10-07T17:55:06+02:00" LastModifyDateTime="2015-10-29T17:06:05+01:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Friedrichstraße</GivenName> <Surname>Crescenzio</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">fabio.crescenzio@hotel-spider.com</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>Friedrichstraße 7</AddressLine> <CityName>Montcherand</CityName> <PostalCode>1354</PostalCode> <CountryName>Switzerland</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00F55f7e28de4a33" HotelName="Hotel Ennit PO" CurrencyCode="EUR"/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResNotifRQ>
OTA_ResRetrieveRS response
<OTA_ResRetrieveRS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opentravel.org/OTA/2003/05" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_ResRetrieveRS.xsd" Version="1.000"> <Success/> <ReservationsList> <HotelReservation ResStatus="Book" ForcedSellIndicator="0" OriginalDeliveryMethodCode="11" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-10-29T17:06:02+01:00" LastModifyDateTime="2015-10-29T17:06:03+01:00"> <POS> <Source> <RequestorID ID="0" Type="22"/> <BookingChannel Type="5"> <CompanyName>Hotel-Spider</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00F55f80d7db845a" IsRoom="1"> <RoomDescription Name="Single room standard"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-09-16" ExpireDate="2015-09-19" RatePlanID="00F55f80f515c377"> <Rates> <Rate EffectiveDate="2015-09-16" ExpireDate="2015-09-16"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-17" ExpireDate="2015-09-17"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-18" ExpireDate="2015-09-18"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-19" ExpireDate="2015-09-19"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> </Rates> <RoomRateDescription> <Text>Standard with breakfast</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-09-16" End="2015-09-20" Duration="P4D"/> <CancelPenalties> <CancelPenalty PolicyCode="STD" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <AmountPercent FeesInclusive="1" Amount="0.00" DecimalPlaces="2" /> <PenaltyDescription Name="Standard"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="680.00" DecimalPlaces="2" /> <BasicPropertyInfo HotelCode="00F55f7e28de4a33" HotelName="Hotel Ennit PO" CurrencyCode="EUR"/> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> <RoomStay IndexNumber="2" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00F55f80d7db845a" IsRoom="1"> <RoomDescription Name="Single room standard"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-09-16" ExpireDate="2015-09-19" RatePlanID="00F55f80f515c377"> <Rates> <Rate EffectiveDate="2015-09-16" ExpireDate="2015-09-16"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-17" ExpireDate="2015-09-17"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-18" ExpireDate="2015-09-18"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> <Rate EffectiveDate="2015-09-19" ExpireDate="2015-09-19"> <Base CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="160.00" DecimalPlaces="2" /> </Rate> </Rates> <RoomRateDescription> <Text>Standard with breakfast</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-09-16" End="2015-09-20" Duration="P4D"/> <CancelPenalties> <CancelPenalty PolicyCode="STD" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <AmountPercent FeesInclusive="1" Amount="0.00" DecimalPlaces="2" /> <PenaltyDescription Name="Standard"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="680.00" DecimalPlaces="2" /> <BasicPropertyInfo HotelCode="00F55f7e28de4a33" HotelName="Hotel Ennit PO" CurrencyCode="EUR"/> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <UniqueID ID="00R5615405a213c7" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-10-07T17:55:06+02:00" LastModifyDateTime="2015-10-29T17:06:05+01:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Friedrichstraße</GivenName> <Surname>Crescenzio</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">fabio.crescenzio@hotel-spider.com</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>Friedrichstraße</AddressLine> <CityName>Montcherand</CityName> <PostalCode>1354</PostalCode> <CountryName>Switzerland</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-09-16" End="2015-09-19" Duration="P3D"/> <Comments> <Comment CreateDateTime="2015-10-29T17:06:03+01:00" LastModifyDateTime="2015-10-29T17:06:03+01:00" Language="en"> <Text>This reservation has been sent to test if everything is working fine with the OTA messages, you can ignore it</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher" GuaranteeCode="00F563243eb94a3c"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="1111"> <CardHolderName>Fabio Crescenzio</CardHolderName> <CardNumber Mask="xxxxxxxxxxxx1111"> <PlainText>4242424242421111</PlainText> </CardNumber> <SeriesCode> <PlainText>011</PlainText> </SeriesCode> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total CurrencyCode="EUR" AmountBeforeTax="0.00" AmountAfterTax="1360.00" DecimalPlaces="2" /> <HotelReservationIDs> <HotelReservationID ResID_Date="2015-10-29T17:06:04+01:00" ResID_Source="1" ResID_SourceContext="Tourisoft" ResID_Type="14" ResID_Value="12315465678914guiguifbuif"/> <HotelReservationID ResID_Date="2015-10-29T17:06:04+01:00" ResID_SourceContext="Hotel Spider" ResID_Type="34" ResID_Value="00F563243ea41b11"/> </HotelReservationIDs> <Profiles> <ProfileInfo> <UniqueID ID="00R5615405a213c7" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-10-07T17:55:06+02:00" LastModifyDateTime="2015-10-29T17:06:05+01:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Friedrichstraße</GivenName> <Surname>Crescenzio</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">fabio.crescenzio@hotel-spider.com</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>Friedrichstraße</AddressLine> <CityName>Montcherand</CityName> <PostalCode>1354</PostalCode> <CountryName>Switzerland</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00F55f7e28de4a33" HotelName="Hotel Ennit PO" CurrencyCode="EUR"/> </ResGlobalInfo> </HotelReservation> </ReservationsList> </OTA_ResRetrieveRS>


Request structure

OTA_ReadRQ

Parent: None (Root element)

Mandatory: yes

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

TimeStamp

Yes

The format should respect the ISO 8601 2015-11-16T22:23:48+00:00

Target

Yes

When sending updates to the staging environment "Test" must be used.

When sending updates to the production environment "Production" must be used.

Version

Yes

The default value should be "1.000"

Child elements: POS (when using POS authentication. See Authentication methods for more information), HotelRoomLists



UniqueID

Parent: OTA_ReadRQ

Mandatory: No

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

Type

Yes

When querying for a reservation by using the Hotel-Spider ID  Type="14" must be used

When querying for a reservation by using the original ID Type="22" must be used (not implemented yet)

ID

Yes

The reservation ID you're trying to retrieve

Child elements: None

Retrieving a specific reservation/modification/cancellation

When using Type="22", the value of the ID attribute need to be the reservation confirmation number of the booking channel from which the reservation originated. So should a reservation originate from Booking.com, their reservation confirmation should be used. Should a reservation originate from Expedia.com, their reservation confirmation should be used, etc.

ReadRequests

Parent: OTA_ReadRQ

Mandatory: No

Attributes: None

Children: HotelReadRequest



HotelReadRequest

Parent: ReadRequests

Mandatory: Yes (If ReadRequests is used)

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

HotelCode

Yes

The Hotel-Spider hotel ID which you are updating

By default our system will search for the HotelCode attribute. Should this not be available, our system will try to identify the hotel based on the room ID as this is uniquely linked to one hotel.

HotelName

No

This attribute can be used for readability.

Child elements: None



SelectionCriteria

Parent: HotelReadRequest

Mandatory: Yes (If ReadRequests is used)

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

SelectionType

Yes

Possible values are "All", "PreviouslyDelivered", Undelivered"

DateType

No

Possible values are "ArrivalDate", "CreateDate", "DepartureDate", "LastUpdateDate"

When not specified, default value is "LastUpdateDate"

Start

Yes*

The format should respect the ISO 8601 2015-11-16

The Start is mandatory if End is provided.

End

Yes*

The format should respect the ISO 8601 2015-11-17

The End date is inclusive meaning that it will also be searched.

The End is mandatory if Start is provided.

Child elements: None

Note on Start and End date limitations

  • 'Start' date and 'End' date are both required on request. If only one of them is missing the response will be an error message.

  • The distance between 'Start' and 'End' date must not exceed 30 days. Otherwise it will change End date to 30 days from Start.

  • If both 'Start' and 'End' date are missing then a default date will be assigned:
    'Start' =  today
    'End' = today + 30 days

Use case 1: Query the Hotel-Spider system for new reservations, modifications and cancellations

 <?xml version="1.0" encoding="utf-8"?>
<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
  <POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
  </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="" HotelName="">
      <SelectionCriteria SelectionType="Undelivered" />
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

Use case 2: Query for reservations created between Start and End date

<?xml version="1.0" encoding="utf-8"?>
<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
  <POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
   </Source> 
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="" HotelName="">
      <SelectionCriteria SelectionType="All" DateType="CreateDate" Start="2015-11-01" End="2015-11-30" />
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

Use case 3: Query for reservations with modification date between Start and End

<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
  <POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
  </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="" HotelName="">
      <SelectionCriteria SelectionType="All" DateType="LastUpdateDate" Start="2015-11-01" End="2015-11-30" />
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

Use case 4: Query for reservations with arrival date between Start and End

<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
<POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
  </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="" HotelName="">
      <SelectionCriteria SelectionType="All" DateType="ArrivalDate" Start="2015-11-01" End="2015-11-30" />
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

Use case 5: Query for reservations with departure date between Start and End

<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
<POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
  </Source>
  </POS>
  <ReadRequests>
    <HotelReadRequest HotelCode="" HotelName="">
      <SelectionCriteria SelectionType="All" DateType="DepartureDate" Start="2015-11-01" End="2015-11-30" />
    </HotelReadRequest>
  </ReadRequests>
</OTA_ReadRQ>

Use case 6: Query for a specific reservation using the Hotel-Spider ID

<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
<POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
  </Source>
  </POS>
 <UniqueID Type="14" ID="005LDSDFD0134687321" />
</OTA_ReadRQ>

Use case 7: Query for a specific reservation using the channel's ID

<OTA_ReadRQ 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 OTA_ReadRQ.xsd" TimeStamp="2003-03-17T09:30:47-05:00" Target="Test">
<POS>
    <Source>
      <RequestorID ID="USERNAME" MessagePassword="PASSWORD" />
  </Source>
  </POS>
 <UniqueID Type="22" ID="87654321" />
</OTA_ReadRQ>



Response structure

OTA_HotelResNotifRQ / OTA_ResRetrieveRS

Parent: None (Root element)

Mandatory: yes

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

TimeStamp

Yes

The format will respect the ISO 8601 2015-11-16T22:23:48+00:00

Target

Yes

The same value, used in the request, will be returned.

Version

Yes

The value wil be "1.000"

Child elements: Success, HotelReservations / ReservationsList Errors

Root element

Depending on the response format requested by the third party software provider, the response will either contain the OTA_HotelResNotifRQ or the OTA_ResRetrieveRS as the root element.



HotelReservations / ReservationsList

Parent: OTA_HotelResNotifRQ / OTA_ResRetrieveRS

Mandatory: Yes

Attributes: None

Child elements: HotelReservation

HotelReservation parent element

Depending on the response format requested by the third party software provider, the response will either contain the HotelReservations or the ReservationsList as the container for all the reservations to be exported.



HotelReservation

Parent: HotelReservations

Mandatory: yes

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

ResStatus

Yes

Possible values are "Book", "Modify", "Cancel"

ForcedSellIndicator

No

Indicates a sell (reservation) was forced even if there were restrictions or no availability.

OriginalDeliveryMethodCode

No

The method by which the original reservation was delivered. Possible values are:

  • 1 (Fax)

  • 2 (E-mail)

  • 3 (Mail)

  • 4 (Courier)

  • 5 (Airport collection)

  • 6 (City office)

  • 7 (Hotel desk)

  • 8 (Will call)

  • 9 (EXpress mail)

  • 10 (Telephone)

  • 11 (XML)

  • 12 (FTP)

  • 13 (Website)

  • 14 (HTTP)

  • 15 (Non-XML)

  • 16 (Any)

RoomStayReservation

No

Default value will be "1". Indicates this reservation is for lodging space.

WalkInIndicator

No

Default value will be "0". Indicates the reservation was not generated at the properties front-desk

CreateDateTime

Yes

The format will be provided in ISO 8601 format 2015-10-29T17:06:02+01:00

LastModifyDateTime

Yes

The format will be provided in ISO 8601 format 2015-10-29T17:06:03+01:00

Child elements: RoomStays, ResGuests, ResGlobalInfo



POS

Parent: HotelReservation

Mandatory: Yes

Attributes: None

Child elements: HotelReservation



Source

Parent: POS

Mandatory: Yes

Attributes: None

Child elements: POS



RequestorID

Parent: Source

Mandatory: Yes

Attributes:

Name

Mandatory

Description

Name

Mandatory

Description

ID

Yes

Unique identifier of the source channel. You can retrieve the full list automatically, see Specific call : retrieve channels list

Type

Yes

Default value is "22"

Child elements: CompanyName


BookingChannel

Parent: Source

Mandatory: yes

Attributes: None

Child elements: CompanyName


CompanyName

Parent: BookingChannel

Mandatory: Yes