Hotel reservation
Endpoints
- HTTP RAW POST
Hotel reservation request
XSD File : OTA_HotelResRQ.xsd
<?xml version="1.0" encoding="utf-8"?> <OTA_HotelResRQ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EchoToken="ECHOTOKEN" TimeStamp="2015-09-08T13:11:31.2567097+00:00" Target="Test" Version="2.0" TransactionIdentifier="TRANSACTIONIDENTIFIER" PrimaryLangID="en" AltLangID="en" ResStatus="Book" xmlns="http://www.opentravel.org/OTA/2003/05"> <POS> <Source> <RequestorID ID="YOURUSERNAME" MessagePassword="YOURPASSWORD" Type="13" /> </Source> </POS> <HotelReservations> <HotelReservation> <POS> <Source> <RequestorID Type="5" ID="YOUR_BOOKINGCHANNEL_ID" /> <BookingChannel Type="5"> <CompanyName>YOURCOMPANYNAME</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1"> <RoomTypes> <RoomType RoomID="GUESTROOMID" /> </RoomTypes> <RoomRates> <RoomRate NumberOfUnits="1" RatePlanID="RATEPLANID" RoomID="GUESTROOMID"> <Rates> <Rate EffectiveDate="2015-09-15" ExpireDate="2015-09-15"> <Base AmountAfterTax="100" CurrencyCode="CHF" /> <Total AmountAfterTax="100" CurrencyCode="CHF" /> </Rate> </Rates> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-09-15" End="2015-09-16" /> <CancelPenalties> <CancelPenalty NonRefundable="1" NoCancelInd="0" PolicyCode="ABC"> <Deadline AbsoluteDeadline="2015-09-04T06:00:00+02:00"/> <AmountPercent Amount="280.00" CurrencyCode="CHF"/> <PenaltyDescription Name="CANCELPENALTYNAME" Language="en"> <Text>CANCELPENALTYDESCRIPTION</Text> </PenaltyDescription> </CancelPenalty> </CancelPenalties> <Total AmountAfterTax="100" CurrencyCode="CHF" /> <BasicPropertyInfo HotelCode="YOURHOTELCODE" /> <ResGuestRPHs>1</ResGuestRPHs> <Reference ID="1-1" Type="16"/> </RoomStay> </RoomStays> <Services> ... </Services> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>GUESTFIRSTNAME</GivenName> <Surname>GUESTLASTNAME</Surname> </PersonName> <Email>GUESTEMAIL</Email> <Address FormattedInd="false"> <AddressLine>GUESTADDRESS</AddressLine> <CityName>GUESTCITY</CityName> <PostalCode>GUESTPOSTALCODE</PostalCode> <CountryName>GUESTCOUNTRY</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-09-15" End="2015-09-16" /> <Comments> <Comment> <Text>GUESTCOMMENTS</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="1111"> <CardHolderName>CARDHOLDERNAME</CardHolderName> <CardNumber> <PlainText>1111111111111111</PlainText> </CardNumber> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AmountAfterTax="100" CurrencyCode="CHF" /> <HotelReservationIDs> <HotelReservationID ResID_Type="14" ResID_Value="YOURRESERVATIONID" ResID_Source="1" ResID_SourceContext="YOURCONTEXT" /> </HotelReservationIDs> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>CONSUMERFIRSTNAME</GivenName> <Surname>CONSUMERLASTNAME</Surname> </PersonName> <Email>CONSUMEREMAILADDRESS</Email> <Address> <AddressLine>CONSUMERADDRESS</AddressLine> <CityName>CONSUMERCITY</CityName> <PostalCode>CONSUMERPOSTALCODE</PostalCode> <CountryName>CONSUMERCOUNTRY</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="YOURHOTELCODE" /> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRQ>
Hotel reservation request details
General information
The first part of the request payload contains general information about the reservation.
Element | Attribute | Description | Required | Repetitive |
---|---|---|---|---|
TransactionIdentifier | This attribute is mandatory and must have the same value in both HotelAvailRQ and HotelResRQ requests for a given transaction | yes | no | |
ResStatus | The status of the reservation. The currently supported values are:
| yes | no | |
HotelReservations | yes | no | ||
HotelReservation | yes | no | ||
POS | yes | no | ||
Source | Provides information on the source of the reservation request | |||
BookingChannel | The BookingChannel element contains information about the requesting booking channel. | yes | no | |
Type | The type of booking channel (e.g. Global Distribution System (GDS), Alternative Distribution System (ADS), Sales and Catering System (SCS), Property Management System (PMS), Central Reservation System (CRS), Tour Operator System (TOS), Internet and ALL). Refer to Booking Channel Type (BCT) | yes | no | |
CompanyName | The selling company name (will be shown on the hotelier's extranet so that he knows from where the reservation is coming from) | no | no |
Services
The reserved Services appear next, please see Service reservation for more details.
RoomStays - information about the reserved rooms and rates
Then the RoomStays are detailed as follow:
Element | Attribute | Description | Required | Repetitive |
---|---|---|---|---|
RoomStays | A collection of the booked room stays at the given hotel | yes | no | |
RoomStay | A room stay corresponds to a stay in a certain room | no | yes | |
IndexNumber | A unique number (e.g. segment number or index number) used to further identify a booked item within a list of booked items. | no | no | |
Services | Refer to Services reservation. | |||
HotelCode | The Hotel identification code | yes | no | |
RoomTypes | yes | no | ||
RoomType | yes | yes | ||
RoomID | The ID of the reserved guestroom | yes | no | |
RoomRates | yes | no | ||
RoomRate | yes | yes | ||
NumberOfUnits | The number of booked roomrate (must be equal to 1 if specified) | no | no | |
RoomID | Specifies which guest room is concerned by this reservation | yes | no | |
RatePlanID | Specifies which rate plan is used for this room | yes | no | |
Rates | yes | no | ||
Rate | Important notes:
| yes | yes | |
EffectiveDate | The start date for the rate | yes | no | |
ExpireDate | The end date for the rate | yes | no | |
Base | yes | no | ||
AmountAfterTax | The rate amount of the room without any discounts applied | yes | no | |
CurrencyCode | The rate currency code | yes | no | |
Total | yes | no | ||
AmountAfterTax | The rate amount of the room with discounts applied. If no discounts are available, provide the same rate amount as in the Base node. | yes | no | |
CurrencyCode | The rate currency code | yes | no | |
GuestCounts | yes | no | ||
GuestCount | yes | yes | ||
AgeQualifyingCode | A code representing a business rule that determines the charges for a guest based upon age range (e.g. Adult, Child, Senior, Child With Adult, Child Without Adult). This attribute allows for an increase in rate by occupant class. Refer to OpenTravel Code List Age Qualifying Code (AQC). The most commonly used code will be '10 - Adult' | yes | no | |
Count | The number of guests in one AgeQualifyingCode | yes | no | |
TimeSpan | The global timespan of this room stay | yes | no | |
Start | The starting value of the time span | yes | no | |
End | The ending value of the time span | yes | no | |
CancelPenalties | yes | no | ||
CancelPenalty | yes | yes | ||
NonRefundable | Indicates that any prepayment for the reservation is non refundable, therefore a 100% penalty on the prepayment is applied, irrespective of deadline. | yes | no | |
NoCancelInd | If true, the reservation may not be cancelled once the cancellation deadline has expired. | yes | no | |
PolicyCode | If multiple policies defined by the hotelier have been merged to create the given CancelPenalty, the PolicyCode will be set to HS4. | yes | no | |
PenaltyDescription | Text description of the Penalty in a given language. | yes | no | |
Name | The penalty policy name | yes | no | |
Language | Language identification | yes | no | |
Text | The penalty policy description | no | no | |
AmountPercent | Defines the penalty amount | yes | no | |
Amount | The penalty monetary amount | yes | no | |
CurrencyCode | An ISO 4217 (3) alpha character code that specifies a monetary unit | yes | no | |
DecimalPlaces | The ISO 4217 standard "minor unit" for the number of decimal places for a particular currency | yes | no | |
Deadline | Cancellation deadline | yes | no | |
AbsoluteDeadline | Defines the absolute deadline | yes | no | |
Total | The total amount charged for the room stay | yes | no | |
AmountAfterTax | The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax) | yes | no | |
CurrencyCode | An ISO 4217 (3) alpha character code that specifies a monetary unit | yes | no | |
DecimalPlaces | The ISO 4217 standard "minor unit" for the number of decimal places for a particular currency | yes | no | |
ResGuestRPHs | A collection of unsigned integers serving as reference placeholders, and used as an index identifying which guests occupy this room | yes | no | |
BasicPropertyInfo | Information about the property | yes | no | |
Reference | yes | no | ||
Type | The OTA Code table Unique ID Type (UIT) value 16 must be provided. Other values received in the HotelAvailRS messages can be ignored | yes | no | |
ID | Re-use the "integer - integer" value received in the HotelAvailRS message. | yes | no |
ResGuests - information about the traveling guests
The information about the guests is specified like this:
Element | Attribute | Description | Required | Repetitive |
---|---|---|---|---|
ResGuests | A collection of ResGuest objects, identifying the guests associated with this reservation | yes | no | |
ResGuest | The ResGuest object contains the information about a guest associated with a reservation.A collection of ResGuest objects, identifying the guests associated with this reservation. Which guests are in which room is determined by each RoomStays ResGuestRPHs collection. | yes | yes | |
ResGuestRPH | This is a reference placeholder, used as an index for this guest in this reservation. In the ResGuest object it is used like all other RPH attributes to send the delta of a reservation. It is used by the RoomStay and Service objects to indicate which guests are associated with that room stay or service. | yes | no | |
Profiles | A collection of Profile objects | yes | no | |
ProfileInfo | A collection of Profiles | yes | yes | |
Profile | Root element for profile content. | yes | no | |
ProfileType | Code to specify a profile such as Customer, Tour Operator, Corporation, etc. Refer to Profile Type (PRT) | yes | no | |
Customer | Contains basic data on the customer's identity, location, relationships, finances, memberships, etc. | yes | no | |
Gender | The customer gender. Accepted values: Male, Female, Unkwnown | no | no | |
PersonName | This provides name information for a person | yes | no | |
GivenName | Given name, first name or names | yes | no | |
Surname | Family name, last name. Note: May also be used for full name if the sending system does not have the ability to separate a full name into its parts, e.g. the surname element may be used to pass the full name | yes | no | |
Information on an email address for the customer | yes | no | ||
Address | Detailed information on an address for the customer | yes | no | |
FormattedInd | Specifies if the associated data is formatted or not. When true, then it is formatted; when false, then not formatted | yes | no | |
AddressLine | When the address is unformatted (FormattedInd="false") these lines will contain free form address details. When the address is formatted and street number and street name must be sent independently, the street number will be sent using StreetNmbr, and the street name will be sent in the first AddressLine occurrence | yes | yes | |
CityName | City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address) | yes | no | |
PostalCode | Post Office Code number | yes | no | |
CountryName | Country name (e.g., Ireland).The name or code of a country (e.g. as used in an address or to specify citizenship of a traveller) | yes | no |
ResGlobalInfo - Global information about the reservation
This section contains information about the whole reservation such as the credit card details and the customer name
Element | Attribute | Description | Required | Repetitive |
---|---|---|---|---|
ResGlobalInfo | ResGlobalInfo is a container for various information that affects the Reservation as a whole. These include global comments, counts, reservation IDs, loyalty programs, and payment methods | yes | no | |
GuestCounts | A collection of Guest Counts associated to the whole Reservation | yes | no | |
GuestCount | A recurring element that identifies the number of guests and ages of the guests | yes | yes | |
AgeQualifyingCode | A code representing a business rule that determines the charges for a guest based upon age range (e.g. Adult, Child, Senior, Child With Adult, Child Without Adult). This attribute allows for an increase in rate by occupant class. Refer to Age Qualifying Code (AQC) | yes | no | |
Count | The number of guests in one AgeQualifyingCode | yes | no | |
TimeSpan | The global timespan of the hotel stay | yes | no | |
Start | The starting value of the time span | yes | no | |
End | The ending value of the time span | yes | no | |
Comments | A collection of comments | no | no | |
Comment | Comment details | no | no | |
Text | Text content of the comment | no | no | |
Guarantee | The guarantee information to hold a reservation | configurable by the hotel | no | |
GuaranteeType | An enumerated type defining the guarantee to be applied to this reservation. Refer to Guarantee Type (Guarantee_Type) | yes | no | |
GuaranteesAccepted | A collection of guarantees | yes | no | |
GuaranteeAccepted | Guarantee detail | yes | no | |
PaymentCard | Details of a debit or credit card. Specific payment card information. | yes | no | |
CardCode | Issuer code. Refer to Payment Card Code type list | yes | no | |
ExpireDate | Specify the expiration date | yes | no | |
CardHolderName | The details of the Card Holder's Name.This provides name information for a person | yes | no | |
CardNumber | CreditCard's CardNumber element | yes | no | |
PlainText | Plain text value of the CreditCard CardNumber | yes | no | |
Total | The total amount charged for the service including additional amounts and fees | yes | no | |
AmountAfterTax | The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax) | yes | no | |
CurrencyCode | An ISO 4217 (3) alpha character code that specifies a monetary unit | yes | no | |
DecimalPlaces | The ISO 4217 standard "minor unit" for the number of decimal places for a particular currency | yes | no | |
HotelReservationIDs | A Collection of HotelReservationID objects for a given reservation | yes | no | |
HotelReservationID | The HotelReservationID object contains various unique (ReservationID) and non unique (ConfirmationID, CancellationID) identifiers that the trading partners associate with a given reservation | yes | yes | |
ResID_Type | Defines the type of Reservation ID (e.g. reservation number, cancellation number). Refer to Unique Id Type (UIT) | yes | no | |
ResID_Value | This is the actual value associated with ResID_Type as generated by the system that is the source of the ResID_Type | yes | no | |
ResID_Source | A unique identifier to indicate the source system which generated the ResID_Value | yes | no | |
ResID_SourceContext | Additional information on Source | yes | no | |
Profiles | A collection of Profile objects | yes | no | |
ProfileInfo | A collection of Profiles | yes | yes | |
Profile | Root element for profile content. | yes | no | |
ProfileType | Code to specify a profile such as Customer, Tour Operator, Corporation, etc. Refer to Profile Type (PRT) | yes | no | |
Customer | Contains basic data on the customer's identity, location, relationships, finances, memberships, etc. | yes | no | |
PersonName | This provides name information for a person | yes | no | |
GivenName | Given name, first name or names | yes | no | |
Surname | Family name, last name. Note: May also be used for full name if the sending system does not have the ability to separate a full name into its parts, e.g. the surname element may be used to pass the full name | yes | no | |
Information on an email address for the customer | yes | no | ||
Address | Detailed information on an address for the customer | yes | no | |
FormattedInd | Specifies if the associated data is formatted or not. When true, then it is formatted; when false, then not formatted | yes | no | |
AddressLine | When the address is unformatted (FormattedInd="false") these lines will contain free form address details. When the address is formatted and street number and street name must be sent independently, the street number will be sent using StreetNmbr, and the street name will be sent in the first AddressLine occurrence | yes | yes | |
CityName | City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address) | yes | no | |
PostalCode | Post Office Code number | yes | no | |
CountryName | Country name (e.g., Ireland).The name or code of a country (e.g. as used in an address or to specify citizenship of a traveller) | yes | no |
Hotel reservation response
XSD File : OTA_HotelResRS.xsd
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelResRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ECHOTOKEN" TransactionIdentifier="TRANSACTIONIDENTIFER" TimeStamp="2015-09-08T15:11:36+02:00" CorrelationID="CORRELATIONID" Version="1.0"> <Success></Success> <HotelReservations> <HotelReservation ForcedSellIndicator="0" OriginalDeliveryMethodCode="11" ResStatus="Book" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-09-08T15:11:33+02:00" CreatorID="1" LastModifyDateTime="2015-09-08T15:11:34+02:00" LastModifierID="1"> <POS> <Source> <RequestorID ID="0" Type="13" /> <BookingChannel Type="5"> <CompanyName>COMPANYNAME</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="GUESTROOMID" IsRoom="1"> <RoomDescription Name="Double" /> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-09-15" RatePlanName="Standard" RatePlanCode="RATEPLANID" RoomID="GUESTROOMID"> <Rates> <Rate EffectiveDate="2015-09-15"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="100.00" /> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="100.00" /> </Rate> </Rates> <RoomRateDescription> <Text>Standard</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-09-15" End="2015-09-16" Duration="P1D" /> <CancelPenalties> <CancelPenalty NonRefundable="1" NoCancelInd="0" PolicyCode="ABC" End="1900-01-01" Start="1900-01-01" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <Deadline AbsoluteDeadline="2015-09-04T06:00:00+02:00" /> <AmountPercent Amount="280.00" DecimalPlaces="2" CurrencyCode="CHF" /> <PenaltyDescription Name="CANCELPENALTYNAME" Language="en"> <Text>CANCELPENALTYDESCRIPTION</Text> </PenaltyDescription> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="100.00" /> <BasicPropertyInfo HotelCode="HOTELCODE" HotelName="HOTELNAME" CurrencyCode="CHF" /> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> </RoomStays> <Services> ... </Services> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo > <UniqueID ID="00T559f89b8b4371" ID_Context="Internal" Type="1" /> <Profile StatusCode="4" CreateDateTime="2015-07-10T11:00:40+02:00" LastModifyDateTime="2015-09-08T15:11:36+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>GUEST GIVENNAME</GivenName> <Surname>GUEST SURNAME</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">GUESTEMAILADDRESS </Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>GUEST ADDRESS</AddressLine> <CityName>GUEST CITY</CityName> <PostalCode>GUEST POSTAL CODE</PostalCode> <CountryName>GUEST COUNTRY</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-09-15" End="2015-09-16" Duration="P1D" /> <Comments> <Comment CreateDateTime="2015-09-08T15:11:34+02:00" LastModifyDateTime="2015-09-08T15:11:34+02:00" Language="en"> <Text>Comment</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher" GuaranteeCode="00L55eede86e3d46"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="1115"> <CardHolderName>Yaaa</CardHolderName> <CardNumber Mask="xxxxxxxxxxxx4242"/> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="100.00" /> <HotelReservationIDs> <HotelReservationID ResID_Date="2015-09-08T15:11:35+02:00" ResID_Source="1" ResID_SourceContext="YOURCONTEXT" ResID_Type="14" ResID_Value="YOURRESERVATIONID" /> <HotelReservationID ResID_Date="2015-09-08T15:11:36+02:00" ResID_SourceContext="WHITELABELNAME" ResID_Type="34" ResID_Value="00L55eede856d274" /> </HotelReservationIDs> <Profiles> <ProfileInfo> <UniqueID ID="00T559f89b8b4371" ID_Context="Internal" Type="1" /> <Profile StatusCode="4" CreateDateTime="2015-07-10T11:00:40+02:00" LastModifyDateTime="2015-09-08T15:11:36+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>CUSTOMER GIVENNAME</GivenName> <Surname>CUSTOMER SURNAME</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">CUSTOMER EMAIL ADDRESS </Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>CUSTOMER ADDRESS</AddressLine> <CityName>CUSTOMER CITY</CityName> <PostalCode>CUSTOMER POSTAL CODE</PostalCode> <CountryName>CUSTOMER COUNTRY</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="HOTELCODE" HotelName="HOTELNAME" CurrencyCode="CHF" /> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRS>
Hotel reservation response details
The OTA_HotelResRS response message contains the same elements than the OTA_HotelResRQ payload sent to perform the reservation.
The only two differences in the content are that:
- the credit card number used to guarantee the reservation is not sent completly but masked instead. See the Mask attribute of the CardNumber element inside the PaymentCard one.
- every new reservation gets a unique ID in the CRS and this ID is sent back in the response in this form:
<HotelReservationID ResID_Date="2015-09-08T15:11:36+02:00" ResID_SourceContext="WHITELABELNAME" ResID_Type="34" ResID_Value="RESERVATION_ID" />
In the example above the reservation ID is RESERVATION_ID. This ID will be used in case of cancellation of the reservation (see Hotel reservation cancellation) and thus must be stored by the calling system.
Use cases
Use case #1: a simple reservation (1 guest in 1 room for 1 night - the guest is the customer)
Request
<?xml version="1.0" encoding="utf-8"?> <OTA_HotelResRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" EchoToken="386924f6b8464e77bc0cbdace28e4c80" TimeStamp="2015-10-02T11:06:15.887669+02:00" Target="Test" Version="1.0" TransactionIdentifier="b2dde64605f34eeab8bcd8d536d780b9" PrimaryLangID="en" AltLangID="en" ResStatus="Book" xmlns="http://www.opentravel.org/OTA/2003/05"> <POS> <Source> <RequestorID Type="13" ID="EDITED" MessagePassword="EDITED" /> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <HotelReservations> <HotelReservation> <POS> <Source> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" /> </RoomTypes> <RoomRates> <RoomRate NumberOfUnits="1" RatePlanID="00L550c51037f1ed" RoomID="00L550c51027ae2c"> <Rates> <Rate EffectiveDate="2015-10-09" ExpireDate="2015-10-09"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> </Rates> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-10-09" End="2015-10-10" /> <CancelPenalties> <CancelPenalty PolicyCode="CAP" NonRefundable="false" NoCancelInd="false"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00" /> <AmountPercent CurrencyCode="CHF" Amount="11.90" /> <PenaltyDescription Name="Calculated policy" Language="en"> <Text /> </PenaltyDescription> </CancelPenalty> </CancelPenalties> <Total AmountAfterTax="70" CurrencyCode="CHF" /> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Adrien</GivenName> <Surname>Solo</Surname> </PersonName> <Email>adrien.solo@free.fr</Email> <Address> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-10-09" End="2015-10-10" /> <Comments> <Comment> <Text>I would like a top floor room please.</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="0916"> <CardHolderName>Adrien Solo</CardHolderName> <CardNumber> <PlainText>4139746542599</PlainText> </CardNumber> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AmountAfterTax="70" CurrencyCode="CHF" /> <HotelReservationIDs> <HotelReservationID ResID_Type="14" ResID_Value="BKBD-764322" ResID_Source="1" ResID_SourceContext="BookBedder" /> </HotelReservationIDs> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Adrien</GivenName> <Surname>Solo</Surname> </PersonName> <Email>adrien.solo@free.fr</Email> <Address> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRQ>
Response
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelResRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="386924f6b8464e77bc0cbdace28e4c80" TimeStamp="2015-10-02T11:51:20+02:00" Target="Test" Version="1.0" TransactionIdentifier="b2dde64605f34eeab8bcd8d536d780b9" PrimaryLangID="en" AltLangID="en" CorrelationID="002560e5395507d3"> <Success></Success> <HotelReservations> <HotelReservation ResStatus="Book" ForcedSellIndicator="0" OriginalDeliveryMethodCode="11" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-10-02T11:42:51+02:00" LastModifyDateTime="2015-10-02T11:51:17+02:00"> <POS> <Source> <RequestorID ID="0" Type="22"/> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" IsRoom="1"> <RoomDescription Name="Double"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-10-09" ExpireDate="2015-10-10" RatePlanID="00L550c51037f1ed"> <Rates> <Rate EffectiveDate="2015-10-09" ExpireDate="2015-10-10"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> </Rates> <RoomRateDescription> <Text>Hot Deal</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-10-09" End="2015-10-10" Duration="P1D"/> <CancelPenalties> <CancelPenalty PolicyCode="CAP" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00"/> <AmountPercent FeesInclusive="1" Amount="11.90" CurrencyCode="CHF"/> <PenaltyDescription Name="Calculated policy"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <UniqueID ID="00T55d42c45ed227" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-08-19T09:12:05+02:00" LastModifyDateTime="2015-10-02T11:51:19+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Adrien</GivenName> <Surname>Solo</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">adrien.solo@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-10-09" End="2015-10-10" Duration="P1D"/> <Comments> <Comment CreateDateTime="2015-10-02T11:51:17+02:00" LastModifyDateTime="2015-10-02T11:51:17+02:00" Language="en"> <Text>I would like a top floor room please.</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher" GuaranteeCode="00L560e5395f2a20"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="0916"> <CardHolderName>Adrien Solo</CardHolderName> <CardNumber Mask="xxxxxxxxx2599"/> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <HotelReservationIDs> <HotelReservationID ResID_Date="2015-10-02T11:42:53+02:00" ResID_Source="1" ResID_SourceContext="BookBedder" ResID_Type="14" ResID_Value="BKBD-764322"/> <HotelReservationID ResID_Date="2015-10-02T11:42:53+02:00" ResID_SourceContext="BookBedder" ResID_Type="34" ResID_Value="00L560e519ba6f5f"/> </HotelReservationIDs> <Profiles> <ProfileInfo> <UniqueID ID="00T55d42c45ed227" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-08-19T09:12:05+02:00" LastModifyDateTime="2015-10-02T11:51:19+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Adrien</GivenName> <Surname>Solo</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">adrien.solo@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRS>
Use case #2: a reservation for 2 guests in 1 room for 4 nights - one of the guests is the customer
Request
<?xml version="1.0" encoding="utf-8"?> <OTA_HotelResRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" EchoToken="1387ee8eb0ae46c0b751edfb688857ed" TimeStamp="2015-10-02T12:14:45.9941946+02:00" Target="Test" Version="1.0" TransactionIdentifier="494933afcff44df89891f3aaa10313b1" PrimaryLangID="en" AltLangID="en" ResStatus="Book" xmlns="http://www.opentravel.org/OTA/2003/05"> <POS> <Source> <RequestorID Type="13" ID="EDITED" MessagePassword="EDITED" /> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <HotelReservations> <HotelReservation> <POS> <Source> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" /> </RoomTypes> <RoomRates> <RoomRate NumberOfUnits="1" RatePlanID="00L550c51037f1ed" RoomID="00L550c51027ae2c"> <Rates> <Rate EffectiveDate="2015-10-12" ExpireDate="2015-10-12"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> <Rate EffectiveDate="2015-10-13" ExpireDate="2015-10-13"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> <Rate EffectiveDate="2015-10-14" ExpireDate="2015-10-14"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> <Rate EffectiveDate="2015-10-15" ExpireDate="2015-10-15"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> </Rates> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-16" /> <CancelPenalties> <CancelPenalty PolicyCode="CAP" NonRefundable="false" NoCancelInd="false"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00" /> <AmountPercent CurrencyCode="CHF" Amount="11.90" /> <PenaltyDescription Name="Calculated policy" Language="en"> <Text /> </PenaltyDescription> </CancelPenalty> </CancelPenalties> <Total AmountAfterTax="280" CurrencyCode="CHF" /> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> <ResGuestRPHs>1 2</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Paul</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email>paul.bismuth@free.fr</Email> <Address> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> <ResGuest ResGuestRPH="2"> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Martine</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email>martine.bismuth@free.fr</Email> <Address> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="2" /> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-16" /> <Comments> <Comment> <Text>Please note that we will arrive late</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="0916"> <CardHolderName>Paul Bismuth</CardHolderName> <CardNumber> <PlainText>4232746242529</PlainText> </CardNumber> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AmountAfterTax="280" CurrencyCode="CHF" /> <HotelReservationIDs> <HotelReservationID ResID_Type="14" ResID_Value="BKBD-727682" ResID_Source="1" ResID_SourceContext="BookBedder" /> </HotelReservationIDs> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Paul</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email>paul.bismuth@free.fr</Email> <Address> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRQ>
Reponse
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelResRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="1387ee8eb0ae46c0b751edfb688857ed" TimeStamp="2015-10-02T13:55:16+02:00" Target="Test" Version="1.0" TransactionIdentifier="494933afcff44df89891f3aaa10313b1" PrimaryLangID="en" AltLangID="en" CorrelationID="002560e70a0e8152"> <Success></Success> <HotelReservations> <HotelReservation ResStatus="Book" ForcedSellIndicator="0" OriginalDeliveryMethodCode="11" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-10-02T13:55:13+02:00" LastModifyDateTime="2015-10-02T13:55:14+02:00"> <POS> <Source> <RequestorID ID="0" Type="22"/> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" IsRoom="1"> <RoomDescription Name="Double"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-10-15" ExpireDate="2015-10-16" RatePlanID="00L550c51037f1ed"> <Rates> <Rate EffectiveDate="2015-10-12" ExpireDate="2015-10-12"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> <Rate EffectiveDate="2015-10-13" ExpireDate="2015-10-13"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> <Rate EffectiveDate="2015-10-14" ExpireDate="2015-10-14"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> <Rate EffectiveDate="2015-10-15" ExpireDate="2015-10-15"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> </Rates> <RoomRateDescription> <Text>Hot Deal</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-16" Duration="P4D"/> <CancelPenalties> <CancelPenalty PolicyCode="CAP" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00"/> <AmountPercent FeesInclusive="1" Amount="11.90" CurrencyCode="CHF"/> <PenaltyDescription Name="Calculated policy"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="280.00"/> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> <ResGuestRPHs>1 2</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="2"> <Profiles> <ProfileInfo> <UniqueID ID="00T558ad59d019cf" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-06-24T18:06:53+02:00" LastModifyDateTime="2015-10-02T13:55:15+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Martine</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">martine.bismuth@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <UniqueID ID="00T558ad59d019cf" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-06-24T18:06:53+02:00" LastModifyDateTime="2015-10-02T13:55:15+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Paul</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">paul.bismuth@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="2"/> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-16" Duration="P4D"/> <Comments> <Comment CreateDateTime="2015-10-02T13:55:14+02:00" LastModifyDateTime="2015-10-02T13:55:14+02:00" Language="en"> <Text>Please note that we will arrive late</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher" GuaranteeCode="00L560e70a215d29"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="0916"> <CardHolderName>Paul Bismuth</CardHolderName> <CardNumber Mask="xxxxxxxxx2529"/> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="280.00"/> <HotelReservationIDs> <HotelReservationID ResID_Date="2015-10-02T13:55:15+02:00" ResID_Source="1" ResID_SourceContext="BookBedder" ResID_Type="14" ResID_Value="BKBD-727682"/> <HotelReservationID ResID_Date="2015-10-02T13:55:15+02:00" ResID_SourceContext="BookBedder" ResID_Type="34" ResID_Value="00L560e70a1072be"/> </HotelReservationIDs> <Profiles> <ProfileInfo> <UniqueID ID="00T558ad59d019cf" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-06-24T18:06:53+02:00" LastModifyDateTime="2015-10-02T13:55:15+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Paul</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">paul.bismuth@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRS>
Use case #3: a reservation for 2 guests in 2 rooms for 2 nights - the customer is a third person
Request
<?xml version="1.0" encoding="utf-8"?> <OTA_HotelResRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" EchoToken="1387ee8eb0ae46c0b751edfb688857ed" TimeStamp="2015-10-02T12:14:45.9941946+02:00" Target="Test" Version="1.0" TransactionIdentifier="494933afcff44df89891f3aaa10313b1" PrimaryLangID="en" AltLangID="en" ResStatus="Book" xmlns="http://www.opentravel.org/OTA/2003/05"> <POS> <Source> <RequestorID Type="13" ID="EDITED" MessagePassword="EDITED" /> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <HotelReservations> <HotelReservation> <POS> <Source> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" /> </RoomTypes> <RoomRates> <RoomRate NumberOfUnits="1" RatePlanID="00L550c51037f1ed" RoomID="00L550c51027ae2c"> <Rates> <Rate EffectiveDate="2015-10-12" ExpireDate="2015-10-12"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> <Rate EffectiveDate="2015-10-13" ExpireDate="2015-10-13"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> </Rates> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-14" /> <CancelPenalties> <CancelPenalty PolicyCode="CAP" NonRefundable="false" NoCancelInd="false"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00" /> <AmountPercent CurrencyCode="CHF" Amount="11.90" /> <PenaltyDescription Name="Calculated policy" Language="en"> <Text /> </PenaltyDescription> </CancelPenalty> </CancelPenalties> <Total AmountAfterTax="140" CurrencyCode="CHF" /> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> <RoomStay IndexNumber="2"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" /> </RoomTypes> <RoomRates> <RoomRate NumberOfUnits="1" RatePlanID="00L550c51037f1ed" RoomID="00L550c51027ae2c"> <Rates> <Rate EffectiveDate="2015-10-12" ExpireDate="2015-10-12"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> <Rate EffectiveDate="2015-10-13" ExpireDate="2015-10-13"> <Base AmountAfterTax="70" CurrencyCode="CHF" /> </Rate> </Rates> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1" /> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-14" /> <CancelPenalties> <CancelPenalty PolicyCode="CAP" NonRefundable="false" NoCancelInd="false"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00" /> <AmountPercent CurrencyCode="CHF" Amount="11.90" /> <PenaltyDescription Name="Calculated policy" Language="en"> <Text /> </PenaltyDescription> </CancelPenalty> </CancelPenalties> <Total AmountAfterTax="140" CurrencyCode="CHF" /> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> <ResGuestRPHs>2</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Paul</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email>paul.bismuth@free.fr</Email> <Address> <AddressLine>40, rue de la Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75003</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> <ResGuest ResGuestRPH="2"> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Pierre</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email>pierre.bismuth@free.fr</Email> <Address> <AddressLine>40, rue de l'Armée de l'Est</AddressLine> <CityName>Paris</CityName> <PostalCode>75012</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="2" /> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-14" /> <Comments> <Comment> <Text>Please note that we will arrive late</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="0916"> <CardHolderName>Claude G.</CardHolderName> <CardNumber> <PlainText>4539746542599</PlainText> </CardNumber> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AmountAfterTax="280" CurrencyCode="CHF" /> <HotelReservationIDs> <HotelReservationID ResID_Type="14" ResID_Value="BKBD-327488" ResID_Source="1" ResID_SourceContext="BookBedder" /> </HotelReservationIDs> <Profiles> <ProfileInfo> <Profile ProfileType="1"> <Customer> <PersonName> <GivenName>Claude</GivenName> <Surname>Géant</Surname> </PersonName> <Email>claudio@free.fr</Email> <Address> <AddressLine>22, rue de la Bonne Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75015</PostalCode> <StateProv /> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" /> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRQ>
Response
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelResRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="1387ee8eb0ae46c0b751edfb688857ed" TimeStamp="2015-10-02T13:38:23+02:00" Target="Test" Version="1.0" TransactionIdentifier="494933afcff44df89891f3aaa10313b1" PrimaryLangID="en" AltLangID="en" CorrelationID="002560e6cab6b5a3"> <Success></Success> <HotelReservations> <HotelReservation ResStatus="Book" ForcedSellIndicator="0" OriginalDeliveryMethodCode="11" RoomStayReservation="1" WalkInIndicator="0" CreateDateTime="2015-10-02T13:38:19+02:00" LastModifyDateTime="2015-10-02T13:38:20+02:00"> <POS> <Source> <RequestorID ID="0" Type="22"/> <BookingChannel Type="5"> <CompanyName>BookBedder.com</CompanyName> </BookingChannel> </Source> </POS> <RoomStays> <RoomStay IndexNumber="1" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" IsRoom="1"> <RoomDescription Name="Double"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-10-13" ExpireDate="2015-10-14" RatePlanID="00L550c51037f1ed"> <Rates> <Rate EffectiveDate="2015-10-12" ExpireDate="2015-10-12"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> <Rate EffectiveDate="2015-10-13" ExpireDate="2015-10-13"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> </Rates> <RoomRateDescription> <Text>Hot Deal</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-14" Duration="P2D"/> <CancelPenalties> <CancelPenalty PolicyCode="CAP" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00"/> <AmountPercent FeesInclusive="1" Amount="11.90" CurrencyCode="CHF"/> <PenaltyDescription Name="Calculated policy"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="140.00"/> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> <ResGuestRPHs>1</ResGuestRPHs> </RoomStay> <RoomStay IndexNumber="2" RoomStayStatus="Book"> <RoomTypes> <RoomType RoomID="00L550c51027ae2c" IsRoom="1"> <RoomDescription Name="Double"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate EffectiveDate="2015-10-13" ExpireDate="2015-10-14" RatePlanID="00L550c51037f1ed"> <Rates> <Rate EffectiveDate="2015-10-12" ExpireDate="2015-10-12"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> <Rate EffectiveDate="2015-10-13" ExpireDate="2015-10-13"> <Base CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="70.00"/> </Rate> </Rates> <RoomRateDescription> <Text>Hot Deal</Text> </RoomRateDescription> </RoomRate> </RoomRates> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="1"/> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-14" Duration="P2D"/> <CancelPenalties> <CancelPenalty PolicyCode="CAP" Fri="1" Mon="1" Sat="1" Sun="1" Thur="1" Tue="1" Weds="1"> <Deadline AbsoluteDeadline="2015-10-09T00:00:00+00:00"/> <AmountPercent FeesInclusive="1" Amount="11.90" CurrencyCode="CHF"/> <PenaltyDescription Name="Calculated policy"/> </CancelPenalty> </CancelPenalties> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="140.00"/> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> <ResGuestRPHs>2</ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="1"> <Profiles> <ProfileInfo> <UniqueID ID="00T558ad59d019cf" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-06-24T18:06:53+02:00" LastModifyDateTime="2015-10-02T13:38:20+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Pierre</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">pierre.bismuth@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de l'Armée de l'Est</AddressLine> <CityName>Paris</CityName> <PostalCode>75012</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> <ResGuest ResGuestRPH="2"> <Profiles> <ProfileInfo> <UniqueID ID="00T558ad59d019cf" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-06-24T18:06:53+02:00" LastModifyDateTime="2015-10-02T13:38:20+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Pierre</GivenName> <Surname>Bismuth</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">pierre.bismuth@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>40, rue de l'Armée de l'Est</AddressLine> <CityName>Paris</CityName> <PostalCode>75012</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <GuestCounts> <GuestCount AgeQualifyingCode="10" Count="2"/> </GuestCounts> <TimeSpan Start="2015-10-12" End="2015-10-14" Duration="P2D"/> <Comments> <Comment CreateDateTime="2015-10-02T13:38:20+02:00" LastModifyDateTime="2015-10-02T13:38:20+02:00" Language="en"> <Text>Please note that we will arrive late</Text> </Comment> </Comments> <Guarantee GuaranteeType="CC/DC/Voucher" GuaranteeCode="00L560e6cacbe317"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="VI" ExpireDate="0916"> <CardHolderName>Claude G.</CardHolderName> <CardNumber Mask="xxxxxxxxx2599"/> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total CurrencyCode="CHF" AmountBeforeTax="0.00" AmountAfterTax="280.00"/> <HotelReservationIDs> <HotelReservationID ResID_Date="2015-10-02T13:38:21+02:00" ResID_Source="1" ResID_SourceContext="BookBedder" ResID_Type="14" ResID_Value="BKBD-327488"/> <HotelReservationID ResID_Date="2015-10-02T13:38:21+02:00" ResID_SourceContext="BookBedder" ResID_Type="34" ResID_Value="00L560e6cab857ce"/> </HotelReservationIDs> <Profiles> <ProfileInfo> <UniqueID ID="00T560e5a2a2ec3e" ID_Context="Internal" Type="1"/> <Profile StatusCode="4" CreateDateTime="2015-10-02T12:19:22+02:00" LastModifyDateTime="2015-10-02T13:38:22+02:00" ProfileType="1" OptInStatus="Unknown"> <Customer MaritalStatus="Unknown" Gender="Unknown"> <PersonName> <GivenName>Claude</GivenName> <Surname>Géant</Surname> </PersonName> <Email EmailType="1" TextFormat="text/html" ShareMarketInd="Inherit" ShareSynchInd="Inherit">claudio@free.fr</Email> <Address UseType="2" ValidationStatus="NotChecked" ValidInd="1" ShareMarketInd="Inherit" ShareSynchInd="Inherit"> <AddressLine>22, rue de la Bonne Santé</AddressLine> <CityName>Paris</CityName> <PostalCode>75015</PostalCode> <CountryName>France</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> <BasicPropertyInfo HotelCode="00L550c50f9dc4b6" HotelName="Quantique boutique hotel" CurrencyCode="CHF"/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResRS>