This is a request message for modifying a reservation. It is used for a full overlay of the reservation. When changing data that requires an availability check, this message assumes the availability is known (if availability is not known an availability check containing the reservation ID may be useful).
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResModifyNotifRQ PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0">
<POS>
<Source AgentDutyCode="OTA">
<RequestorID ID="APIKEY" MessagePassword="APIPASSWORD"/>
</Source>
</POS>
<HotelResModifies>
<HotelResModify ResStatus="Modify" CreateDateTime="2018-09-22T08:26:21" LastModifyDateTime="2018-09-22T08:27:06">
<RoomStays>
<RoomStay IndexNumber="401">
<RoomTypes>
<RoomType RoomTypeCode="23456" NumberOfUnits="1" />
</RoomTypes>
<RoomRates>
<RoomRate RatePlanCode="1">
<Rates>
<Rate EffectiveDate="2018-10-11">
<Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
</Rate>
<Rate EffectiveDate="2018-10-12">
<Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
</Rate>
<Rate EffectiveDate="2018-10-13">
<Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<RatePlans>
<RatePlan>
<MealsIncluded MealPlanCodes="12" />
<Commission>
<CommissionPayableAmount Amount="5355" DecimalPlaces="3" CurrencyCode="EUR"/>
</Commission>
</RatePlan>
</RatePlans>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2" isPerRoom="true" />
</GuestCounts>
<TimeSpan Start="2018-10-11" End="2018-10-13" />
<Comments>
<Comment>
<Text>
<![CDATA[Fictional comment]]>
</Text>
</Comment>
<Comment>
<Text>
<![CDATA[Another fictional comment]]>
</Text>
</Comment>
</Comments>
<SpecialRequests>
<SpecialRequest>
<Text>
<![CDATA[Smoking preference : Non-Smoking]]>
</Text>
</SpecialRequest>
</SpecialRequests>
<Total AmountAfterTax="28500" AmountBeforeTax="33000" CurrencyCode="EUR" DecimalPlaces="2" />
<ResGuestRPHs>
<ResGuestRPH RPH="1" />
</ResGuestRPHs>
</RoomStay>
<RoomStay IndexNumber="402">
<RoomTypes>
<RoomType RoomTypeCode="23457" NumberOfUnits="1" />
</RoomTypes>
<RoomRates>
<RoomRate RatePlanCode="1">
<Rates>
<Rate EffectiveDate="2018-10-11">
<Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
</Rate>
<Rate EffectiveDate="2018-10-12">
<Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
</Rate>
<Rate EffectiveDate="2018-10-13">
<Base AmountAfterTax="9500" AmountBeforeTax="9000" CurrencyCode="EUR" DecimalPlaces="2" />
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<RatePlans>
<RatePlan>
<MealsIncluded MealPlanCodes="12" />
<Commission>
<CommissionPayableAmount Amount="5355" DecimalPlaces="3" CurrencyCode="EUR"/>
</Commission>
</RatePlan>
</RatePlans>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2" isPerRoom="true" />
</GuestCounts>
<TimeSpan Start="2018-10-11" End="2018-10-13" />
<Comments>
<Comment>
<Text>
<![CDATA[Fictional comment]]>
</Text>
</Comment>
<Comment>
<Text>
<![CDATA[Another fictional comment ]]>
</Text>
</Comment>
</Comments>
<SpecialRequests>
<SpecialRequest>
<Text>
<![CDATA[Smoking preference : Non-Smoking]]>
</Text>
</SpecialRequest>
</SpecialRequests>
<Total AmountAfterTax="28500" AmountBeforeTax="33000" CurrencyCode="EUR" DecimalPlaces="2">
<Taxes>
<Tax Amount="2030" CurrencyCode="EUR" DecimalPlaces="2" />
</Taxes>
</Total>
<ResGuestRPHs>
<ResGuestRPH RPH="2" />
</ResGuestRPHs>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest ResGuestRPH="1">
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>
<![CDATA[John]]>
</GivenName>
<Surname>
<![CDATA[Smith]]>
</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>
<![CDATA[Jane]]>
</GivenName>
<Surname>
<![CDATA[Smith]]>
</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
<ResGuest ResGuestRPH="2">
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>
<![CDATA[John]]>
</GivenName>
<Surname>
<![CDATA[Doe]]>
</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>
<![CDATA[Jane]]>
</GivenName>
<Surname>
<![CDATA[Doe]]>
</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>
<![CDATA[Jake]]>
</GivenName>
<Surname>
<![CDATA[Doe]]>
</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<Customer Gender="Male" BirthDate="1955-08-01">
<PersonName>
<GivenName>
<![CDATA[John]]>
</GivenName>
<Surname>
<![CDATA[Doe]]>
</Surname>
</PersonName>
<Telephone PhoneNumber="+31307820590" />
<Email>j.doe@gmail.com</Email>
<Address>
<StreetNmbr>Orteliuslaan 19</StreetNmbr>
<CityName>Utrecht</CityName>
<PostalCode>3528 BA</PostalCode>
<CountryName>NL</CountryName>
<CompanyName>Smarthotel</CompanyName>
</Address>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
<Comments>
<Comment>
<Text>
<![CDATA[Comment that will be displayed on the reservation.]]>
</Text>
</Comment>
</Comments>
<Guarantee>
<GuaranteesAccepted>
<GuaranteeAccepted>
<PaymentCard CardCode="VI" CardNumber="4444444444444444" SeriesCode="333" ExpireDate="0919" CurrentBalance="28500" DecimalPlaces="2" EffectiveDate="2018-10-11" VCCExpirationDate="2019-01-14">
<CardHolderName>John Smith</CardHolderName>
</PaymentCard>
</GuaranteeAccepted>
</GuaranteesAccepted>
</Guarantee>
<Total AmountAfterTax="28500" CurrencyCode="EUR" DecimalPlaces="2" />
<BasicPropertyInfo HotelCode="12345" />
<HotelReservationIDs>
<HotelReservationID ResID_Value="your-unique-reference" ResID_Type="14" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelResModify>
</HotelResModifies>
</OTA_HotelResModifyNotifRQ>
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
HotelResModifies | OTA_HotelResModifyNotifRQ | 1 | ||
HotelResModify | HotelResModifies | 1..n | ||
@ResStatus | HotelResModify | Modify |
1 | |
@CreateDateTime | HotelResModify | [yyyy-MM-ddTHH:mm:ss] | 1 | |
@LastModifyDateTime | HotelResModify | [yyyy-MM-ddTHH:mm:ss] | 1 | |
RoomStays | HotelResModify | 1 | ||
RoomStay | RoomStays | 1..n | ||
@IndexNumber | RoomStay | Please find the description on how to use the IndexNumber under this table | 1..65535 | 0..1 |
RoomTypes | RoomStays | 1 | ||
RoomType | RoomTypes | 1..n | ||
@RoomTypeCode | RoomType | 1 | ||
@NumberOfUnits | RoomType | 1..n | 1 | |
RoomRates | RoomStay | 1 | ||
RoomRate | RoomRates | 1..n | ||
@RatePlanCode | RoomRate | 1 | ||
Rates | RoomRate | 1 | ||
Rate | Rates | 1 | ||
@EffectiveDate | Rate | [yyyy-MM-dd] | 1 | |
Base | Rate | 1 | ||
@AmountAfterTax | Base | No decimal point: 120.50 becomes 12050 | 1 | |
@AmountBeforeTax | Base | No decimal point: 120.50 becomes 12050 | 1 | |
@CurrencyCode | Base | EUR , GBP , USD , ... |
Refer to ISO 4217 | 1 |
@DecimalPlaces | Base | 2 |
1 | |
RatePlans | RoomStay | 1 | ||
RatePlan | RatePlans | 0..1 | ||
MealsIncluded | MealsIncluded | 0..1 | ||
@MealPlanCodes | MealsIncluded | Refer to OpenTravel Code List Meal Plan Type (MPT) | 1 | |
Commission | RatePlan | 1 | ||
CommissionPayableAmount | Commission | 1 | ||
@Amount | CommissionPayableAmount | 1 | ||
@DecimalPlaces | CommissionPayableAmount | 1 | ||
@CurrencyCode | CommissionPayableAmount | 1 | ||
GuestCounts | RoomStay | 1 | ||
GuestCount | GuestCounts | 1..n | ||
@AgeQualifyingCode | GuestCount | Refer to OpenTravel Code List Age Qualifying Code (AQC) | 1 | |
@Count | GuestCount | 1..n | 1 | |
TimeSpan | RoomStay | 1 | ||
@Start | TimeSpan | [yyyy-MM-dd] | 1 | |
@End | TimeSpan | [yyyy-MM-dd] | 1 | |
Comments | RoomStay | 0..1 | ||
Comment | Comments | 1..n | ||
Text | Comment | Comment included as CDATA, to prevent invalid characters from breaking the XML. | 1 | |
SpecialRequests | RoomStay | 0..n | ||
SpecialRequest | SpecialRequests | 1..n | ||
Text | SpecialRequest | Request included as CDATA, to prevent invalid characters from breaking the XML. | 1 | |
Total | RoomStay | Total of the RoomStay | 1 | |
@AmountAfterTax | Total | No decimal point: 120.50 becomes 12050 | 1 | |
@AmountBeforeTax | Total | No decimal point: 120.50 becomes 12050 | 1 | |
@CurrencyCode | Total | EUR , GBP , USD , ... |
Refer to ISO 4217 | 1 |
@DecimalPlaces | Total | 2 |
1 | |
Taxes | Total | 0..1 | ||
Tax | Tax | 1 | ||
@Amount | Tax | No decimal point: 120.50 becomes 12050 | 1 | |
@DecimalPlaces | Tax | 2 |
1 | |
@CurrencyCode | Tax | EUR , GBP , USD , ... |
Refer to ISO 4217 | 1 |
ResGuestRPHs | RoomStay | Reference which ResGuest is in which RoomStay | 1 | |
@RPH | ResGuestRPH | The reference number of the guest. Must stay consistent with the RPH values defined in ResGuest. | 1 | |
ResGuests | HotelResModify | 1 | ||
ResGuest | Resguests | 1..n | ||
@ResguestRPH | ResGuest | 1 | ||
Profiles | ResGuest | 1 | ||
ProfileInfo | Profiles | 1..n | ||
Profile | ProfileInfo | 1 | ||
Customer | Profile | 1 | ||
PersonName | Customer | 1 | ||
GivenName | PersonName | GivenName included as CDATA, to prevent invalid characters from breaking the XML. | 1 | |
SurName | PersonName | Surname included as CDATA, to prevent invalid characters from breaking the XML. | 1 | |
ResGlobalInfo | HotelResModify | 1 | ||
Profiles | ResGlobalInfo | Contains the data of the booker | 1 | |
Profile | Profiles | 1..n | ||
@ProfileType | Profile | Refer to OpenTravel Code List Profile Types (PRT) | 1 | |
Customer | Profile | 1 | ||
@Gender | Customer | Male Female |
0..1 | |
@BirthDate | Customer | [yyyy-MM-dd] | 0..1 | |
PersonName | Customer | 0..1 | ||
GivenName | PersonName | GivenName included as CDATA, to prevent invalid characters from breaking the XML. | 1 | |
SurName | PersonName | SurName included as CDATA, to prevent invalid characters from breaking the XML. | 1 | |
Telephone | Customer | 0..1 | ||
@PhoneNumber | Telephone | 1 | ||
Customer | 0..1 | |||
Address | Customer | 0..1 | ||
StreetNmbr | Address | 1 | ||
CityName | Address | 1 | ||
PostalCode | Address | 1 | ||
CountryName | Address | The code of a country (e.g. NL ). |
Refer to ISO 3166-1 alpha-2 | 1 |
CompanyName | Address | 0..1 | ||
Comments | ResGlobalInfo | 1 | ||
Comment | Comments | Comment included as CDATA, to prevent invalid characters from breaking the XML. | 1..n | |
Text | Comment | 1 | ||
Guarantee | ResGlobalInfo | Credit card details related to the reservation | 0..1 | |
GuaranteesAccepted | Guarantee | 1 | ||
PaymentCard | GuaranteesAccepted | 1 | ||
@CardCode | PaymentCard | VI , MC , ... |
Refer to Code List Card Code | 1 |
@CardNumber | PaymentCard | 1 | ||
@ExpireDate | PaymentCard | [MMyy] | 1 | |
@CurrentBalance | PaymentCard | Virtual credit card amount. No decimal point: 120.50 becomes 12050. | 0..1 | |
@DecimalPlaces | PaymentCard | Virtual credit card decimal places for CurrentBalance. | 0..1 | |
@EffectiveDate | PaymentCard | The date the virtual credit card can be charged. | [yyyy-MM-dd] | 0..1 |
@VCCExpirationDate | PaymentCard | The date until when the virtual credit card can be charged. | [yyyy-MM-dd] | 0..1 |
CardHolderName | PaymentCard | The credit card holder name | [string] | 1 |
Total | ResGlobalInfo | Reservation total | 1 | |
@AmountAfterTax | Total | No decimal point: 120.50 becomes 12050 | 1 | |
@AmountBeforeTax | Total | No decimal point: 120.50 becomes 12050 | 1 | |
@CurrencyCode | Total | EUR , GBP , USD , ... |
Refer to ISO 4217 | 1 |
@DecimalPlaces | Total | 2 |
1 | |
BasicPropertyInfo | ResGlobalInfo | 1 | ||
@HotelCode | BasicPropertyInfo | The hotel code that identifies this hotel (PIN code). | 1 | |
HotelreservationIDs | ResGlobalInfo | 1 | ||
HotelReservationID | HotelReservationIDs | 1 | ||
ResID_Value | HotelReservationID | The reservation number supplied by the OTA. The same reservation number must be used for the lifespan of the reservation through all its possible mutations (modifications and cancellation). | 1 | |
ResID_Type | HotelReservationID | 14 |
1 |
Explanation on how to use IndexNumber, as these numbers always need to be unique throughout the booking process, to modify and cancel per RoomStay.
Example:
This is the response message for a full overlay modification to a reservation. The response could be as simple as indicating the modification was made or as complex as echoing back all reservation information.
Success:
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResModifyNotifRS>
<Success />
<HotelReservations>
<HotelReservation>
<UniqueID Type="14" ID="your-unique-reference" />
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_Value="1160" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResmodifyNotifRS>
Error:
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResModifyNotifRS>
<Errors>
<Error Code="11">
<Text>No ID was found for hotel with code 12345.</Text>
</Error>
</Errors>
</OTA_HotelResModifyNotifRS>
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
Success | OTA_HotelResModifyNotifRS | Only there if reservation was added successfully | 0..1 | |
Errors | OTA_HotelResModifyNotifRS | Only if the reservation was not added | 0..1 | |
Error | Errors | 1..n | ||
@Code | Error | 1 | ||
Text | Error | |||
HotelReservations | OTA_HotelResModifyNotifRS | 0..1 | ||
HotelReservation | HotelReservations | 1..n | ||
UniqueID | HotelReservation | 1 | ||
@Type | UniqueID | 14 |
1 | |
@ID | UniqueID | Reservation number supplied by the OTA | 1 | |
ResGlobalInfo | HotelReservation | 1 | ||
HotelReservationIDs | ResGlobalInfo | 1 | ||
HotelReservationID | HotelReservationIDs | 1..n | ||
@ResID_Type | HotelReservationID | 14 |
1 | |
@ResID_Value | HotelReservationID | Reservation ID from the Channel manager | 1 |