This message supports the functionality of updating other systems with reservation data. The message assumes a push model, with the originating system pushing the data to another system. The originating system would usually be a booking source.
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRQ PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0">
<POS>
<Source AgentDutyCode="OTA">
<RequestorID ID="APIKey" MessagePassword="APIKeyPassword"> </RequestorID>
</Source>
</POS>
<HotelReservations>
<HotelReservation ResStatus="Book" 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-14" />
<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-14" />
<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>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRQ>
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
HotelReservations | OTA_HotelResNotifRQ | 1 | ||
Hotelreservation | HotelReservations | 1..n | ||
@ResStatus | HotelReservation | Book |
1 | |
@CreateDateTime | HotelReservation | [yyyy-MM-ddTHH:mm:ss] | 1 | |
RoomStays | HotelReservation | 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 | 0..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 | Check in Date | [yyyy-MM-dd] | 1 |
@End | TimeSpan | Check out Date | [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 | |
Services | HotelReservation | Collection of services. A collection of Service objects. This is the collection of all services associated with any part of this reservation (the reservation in its entirety, one or more guests, or one or more room stays). Which services are attributable to which part is determined by each object's ServiceRPHs collection. | 1 | |
Service | Services | A Service object represents a non-room product provided to guests. Service products may have associated inventory and charges. | 0..n | |
@ServiceRPH | Service | A unique ID for a service that may be referenced elsewhere in the schema. | [integer] | 1 |
@ServiceInventoryCode | Service | The external code of the room the service applies to. | [integer] | 1 |
@ID | Service | A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation. | [integer] | 1 |
Price | Service | The selling price of this Service. | 1 | |
@NumberOfUnits | Price | The number of services. | [integer] | 1 |
Base | Price | The base amount charged for the service per unit of time. | 1 | |
@AmountAfterTax | Price | The total amount including all associated taxes. | [numeric] | 1 |
@DecimalPlaces | Price | The ISO 4217 standard "minor unit" for the number of decimal places for a particular currency. | [integer] | 0..1 |
ServiceDetails | Service | Details on the Service including Guest Counts, Time Span of this Service, pointers to Res Guests, guest Memberships, Comments and Special Requests pertaining to this particular Service and finally financial information related to the Service, including Guarantee, Deposit and Payment and Cancellation Penalties. | 1 | |
GuestCounts | ServiceDetails | A collection of Guest Counts associated to the whole Reservation or a particular Room Stay or Service. A child Guest Count element is required for each distinct age group. A collection of GuestCount by age group. | 1 | |
GuestCount | GuestCounts | A recurring element that identifies the number of guests and ages of the guests. | 1 | |
@Count | GuestCount | The number of guests in one AgeQualifyingCode or Count. | [integer] | 1 |
TimeSpan | ServiceDetails | The Time Span which covers the Service. | 1 | |
@Start | TimeSpan | The starting value of the time span. | [yyyy-MM-dd] | 1 |
@End | TimeSpan | The ending value of the time span. | [yyyy-MM-dd] | 1 |
ServiceDescription | ServiceDetails | Description of the service. An indication of a new paragraph for a sub-section of a formatted text message. | 1 | |
Text | ServiceDescription | Formatted text content. | [CDATA string] | 1 |
TPA_Extensions | Service | A placeholder in the schema to allow for additional elements and attributes to be included per Trading Partner Agreement (TPA). Allows extensions to be added to the OpenTravel specification per trading partner agreement. | 1 | |
ServiceExtension | TPA_Extensions | An extension to the service. | 1 | |
@ServiceChargeType | ServiceExtension | The way the service is charged. | Refer to Code List Service Charge Type | 1 |
SelectedDates | ServiceExtension | A collection of dates on which the service is active. | 1 | |
Date | SelectedDates | A date on which the service is active. | 0..n | |
@Value | Date | The date. | [yyyy-MM-dd] | 1 |
ResGuests | HotelReservation | 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 | HotelReservation | 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 message returns acknowledgement that the reservation has been successfully received, or includes warnings from business processing rules or errors if the request did not succeed. It may optionally include the updated reservation data.
Success:
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRS>
<Success />
<HotelReservations>
<HotelReservation>
<UniqueID Type="14" ID="your-unique-reference" />
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_Value="1160" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRS>
Error:
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRS>
<Errors>
<Error Code="11">
<Text>No ID was found for hotel with code 12345.</Text>
</Error>
</Errors>
</OTA_HotelResNotifRS>
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
Success | OTA_HotelResNotifRS | Only there if reservation was added successfully | 0..1 | |
Errors | OTA_HotelResNotifRS | Only if the reservation was not added | 0..1 | |
Error | Errors | 1..n | ||
@Code | Error | 1 | ||
Text | Error | |||
HotelReservations | OTA_HotelResNotifRS | 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 |