Hotel reservation

Hotel reservation request

XSD File : OTA_HotelResRQ.xsd

Request
<?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.

ElementAttributeDescriptionRequiredRepetitive

TransactionIdentifierThis attribute is mandatory and must have the same value in both HotelAvailRQ and HotelResRQ requests for a given transactionyesno

ResStatus

The status of the reservation. The currently supported values are:

yesno
HotelReservations

yesno
HotelReservation

yesno
POS

yesno
Source
Provides information on the source of the reservation request

BookingChannel


The BookingChannel element contains information about the requesting booking channel.yesno

TypeThe 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)yesno
CompanyName
The selling company name (will be shown on the hotelier's extranet so that he knows from where the reservation is coming from)nono

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:

ElementAttributeDescriptionRequiredRepetitive
RoomStays
A collection of the booked room stays at the given hotelyesno

RoomStay


A room stay corresponds to a stay in a certain room

noyes

IndexNumberA unique number (e.g. segment number or index number) used to further identify a booked item within a list of booked items.nono
Services
Refer to Services reservation.


HotelCodeThe Hotel identification codeyesno
RoomTypes

yesno
RoomType

yesyes

RoomIDThe ID of the reserved guestroomyesno
RoomRates

yesno
RoomRate

yesyes

NumberOfUnitsThe number of booked roomrate (must be equal to 1 if specified)nono

RoomIDSpecifies which guest room is concerned by this reservationyesno

RatePlanIDSpecifies which rate plan is used for this roomyesno
Rates

yesno
Rate

Important notes:

  • The rates sent to perform a reservation must be the same that the ones received in the OTA_HotelAvailRS response.
  • Thus, one separate Rate element must be present for each day of the stay.
yesyes

EffectiveDateThe start date for the rateyesno

ExpireDateThe end date for the rateyesno
Base

yesno

AmountAfterTaxThe rate amount of the room without any discounts appliedyesno

CurrencyCodeThe rate currency codeyesno
Total

yesno

AmountAfterTaxThe rate amount of the room with discounts applied. If no discounts are available, provide the same rate amount as in the Base node.yesno

CurrencyCodeThe rate currency codeyesno
GuestCounts

yesno
GuestCount

yesyes

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'

yesno

CountThe number of guests in one AgeQualifyingCodeyesno
TimeSpan
The global timespan of this room stayyesno

Start The starting value of the time spanyesno

EndThe ending value of the time spanyesno
CancelPenalties

yesno
CancelPenalty

yesyes

NonRefundableIndicates that any prepayment for the reservation is non refundable, therefore a 100% penalty on the prepayment is applied, irrespective of deadline.yesno

NoCancelIndIf true, the reservation may not be cancelled once the cancellation deadline has expired.yesno

PolicyCodeIf multiple policies defined by the hotelier have been merged to create the given CancelPenalty, the PolicyCode will be set to HS4.yesno
PenaltyDescription
Text description of the Penalty in a given language.yesno

NameThe penalty policy nameyesno

LanguageLanguage identificationyesno
Text
The penalty policy descriptionnono
AmountPercent
Defines the penalty amountyesno

AmountThe penalty monetary amountyesno

CurrencyCodeAn ISO 4217 (3) alpha character code that specifies a monetary unityesno

DecimalPlacesThe ISO 4217 standard "minor unit" for the number of decimal places for a particular currencyyesno
Deadline
Cancellation deadlineyesno

AbsoluteDeadlineDefines the absolute deadlineyesno
Total
The total amount charged for the room stayyesno

AmountAfterTaxThe total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax)yesno

CurrencyCodeAn ISO 4217 (3) alpha character code that specifies a monetary unityesno

DecimalPlacesThe ISO 4217 standard "minor unit" for the number of decimal places for a particular currencyyesno
ResGuestRPHs
A collection of unsigned integers serving as reference placeholders, and used as an index identifying which guests occupy this roomyesno
BasicPropertyInfo
Information about the propertyyesno
Reference

yesno

TypeThe OTA Code table Unique ID Type (UIT) value 16 must be provided. Other values received in the HotelAvailRS messages can be ignoredyesno

IDRe-use the "integer - integer" value received in the HotelAvailRS message.yesno

ResGuests - information about the traveling guests

The information about the guests is specified like this:

