Hotel information (mapping).
In order to map the rooms and rates between the OTA and Smarthotel Channel manager, Smarthotel will send two requests:
- 1. The OTA_HotelDescriptiveInfoRQ
- 2. The OTA_HotelRatePlanRQ
With the OTA_HotelDescriptiveInfo Smarthotel retrieves the room types setup and services with the OTA. Both will be requested through a separate request. One for Rooms and one for services. For Rooms an attribute [SendGuestRooms=“True”] will be sent. For Services we will send an attribute [SendData=”True”]
The second request, the OTA_HotelRatePlanRQ retrieves the rate codes setup at the OTA together with the sellable products in order to understand which rate codes are connected to which room types.
We expect the OTA to respond with the correct Response in order to complete the mapping between the two systems.
OTA_HotelDescriptiveInfoRQ/RS.
Rooms:
OTA_HotelDescriptiveInfoRQ
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
HotelDescriptiveInfos | OTA_HotelDescriptiveInfoRQ | Collection of items for data from multiple hotels. | 1 | |
HotelDescriptiveInfo | HotelDescriptiveInfos | This allows the requestor to indicate which specific information is requested if complete hotel details are not required. | 1 | |
@HotelCode | HotelDescriptiveInfo | The ID of the hotel. | [integer] | 1 |
AffiliationInfo | HotelDescriptiveInfo | Is used to the indicate the specific affiliation information being requested. | 0..1 | |
@SendAwards | AffiliationInfo | Send this data. "True" means send the data. | True False | 0..1 |
ContactInfo | HotelDescriptiveInfo | Is used to the indicate whether contact information is being requested. | 0..1 | |
@SendData | ContactInfo | Send this data. "True" means send the data. | True False | 0..1 |
FacilityInfo | HotelDescriptiveInfo | Is used to the indicate the specific facility information being requested. | 0..1 | |
@SendGuestRooms | FacilityInfo | Send this data. "True" means send the data. | True False | 0..1 |
HotelInfo | HotelDescriptiveInfo | Is used to indicate whether hotel information is being requested. | 0..1 | |
@SendData | HotelInfo | Send this data. "True" means send the data. | True False | 0..1 |
MultimediaObjects | HotelDescriptiveInfo | Is used to the indicate whether multimedia information is being requested. | 0..1 | |
@SendData | MultimediaObjects | Send this data. "True" means send the data. | True False | 0..1 |
The following request will be sent to the OTA by Smarthotel to retrieve room information:
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelDescriptiveInfoRQ PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <POS> <Source> <RequestorID ID="APIKEY" MessagePassword="APIPASSWORD"/> </Source> </POS> <HotelDescriptiveInfos> <HotelDescriptiveInfo HotelCode="21052"> <FacilityInfo SendGuestRooms="True" /> </HotelDescriptiveInfo> </HotelDescriptiveInfos> </OTA_HotelDescriptiveInfoRQ>
OTA_HotelDescriptiveInfoRS
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
HotelDescriptiveContents | OTA_HotelDescriptiveInfoRS | A collection of hotel descriptive information. | 1 | |
HotelDescriptiveContent | HotelDescriptiveContents | Hotel descriptive information. | 0..n | |
FacilityInfo | HotelDescriptiveContent | Provides information pertaining to the hotel facility itself. The FacilityInfo class that describes the facilities provided at the hotel, including rooms. | 0..1 | |
GuestRooms | FacilityInfo | Collection of guest room types that are comprised within the hotel. | 0..1 | |
GuestRoom | GuestRooms | The accommodation occupied by a guest. | 0..n | |
Code | GuestRoom | The ID of the room. | [integer] | 1 |
TypeRoom | GuestRoom | Describes the guest room type; in composite types there can be multiple occurrences. | 1 | |
@Name | TypeRoom | Text name of the type of room such as "Two Bedroom Villas". | [string] | 1 |
HotelServices | HotelInfo | A collection of services. | 0..1 | |
Service | HotelServices | A Service object represents a non-room product provided to guests. | 1..n | |
@ID | Service | A unique identifying value assigned by the creating system. | [integer] | 1 |
@ServiceInventoryCode | Service | The code of the service. | [string] | 1 |
@ServiceStatusCode | Service | The status of the service. | Active | 1 |
Inactive | ||||
@ServiceCategoryCode | Service | The representation of the specific service category for this specific service. | None Standard ExtraBed ExtraBabyCot Extrainfant ExtraChild BreakfastAndDinner Dinner3Course Dinner4Course Breakfast TouristTax ReservationCharge ExtraNight3 ExtraNight4 | 1 |
@ServicePricingType | Service | An enumerated type that defines how a service is priced. | None PerStay PerNight PerAdultPerStay PerAdultPerNight SelectedDates SelectedDatesPerAdult PercentagePerStay PercentagePerStayPerChild PerPiece PerPiecePerNight PerPiecePerAdult PerPiecePerAdultPerNight SelectedDatesPerChild PercentagePerStayPerAdult PerChildPerStay PerChildPerNight | 1 |
@Inclusive | Service | Whether the price for this service is included. | True, False | 1 |
@Sort | Service | Used to define the display order. | [integer] | 1 |
ServiceDetails | Service | Details on the Service. | 1 | |
ServiceNames | ServiceDetails | A collection of ServiceName. | 0..1 | |
ServiceName | ServiceNames | Name of the service. | 1..n | |
@Language | ServiceName | The ID of the language. | Refer to Languages code list | 1 |
Text | ServiceName | Formatted text content. Provides text and indicates whether it is formatted or not. | [string] | 1 |
ServiceDescriptions | ServiceDetails | A collection of ServiceDescription. | 0..1 | |
ServiceDescription | ServiceDescriptions | Description of the service. | 1..n | |
@ Language | ServiceDescription | The ID of the language. | Refer to Languages code list | 1 |
Text | ServiceDescription | Formatted text content. Provides text and indicates whether it is formatted or not. | [string] | 1 |
MultimediaDescriptions | ServiceDetails | Multimedia information about a collection of multimedia objects. Contains multimedia item(s). | 0..1 | |
MultimediaDescription | MultimediaDescriptions | A multimedia item. Describes multimedia item(s). | 0..1 | |
ImageItems | MultimediaDescription | A collection of image items. Collection of image items. | 1 | |
ImageItem | ImageItems | Image of a given category. | 1..n | |
ImageFormat | ImageItem | A set of images for a given category which may be provided in multiple formats. | 1 | |
URL | ImageFormat | URL of the multimedia item for a specific format. | [string] | 1 |
The response Smarthotel expects should include the IDs and names of the available rooms. The response should look like this:
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelDescriptiveInfoRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <HotelDescriptiveContents> <HotelDescriptiveContent> <FacilityInfo> <GuestRooms> <GuestRoom Code="1"> <TypeRoom Name="Standard Room"/> </GuestRoom> <GuestRoom Code="2"> <TypeRoom Name="Comfort Room"/> </GuestRoom> <GuestRoom Code="3"> <TypeRoom Name="Executive Room"/> </GuestRoom> </GuestRooms> </FacilityInfo> </HotelDescriptiveContent> </HotelDescriptiveContents> </OTA_HotelDescriptiveInfoRS>
The response Smarthotel expects should include the IDs and description of the available services. The response should look like this:
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelDescriptiveInfoRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <HotelDescriptiveContents> <HotelDescriptiveContent> <TPA_Extensions> <HotelInfo> <HotelServices> <Service ID="212384"> <ServiceDetails> <ServiceDescription> <Text>Champagne</Text> </ServiceDescription> </ServiceDetails> </Service> </HotelServices> </HotelInfo> </TPA_Extensions> </HotelDescriptiveContent> </HotelDescriptiveContents> </OTA_HotelDescriptiveInfoRS>
OTA_HotelRatePlanRQ/RS.
OTA_HotelRatePlanRQ:
The following request will be sent by Smarthotel to retrieve rate information:
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
RatePlans | OTA_HotelRatePlanRQ | Collection of rate plans. | 1 | |
RatePlan | RatePlans | Provides the criteria to identify the rate plan to be returned. | 1..n | |
HotelRef | RatePlan | Indicates the detail of hotel reference information. | 1 | |
@HotelCode | HotelRef | The ID of the hotel | [integer] | 1 |
DestinationSystemsCode | RatePlan | A collection of destination system codes. These are systems for which this rate plan is targeted. A collection of DestinationSystemCode. | 0..1 | |
DestinationSystemsCode | DestinationSystemsCode | The ID of the channel | [integer] | 1 |
RatePlanCandidates | RatePlan | Collection of requested rateplans | 0..1 | |
RatePlanCandidate | RatePlanCandidates | Element used to identify available products and rates. | 1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelRatePlanRQ EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <POS> <Source> <RequestorID ID="APIKEY" MessagePassword="APIPASSWORD"/> </Source> </POS> <RatePlans> <RatePlan> <HotelRef HotelCode="21052" /> </RatePlan> </RatePlans> </OTA_HotelRatePlanRQ>
OTA_HotelRatePlanRS:
The response should include the rate codes and names, and the rooms that are connected to them.
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
RatePlans | OTA_HotelRatePlanRS | A collection of rate plans. | 1 | |
RatePlan | RatePlans | An individual rate plan. All details pertaining to a specific rate plan. | 0..n | |
@RatePlanCode | RatePlan | The ID of the rate. | [integer] | 1 |
@DestinationSystemsCode | RatePlan | The ID of the channel. | [integer] | 1 |
HotelRef | RatePlan | Indicates the detail of hotel reference information. | 1 | |
@HotelCode | HotelRef | The ID of the hotel. | [integer] | 1 |
Description | RatePlan | Description of the RatePlan. An indication of a new paragraph for a sub-section of a formatted text message. | 1 | |
@Name | Description | Indicates the type of the description. | Name | 1 |
Text | Description | Formatted text content. | 1 | |
RatePlanLevelFee | RatePlan | A Fee that is attached directly to the RatePlan. Can be used to send a global surcharge at the RatePlan level. | 0..1 | |
Fee | RatePlanLevelFee | Fee Amount that is applied to the rate. Fees are used for non-tax amounts like service charges. | 1 | |
@MealPlanCode | Fee | This describes meal plans associated with a rate plan. | Refer to OpenTravel Code Table Meal Plan Type (MPT). | 1 |
BookingRules | RatePlan | A collection of booking rules. | 1 | |
BookingRule | BookingRules | The BookingRule element defines restrictions to rates and stays at the hotel for a given rate plan, room type or rate plan/room type combination. | 1 | |
@MaxAdvancedBookingOffset | BookingRule | Maximum days before the arrival date for which this rate plan may be booked. | [integer] | 0..1 |
RequiredPaymts | BookingRule | A collection of required payments that are part of the booking restriction. A collection of required payments. | 0..1 | |
GuaranteePayment | RequiredPaymts | Used to define the deposit policy, guarantees policy, and/or accepted forms of payment. | 1 | |
AmountPercent | GuaranteePayment | Payment expressed as a fixed amount, or a percentage of/or room nights. | 1 | |
@Percent | AmountPercent | The percentage used to calculate the amount. | [double] | 1 |
CancelPenalties | BookingRule | A collection of required payments that are part of the booking restriction. A collection of CancelPenalty. | 1 | |
@CancelPolicyIndicator | CancelPenalties | When true, indicates a cancel policy exists. When false, no cancel policy exists. Typically this indicator is used when details are not being sent. | True, False | 1 |
CancelPenalty | CancelPenalties | Defines the cancellation penalty of the hotel facility. The CancelPenalty class defines the cancellation policy of the hotel facility. | 1 | |
@NonRefundable | CancelPenalty | Indicates that any prepayment for the reservation is non-refundable, therefore a 100% penalty on the prepayment is applied, irrespective of deadline. | True, False | 1 |
@PolicyCode | CancelPenalty | The ID of the cancellation policy. | 0 = None, 1 = Non-cancellable 2 = Time pre-arrival day 3 = Time arrival day 4 = Days before arrival day 5 = UVH | 1 |
Deadline | CancelPenalty | Cancellation deadline, absolute or relative. | 0..1 | |
@AbsoluteDeadline | Deadline | Defines the absolute deadline. Either this or the offset attributes may be used. | [hh:mm:ss] | 0..1 |
@OffsetDropTime | Deadline | An enumerated type indicating when the deadline drop time goes into effect. | BeforeArrival | 0..1 |
@OffsetTimeUnit | Deadline | The units of time, e.g.: days, hours, etc., that apply to the deadline. | Days, Hours | 0..1 |
@OffsetUnitMultiplier | Deadline | The number of units of DeadlineTimeUnit. | [integer] | 0..1 |
PenaltyDescription | CancelPenalty | Text description of the Penalty in a given language. An indication of a new paragraph for a sub-section of a formatted text message. | 0..1 | |
Text | PenaltyDescription | Formatted text content. | [string] | 0..1 |
AmountPercent | CancelPenalty | Cancellation fee expressed as a fixed amount, or percentage of/or room nights. Defines the percentage basis for calculating the fee amount or the amount. | 0..1 | |
@ApplyAs | AmountPercent | Used to specify how the amount needs to be applied with respect to the stay. | FirstNightPayment | 0..1 |
@NmbrOfNights | AmountPercent | The number of nights of the hotel stay that are used to calculate the fee amount. | [integer] | 0..1 |
@Percent | AmountPercent | The percentage used to calculate the amount. | [double] | 0..1 |
@BasisType | AmountPercent | Provides the basis for how the amount of the guarantee is calculated. | FullStay, Nights | 1 |
SellableProducts | RatePlan | A collection of Sellable Products. The SellableProduct class defines the inventoried item for this rate plan. | 0..1 | |
SellableProduct | SellableProducts | The individual sellable product. A sellable product may be a guest room, a meeting room or an inventory block. Attributes of SellableProduct are the inventory codes, information on the use, application and sequencing of the inventory information. | 1..n | |
@InvTypeCode | SellableProduct | The ID of the room to link to as mentioned in the @Code attribute in the GuestRoom element in the OTA_HotelDescriptiveInfoRS | [integer] | 1 |
TPA_Extensions | OTA_HotelRatePlanRS | 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 | |
RatePlans | TPA_Extensions | A collection of rate plans. | 1 | |
RatePlan | RatePlans | An individual rate plan. All details pertaining to a specific rate plan. | 0..n | |
@RatePlanCode | RatePlan | The ID of the rate code | [integer] | 1 |
@RatePlanTypeCode | RatePlan | The code of the rate. | [string] | 1 |
@Sort | RatePlan | The sort index. | [integer] | 1 |
@IncludesTaxInd | RatePlan | Indicates whether tax is included (true/false). | True, False | 1 |
@RateType | RatePlan | The type of the rate: | BaseRate, Default, CalculatedRate, BestBarByDay, NoRnAUpdate | 1 |
@MasterRate | RatePlan | Indicates whether the rate is a master rate. | True, False | 1 |
@Default | RatePlan | The rate default. | [integer] | 1 |
@Threshold | RatePlan | The rate threshold. | [integer] | 1 |
@CorporateType | RatePlan | The corporate type. | NotApplicable, Corporate, FixedCorporate, TradeFair | 1 |
@BBARTrigger | RatePlan | The BBAR trigger. | None, OpenClose, CTA, FPLOS | 1 |
RatePlanGroups | TPA_Extensions | A collection of RatePlanGroup | 1 | |
RatePlanGroup | RatePlanGroups | A RatePlan | 0..n | |
@RatePlanCode | RatePlanGroup | The ID of the rate plan group. | [integer] | 1 |
@RatePlanTypeCode | RatePlanGroup | The code of the rate plan group. | [string] | 1 |
@Sort | RatePlanGroup | The sort index | [integer] | 1 |
Description | RatePlanGroup | Description of the rate plan group. | 1 | |
@Name | Description | Indicates the type of the description. | Name | 1 |
Text | Description | Formatted text content. | [string] | 1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelRatePlanRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <RatePlans> <RatePlan RatePlanCode="1"> <Description Name="Name"> <Text>Standard rate</Text> </Description> <SellableProducts> <SellableProduct InvTypeCode="1" /> <SellableProduct InvTypeCode="2" /> <SellableProduct InvTypeCode="3" /> </SellableProducts> </RatePlan> <RatePlan RatePlanCode="2"> <Description Name="Name"> <Text>Non refundable</Text> </Description> <SellableProducts> <SellableProduct InvTypeCode="1" /> <SellableProduct InvTypeCode="2" /> </SellableProducts> </RatePlan> <RatePlan RatePlanCode="3"> <Description Name="Name"> <Text>Breakfast included</Text> </Description> <SellableProducts> <SellableProduct InvTypeCode="3" /> </SellableProducts> </RatePlan> </RatePlans> </OTA_HotelRatePlanRS>
Rates & Availability.
Availability, rate, and restriction updates from Smarthotel to partners will be done with the
OTA_HotelInvCountNotifRQ for availability updates
OTA_HotelRateAmountNotifRQ for rate updates
OTA_BookingRuleNotifRQ for restriction updates
Smarthotel will send the requests and for the partner it suffices to send back a response with just the Success, Warnings, or Errors elements.
OTA_HotelInvCountNotifRQ/RS.
OTA_HotelInvCountNotifRQ
This message sends a notification to the channel manager that synchronizes the inventory available for sale at the hotel.
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
Inventories | OTA_HotelInvCountNotifRQ | A collection of Inventory. Hotel identification information are the attributes of this element. | 1..n | |
@HotelCode | Inventories | The ID of the hotel. | [integer] | 1 |
Inventory | Inventories | This is the inventory information for a given rate plan, room type, date, etc. The set of changes in the number of units of base inventory for one inventory type (code) to be made on the server. The server must successfully update all messages. Failure to update any single status message will result in the failure of all messages. | 1..n | |
StatusApplicationControl | Inventory | Information on what the InvCountNotif Message applies to (i.e. the combination of inventory and/or rate codes) and the period of application. The StatusApplicationControl class is used to indicate to which block codes/rate plans/inventory codes a status should be applied. | 1 | |
@InvTypeCode | StatusApplicationControl | The ID of the room, or the ID of the room plan (in case InvCodeApplication has been set to InvGroupingCode). | [integer] | 1 |
@InvType | StatusApplicationControl | Optional attribute to be included when a bed type in a room needs to be updated. Always set to BedType. Omit when updating a room. | BedType | 0..1 |
@InvCode | StatusApplicationControl | Optional attribute to be included when a bed type in a room needs to be updated. Indicates the ID of the bed type. | [integer] | 0..1 |
@InvCodeApplication | StatusApplicationControl | Omit when updating a room, set to ‘InvGroupingCode’ when updating a room plan. | InvGroupingCode | 0..1 |
@Start | StatusApplicationControl | The starting value of the time span. | [yyyy-MM-dd] | 1 |
@End | StatusApplicationControl | The ending value of the time span. | [yyyy-MM-dd] | 1 |
@Mon, @Tue, @Weds, @Thur, @Fri, @Sat, @Sun | StatusApplicationControl | When true, applies only to a particular day. | True False | 0..1 |
InvCounts | Inventory | A collection of inventory counts. | 1..n | |
InvCount | InvCounts | Individual inventory count. | 1 | |
Count | InvCount | An integer representing the count. | [integer] | 1 |
CountType | InvCount | This identifies the type of inventory count being reported. Refer to OpenTravel Code List Inventory Count Type (INV). | 1 = Physical | 0..1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelInvCountNotifRQ EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <POS> <Source> <RequestorID ID="APIKEY" MessagePassword="APIPASSWORD"/> </Source> </POS> <Inventories HotelCode="21052"> <Inventory> <StatusApplicationControl InvTypeCode="1" Start="2018-07-24" End="2018-07-31" Mon="true" Fri="true" /> <InvCounts> <InvCount Count="5" CountType="1" /> </InvCounts> </Inventory> </Inventories> </OTA_HotelInvCountNotifRQ>
OTA_HotelInvCountNotifRS
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
UniqueID | OTA_HotelInvCountNotifRS | An identifier used to uniquely reference an object in a system. | 1 | |
@ID | UniqueID | The queue ID. | [integer] | 1 |
@Type | UniqueID | A reference to the type of object defined by the UniqueID element. | Refer to OpenTravel Code List Unique ID Type (UIT). Value: 18 = Other | 1 |
Extra note;
Only the exact data stated in the request message will be processed; this data needs to be different then the data present in the channel manager.
Other data present in the channel manager will not be modified.
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelInvCountNotifRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <UniqueID ID="123456" Type="18" /> </OTA_HotelInvCountNotifRS>
OTA_HotelRateAmountNotifRQ/RS.
OTA_HotelRateAmountNotifRQ
This message is used to provide a notification of a new rate plan created for a hotel and to synchronize the rate plan between the PMS and the channel manager.
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
RateAmountMessages | OTA_HotelRateAmountNotifRQ | A collection of RateAmountMessages that define the rate changes to be made. | 1..n | |
@HotelCode | RateAmountMessages | The ID of the hotel. | [integer] | 1 |
RateAmountMessage | RateAmountMessages | RateAmountMessages that define the rate changes to be made. | 1..n | |
StatusApplicationControl | RateAmountMessage | Information on what the RateAmount Message applies to (i.e. the combination of inventory and rate codes) and the period of application. The StatusApplicationControl class is used to indicate to which block codes/rate plans/inventory codes a status should be applied. | 1 | |
@InvTypeCode | StatusApplicationControl | The ID of the room. Required when updating rates, not required when updating a rate plan. | [integer] | 0..1 |
@InvType | StatusApplicationControl | Optional attribute to be included when a bed type in a room needs to be updated. Always set to BedType. Omit when updating a room. | BedType | 0..1 |
@InvCode | StatusApplicationControl | Optional attribute to be included when a bed type in a room needs to be updated. Indicates the ID of the bed type. | [integer] | 0..1 |
@RatePlanCode | StatusApplicationControl | The ID of the rate, or the ID of the rate plan (in case RatePlanCodeApplication has been set to ‘RatePlanGroupingCode’). | [integer] | 1 |
@RatePlanCodeApplication | StatusApplicationControl | Omit when updating a rate, set to ‘RatePlanGroupingCode’ when updating a rate plan. | RatePlanGroupingCode | 0..1 |
@Start | StatusApplicationControl | The starting value of the time span. | [yyyy-MM-dd] | 1 |
@End | StatusApplicationControl | The ending value of the time span. | [yyyy-MM-dd] | 1 |
@Mon, @Tue, @Weds, @Thur, @Fri, @Sat, @Sun | StatusApplicationControl | When true, applies only to a particular day. | False True | 0..1 |
Rates | RateAmountMessage | A collection of rate changes to be synchronized between systems. | 1 | |
Rate | Rates | An individual rate, which is a collection of amounts by guest, additional guests, and the unique id to identify the rate. | 1 | |
BaseByGuestAmts | Rate | A collection of Base charges by number of guests. | 1 | |
BaseByGuestAmt | BaseByGuestAmts | Base charge for a given number of guests for a given age qualifying code. | 1..n | |
@NumberOfGuests | BaseByGuestAmt | The number of guests associated with this base charge. Only required for AgeQualifyingCode 10 (Adult). | 1 = Single use 2 = Standard use 3 = Triple use 4 = Quad use | 0..1 |
@AgeQualifyingCode | BaseByGuestAmt | Defines an age range or age category of a guest. | Refer to OpenTravel Code List Age Qualifying Code (AQC). 10=Adult (Default) | 0..1 |
@DecimalPlaces | BaseByGuestAmt | The ISO 4217 standard "minor unit" for the number of decimal places for a particular currency. | [integer] | 0..1 |
@AmountAfterTax | BaseByGuestAmt | The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax). | [numeric] | 1 |
AdditionalGuestAmounts | Rate | A collection of charges that apply to for additional guests. | 0..1 | |
AdditionalGuestAmount | AdditionalGuestAmounts | Collection of incremental charges for additional guests. | 1 | |
@Amount | AdditionalGuestAmount | A monetary amount, including tax. | [numeric] | 1 |
@DecimalPlaces | AdditionalGuestAmount | Decimal places for currency code. | [integer] | 1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelRateAmountNotifRQ EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <POS> <Source> <RequestorID ID="APIKEY" MessagePassword="APIPASSWORD"/> </Source> </POS> <RateAmountMessages HotelCode="21052"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="1" RatePlanCode="1" Start="2018-07-24" End="2018-07-31" Mon="true" Fri="true" /> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt NumberOfGuests="1" AgeQualifyingCode="10" AmountAfterTax="3895" DecimalPlaces="2" /> <BaseByGuestAmt NumberOfGuests="2" AgeQualifyingCode="10" AmountAfterTax="4995" DecimalPlaces="2" /> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount Amount="1000" DecimalPlaces="2" /> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
OTA_HotelRateAmountNotifRS
This message is used to indicate the status of processing the OTA_HotelRateAmountNotifRQ message
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
UniqueID | OTA_HotelRateAmountNotifRS | An identifier used to uniquely reference an object in a system. | 1 | |
@ID | UniqueID | The queue ID. | [integer] | 1 |
@Type | UniqueID | A reference to the type of object defined by the UniqueID element. | Refer to OpenTravel Code List Unique ID Type (UIT). Value: 18 = Other | 1 |
Extra note;
Only the exact data stated in the request message will be processed; this data needs to be different then the data present in the channel manager.
Other data present in the channel manager will not be modified.
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelRateAmountNotifRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <UniqueID ID="123456" Type="18" /> </OTA_HotelRateAmountNotifRS>
OTA_HotelBookingRuleNotifRQ/RS.
OTA_HotelBookingRuleNotifRQ
The OTA_HotelBookingRuleNotifRQ is the message that sends the notification of the rules and restrictions affecting the availability status of the hotel. Currently Smarthotel supports the following restrictions: Master Open/Close, Open/Closed to Arrival, Open/Closed to Departure, Minimun Length of Stay and Maximum Length of Stay.
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
RuleMessages | OTA_HotelBookingRuleNotifRQ | Container for the individual RuleMessage(s). An OTA_HotelBookingRuleNotifRQ contains the booking rules for a single hotel. Hotel identification information are the attributes of this element. | 1..n | |
@HotelCode | RuleMessages | The ID of the hotel. | [integer] | 1 |
RuleMessage | RuleMessages | Container for the collection of Booking Rules for a given hotel or chain. | 1..n | |
StatusApplicationControl | RuleMessage | Information on what the BookingRule Message applies to (i.e. the combination of inventory and rate codes) and the period of application. The StatusApplicationControl class is used to indicate to which block codes/rate plans/inventory codes a status should be applied. | 1 | |
@InvTypeCode | StatusApplicationControl | The ID of the room. | [integer] | 1 |
@InvType | StatusApplicationControl | Optional attribute to be included when a bed type in a room needs to be updated. Always set to BedType. Omit when updating a room. | BedType | 0..1 |
@InvCode | StatusApplicationControl | Optional attribute to be included when a bed type in a room needs to be updated. Indicates the ID of the bed type. | [integer] | 0..1 |
@RatePlanCode | StatusApplicationControl | The ID of the rate. | [integer] | 1 |
@Start | StatusApplicationControl | The starting value of the time span. | [yyyy-MM-dd] | 1 |
@End | StatusApplicationControl | The ending value of the time span. | [yyyy-MM-dd] | 1 |
@Mon, @Tue, @Weds, @Thur, @Fri, @Sat, @Sun | StatusApplicationControl | When true, applies only to a particular day. | True False | 0..1 |
BookingRules | RuleMessage | Container for the collection of Booking Rules which apply for the information indicated in the StatusApplicationControl element. A collection of BookingRule. | 1 | |
BookingRule | BookingRules | The BookingRule element defines restrictions to rates and stays at the hotel for a given rate plan, room type or rate plan/room type combination. | 1..n | |
RestrictionStatus | BookingRule | Availability status assigned to the room rate combination for this booking rule. | 0..n | |
@Restriction | RestrictionStatus | Indicates the type of the restriction. | Arrival Departure Master (default) | 0..1 |
@Status | RestrictionStatus | The status. | Open Close | 1 |
LengthsOfStay | BookingRule | A collection of lengths of stay. A collection of LengthOfStay. | 0..1 | |
LengthOfStay | LengthsOfStay | A collection of patterns defining allowable lengths of stay (LOS). | 1..n | |
@MinMaxMessageType | LengthOfStay | An enumerated type used to define how the minimum and maximum LOS is applied. | SetMinLOS SetMaxLOS | 1 |
@Time | LengthOfStay | Used in conjunction with the MinMaxMessageType and the TimeUnit to define the length of stay requirements. (Only applicable for MinMaxMessageType ‘SetMinLOS’ and ‘SetMaxLOS’.) | [integer] | 0..1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelBookingRuleNotifRQ EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <POS> <Source> <RequestorID ID="APIKEY" MessagePassword="APIPASSWORD"/> </Source> </POS> <RuleMessages HotelCode="21052"> <RuleMessage> <StatusApplicationControl InvTypeCode="1" RatePlanCode="1" Start="2018-07-24" End="2018-07-31" Mon="true" Fri="true" /> <BookingRules> <BookingRule> <RestrictionStatus Restriction="Master" Status="Open" /> <RestrictionStatus Restriction="Arrival" Status="Close" /> <RestrictionStatus Restriction="Departure" Status="Close" /> <LengthsOfStay> <LengthOfStay MinMaxMessageType="SetMinLOS" Time="2" /> <LengthOfStay MinMaxMessageType="SetMaxLOS" Time="7" /> </LengthsOfStay> </BookingRule> </BookingRules> </RuleMessage> </RuleMessages> </OTA_HotelBookingRuleNotifRQ>
OTA_HotelBookingRuleNotifRS
The OTA_HotelBookingRuleNotifRS is the message used to indicate the status of processing the OTA_HotelBookingRuleNotifRQ message.
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
UniqueID | OTA_HotelBookingRuleNotifRS | An identifier used to uniquely reference an object in a system. | 1 | |
@ID | UniqueID | The queue ID. | [integer] | 1 |
@Type | UniqueID | A reference to the type of object defined by the UniqueID element. | Refer to OpenTravel Code List Unique ID Type (UIT). Value: 18 = Other | 1 |
Extra note;
Only the exact data stated in the request message will be processed; this data needs to be different then the data present in the channel manager.
Other data present in the channel manager will not be modified.
<?xml version="1.0" encoding="UTF-16"?> <OTA_HotelBookingRuleNotifRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <UniqueID ID="123456" Type="18" /> </OTA_HotelBookingRuleNotifRS>
Reservations.
The OTA_HotelResNotifRQ/RS 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. This call is used to push new created reservations to the channel manager or the PMS.
The OTA_HotelResModifyNotifRQ/RS is used 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 including the reservation ID may be useful).
The OTA_CancelRQ/RS is a generic message, available as an action on several OpenTravel services which requests a server to cancel the booking identified by the UniqueID element.
OTA_HotelResNotifRQ/RS.
Smarthotel supports the PUSH method for transferring reservations. This means that as soon as a new reservation is created at the originated system, the originated system is responsible for sending this reservation through to the connected system.
The same reservation number must be used for the lifespan of the reservation through all its possible mutations (booking, modifications and cancellation).
OTA_HotelResNotifRQ
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.
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..n | 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 USD | 1 | |
@DecimalPlaces | Base | 2 | 1 | |
RatePlans | RoomStay | 1 | ||
RatePlan | RatePlans | 0..1 | ||
MealsIncluded | MealsIncluded | 0..1 | ||
@MealPlanCodes | MealsIncluded | Please Refer to the 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 | Please Refer to the 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 | 1 | |
USD | ||||
@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 USD | 1 | |
ResGuestRPHs | RoomStay | Reference which ResGuest is in which RoomStay | 1 | |
@ServiceRPH | Service | A unique ID for a service that may be referenced elsewhere in the schema. | [integer] | 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 | |
@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 the Code List Profile Types | 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 | Country name, according to the ISO 3166-1 alpha-2 list (e.g., NL). The code of a country (e.g. as used in an address or to specify citizenship of a traveller). | 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 | 1 | ||
@CardNumber | PaymentCard | 1 | ||
@ExpireDate | PaymentCard | MMYY | 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 USD | 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 |
<?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="20002" 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="0" /> </ResGuestRPHs> </RoomStay> <RoomStay IndexNumber="402"> <RoomTypes> <RoomType RoomTypeCode="20003" 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="1" /> </ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="0"> <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="1"> <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="+31182751118" /> <Email>j.doe@gmail.com</Email> <Address> <StreetNmbr>Einsteinstraat 5</StreetNmbr> <CityName>Reeuwijk</CityName> <PostalCode>2811EP</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" ExpireDate="0918"> <CardHolderName>John Smith</CardHolderName> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AmountAfterTax="28500" CurrencyCode="EUR" DecimalPlaces="2" /> <BasicPropertyInfo HotelCode="101073" /> <HotelReservationIDs> <HotelReservationID ResID_Value="your-unique-reference" ResID_Type="14" /> </HotelReservationIDs> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_HotelResNotifRQ>
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:
Reservation with 2 room stays, one has IndexNumber 123 and the other has 456.
Then a modification is created with 3 room stays, IndexNumbers 123, 456 and 789. This means the first 2 was modified and 789 is a new room stay.
Following a new modification with 4 room stays IndexNumbers 789, 145, 658, 987. 789 was modified, 123 and 456 were canceled and 145, 658 and 987 were booked.
OTA_HotelResNotifRS
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.
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 |
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 101073.</Text> </Error> </Errors> </OTA_HotelResNotifRS>
OTA_HotelResModifyNotifRQ/RS.
OTA_HotelResModifyNotifRQ
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).
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 | 36161 | 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 USD | 1 | |
@DecimalPlaces | Base | 2 | 1 | |
RatePlans | RoomStay | 1 | ||
RatePlan | RatePlans | 0..1 | ||
MealsIncluded | MealsIncluded | 0..1 | ||
@MealPlanCodes | MealsIncluded | Please refer to MealPlanList (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 | Please refer to Code List Age Qualifying (AQC) | 1 | |
@Count | GuestCount | 36161 | 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 | 1 | |
USD | ||||
@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 USD | 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 | Please refer to Code List Profile Type (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 | Country name, according to the ISO 3166-1 alpha-2 list (e.g., NL). The code of a country (e.g. as used in an address or to specify citizenship of a traveller). | 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 | 1 | ||
@CardNumber | PaymentCard | 1 | ||
@ExpireDate | PaymentCard | yyyy/mm | 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 USD | 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 |
<?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="20002" 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="0" /> </ResGuestRPHs> </RoomStay> <RoomStay IndexNumber="402"> <RoomTypes> <RoomType RoomTypeCode="20003" 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="1" /> </ResGuestRPHs> </RoomStay> </RoomStays> <ResGuests> <ResGuest ResGuestRPH="0"> <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="1"> <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="+31182751118" /> <Email>j.doe@gmail.com</Email> <Address> <StreetNmbr>Einsteinstraat 5</StreetNmbr> <CityName>Reeuwijk</CityName> <PostalCode>2811EP</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="0918"> <CardHolderName>John Smith</CardHolderName> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AmountAfterTax="28500" CurrencyCode="EUR" DecimalPlaces="2" /> <BasicPropertyInfo HotelCode="101073" /> <HotelReservationIDs> <HotelReservationID ResID_Value="your-unique-reference" ResID_Type="14" /> </HotelReservationIDs> </ResGlobalInfo> </HotelResModify> </HotelResModifies> </OTA_HotelResModifyNotifRQ>
OTA_HotelResModifyNotifRS
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.
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 |
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 101073.</Text> </Error> </Errors> </OTA_HotelResModifyNotifRS>
OTA_CancelRQ/RS.
OTA_CancelRQ
A generic message, available as an action on several OpenTravel services which requests a server to cancel the booking identified by the UniqueID element
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
UniqueID | OTA_CancelRQ | This allows a user to send more than one UniqueID where there is more than one UniqueID associated to a single reservation (e.g. confirmation number and PNR record locator). | 1..n | |
@ID | UniqueID | The ID of the reservation. | [integer] | 1 |
@ID_Context | UniqueID | The ID of the booking site. | [integer] | 1 |
@Type | UniqueID | A reference to the type of object defined by the UniqueID element. | Refer to Code List Unique ID Type (UIT). | 1 |
TPA_Extensions | UniqueID | A placeholder in the schema to allow for additional elements and attributes to be included. Allows extensions to be added to the OpenTravel specification. | 1 | |
HotelInfo | TPA_Extensions | The element containing information related to the hotel. | 1 | |
@HotelCode | HotelInfo | The ID of the hotel. | [integer] | 1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_CancelRQ EchoToken="Example123" 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> <UniqueID ID="123456" ID_Context="2" Type="15"> <TPA_Extensions> <HotelInfo HotelCode="123" /> </TPA_Extensions> </UniqueID> </OTA_CancelRQ>
OTA_CancelRS
Used to rspond to a CancelRQ and may provide details about the cancellation.
Element / @Attribute | Parent | Info | Values | Occurrence |
---|---|---|---|---|
UniqueID | OTA_CancelRS | Contains the reference(s) of the items being cancelled. An identifier used to uniquely reference an object in a system (e.g. an airline reservation reference, customer profile reference, booking confirmation number, or a reference to a previous availability quote). | 2 | |
Two instance of this element are required, one to reference the reservation ID for which a cancellation was requested and one to reference the ID of the cancellation. | ||||
@ID | UniqueID | The ID of the reservation or cancellation. | [integer] | 1 |
@Type | UniqueID | A reference to the type of object defined by the UniqueID element. | Refer to Code List Unique ID Type (UIT). | 1 |
<?xml version="1.0" encoding="UTF-16"?> <OTA_CancelRS EchoToken="Example123" PrimaryLangID="eng" Target="Production" TimeStamp="2018-07-29T07:38:54.729Z" Version="1.0"> <Success /> <UniqueID ID="123456" Type="15" /> <UniqueID ID="123457" Type="15" /> </OTA_CancelRS>