ElementAttributeDescriptionRequiredRepetitive
ResGuests
A collection of ResGuest objects, identifying the guests associated with this reservationyesno
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.yesyes

ResGuestRPHThis 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.yesno
Profiles
A collection of Profile objectsyesno
ProfileInfo
A collection of Profilesyesyes
Profile
Root element for profile content.yesno

ProfileTypeCode to specify a profile such as Customer, Tour Operator, Corporation, etc. Refer to Profile Type (PRT)yesno
Customer
Contains basic data on the customer's identity, location, relationships, finances, memberships, etc.yesno

GenderThe customer gender. Accepted values: Male, Female, Unkwnownnono
PersonName
This provides name information for a personyesno
GivenName
Given name, first name or namesyesno
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

yesno
Email
Information on an email address for the customeryesno
Address
Detailed information on an address for the customeryesno

FormattedIndSpecifies if the associated data is formatted or not. When true, then it is formatted; when false, then not formattedyesno
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 occurrenceyesyes
CityName
City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address)yesno
PostalCode
Post Office Code numberyesno
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)yesno

ResGlobalInfo - Global information about the reservation

This section contains information about the whole reservation such as the credit card details and the customer name

ElementAttributeDescriptionRequiredRepetitive
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 methodsyesno
GuestCounts
A collection of Guest Counts associated to the whole Reservationyesno
GuestCount
A recurring element that identifies the number of guests and ages of the guestsyesyes

AgeQualifyingCodeA 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)yesno

CountThe number of guests in one AgeQualifyingCodeyesno
TimeSpan
The global timespan of the hotel stayyesno

Start The starting value of the time spanyesno

EndThe ending value of the time spanyesno
Comments
A collection of commentsnono
Comment
Comment detailsnono
Text
Text content of the commentnono
Guarantee
The guarantee information to hold a reservationconfigurable
by the hotel
no

GuaranteeTypeAn enumerated type defining the guarantee to be applied to this reservation. Refer to Guarantee Type (Guarantee_Type)yesno
GuaranteesAccepted
A collection of guaranteesyesno
GuaranteeAccepted
Guarantee detailyesno
PaymentCard
Details of a debit or credit card. Specific payment card information.yesno

CardCodeIssuer code. Refer to Payment Card Code type listyesno

ExpireDateSpecify the expiration dateyesno
CardHolderName
The details of the Card Holder's Name.This provides name information for a personyesno
CardNumber
CreditCard's CardNumber elementyesno
PlainText
Plain text value of the CreditCard CardNumberyesno
Total
The total amount charged for the service including additional amounts and feesyesno

AmountAfterTaxThe total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax)yesno

CurrencyCodeAn ISO 4217 (3) alpha character code that specifies a monetary unityesno

DecimalPlacesThe ISO 4217 standard "minor unit" for the number of decimal places for a particular currencyyesno
HotelReservationIDs
A Collection of HotelReservationID objects for a given reservationyesno
HotelReservationID
The HotelReservationID object contains various unique (ReservationID) and non unique (ConfirmationID, CancellationID) identifiers that the trading partners associate with a given reservationyesyes

ResID_TypeDefines the type of Reservation ID (e.g. reservation number, cancellation number). Refer to Unique Id Type (UIT)yesno

ResID_ValueThis is the actual value associated with ResID_Type as generated by the system that is the source of the ResID_Typeyesno

ResID_SourceA unique identifier to indicate the source system which generated the ResID_Valueyesno

ResID_SourceContextAdditional information on Sourceyesno
Profiles
A collection of Profile objectsyesno
ProfileInfo
A collection of Profilesyesyes
Profile
Root element for profile content.yesno

ProfileTypeCode to specify a profile such as Customer, Tour Operator, Corporation, etc. Refer to Profile Type (PRT)yesno
Customer
Contains basic data on the customer's identity, location, relationships, finances, memberships, etc.yesno
PersonName
This provides name information for a personyesno
GivenName
Given name, first name or namesyesno
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

yesno
Email
Information on an email address for the customeryesno
Address
Detailed information on an address for the customeryesno

FormattedIndSpecifies if the associated data is formatted or not. When true, then it is formatted; when false, then not formattedyesno
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 occurrenceyesyes
CityName
City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address)yesno
PostalCode
Post Office Code numberyesno
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)yesno



Hotel reservation response

XSD File : OTA_HotelResRS.xsd

Response
<?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>