Message Description
Inbound Message
protel I/O uses a request and response message pair to receive modifications to an existing (active) rate plan from a Revenue Management System (inbound). Given the complexities associated with synchronizing distributed rate plans, sometimes a mapping table is used to ensure communication partners are referencing the same rate plan by name.
Inbound message support:
Changes to existing rate plans for a single hotel (delta)
Changes to rate values for all available room types
Changes to rate values based on the number of guests
Changes to rate values spanning multiple days
Daily rates (i.e. rate per day per room type)
Inbound daily rates have to be send with all possible BaseByGuestAmt elements in one rate element per roomtype and timespan.
Outbound Message
protel I/O uses a request and response message pair to notify booking agents of newly created (initial) rate plans, modifications to existing (active) rate plans or the cessation of a previously active (deactivated) rate plan. In practice, a request message can be sent to a Central Reservation System (outbound). Given the complexities associated with synchronizing distributed rate plans, sometimes a mapping table is used to ensure communication partners are referencing the same rate plan by name.
Outbound message support:
Creation of standard rate plans , including rate plan details and product rate amounts
Changes to a standard rate plan, including rate plan details and rate changes for products and dates
Removal of rate amounts for products and dates
Daily rates
Virtual rates
We will only support rates with inclusive packages. Exclusive packages need to be calculated by the Integration Partner, with the help of the IO_RatePackageNotifRQ.
OTA_HotelRatePlanNotifRQ message from PMS is used in combination with OTA_HotelAvailNotifRQ. Thus if @RatePlanNotifType="Remove" or @RateTier="Deactivated", then the @RatePlanCode should be checked and all stored data for the respective rate code and its relevant room types/restrictions should be cleared.
Message Attributes
OTA_HotelRatePlanNotifRQ
Element | @Attribute | Type | Num | Description | Comments + Content outbound | pAir | onPrem | Comments + Content inbound | pAIR | OnPrem |
---|---|---|---|---|---|---|---|---|---|
OTA_HotelRatePlanNotifRQ | 1 | Root element of the message. |
| ||||||
@EchoToken | StringLength1to128 | 0..1 | A reference for additional message identification, assigned by the requesting host system. When a request message includes an echo token the corresponding response message MUST include an echo token with an identical value. | ||||||
@CorrelationID | StringLength1to64 | 1 | Used to match result messages (*RS) to request messages (*RQ) in asynchronous communication patterns. Therefore mandatory. | ||||||
@TimeStamp | dateTime | 1 | Timestamp of the transaction. | "2020-07-14T16:36:27" | "2019-07-08T11:19:50Z" | ||||
@Version | decimal | 0..1 | Version of the message | Version="1.001" | |||||
@PrimaryLangID | language | 0..1 | Default language of the property. | "en" | "en" | ||||
@MessageContentCode | OTA_CodeType TDB | 0..1 | This is the type of rate plan which is updated. Refer to OpenTravel Code List TDB. | Only supported: 8 = Rate | Only supported: 8 = Rate | ||||
OTA_HotelRatePlanNotifRQ | POS | 1 | POS provides a mechanism to indicate the source of the message. | |||||||
OTA_HotelRatePlanNotifRQ | POS | Source | 1..10 | This holds the details about the requestor. It may be repeated to also accommodate the delivery systems. | |||||||
OTA_HotelRatePlanNotifRQ | POS | Source | RequestorID | 0..1 | An identifier of the entity making the request (e.g. ATA/IATA/ID number, Electronic Reservation Service Provider (ERSP), Association of British Travel Agents.(ABTA)). | |||||||
@Type | OTA_CodeType UIT | 1 | A reference to the type of object defined by the UniqueID element. Refer to OpenTravel Code List Unique ID Type (UIT) | ||||||
@ID | StringLength1to32 | 1 | The ID will transfer the HotelID and needs to be agreed by the trading partners and remain the same throughout the messages. | "10" = Hotel | |||||
@ID_Context | StringLength1to32 | 1 | Used to identify where the ID comes from. | "protelIO" | "protelIO" | ||||
OTA_HotelRatePlanNotifRQ | POS | Source | BookingChannel | 0..1 | Specifies the booking channel type and wether it is the primary one. | |||||||
@Type | OTA_CodeType BCT | 1 | The type of booking channel | ||||||
@Primary | boolean | 0..1 | Indicates wether the booking channel is the primary one. | ||||||
OTA_HotelRatePlanNotifRQ | RatePlans | 1 | Element grouping the rate plans to be transferred. | |||||||
@HotelCode | StringLength1to16 | 0..1 | This is the Hotel Cloud ID whose rates are being updated. | ||||||
@ChainCode | StringLength1to8 | 0..1 | Could be set up by the user – not mandatory in the protel system. Only supported by protel MPE. | ||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | 1..n | Element defining rate plan being sent. Upper limit to be agreed upon by trading partners. | |||||||
@RatePlanCode | StringLength1to64 | 1 | This is the name of the rate code which is being updated. | ||||||
@RatePlanID | StringLength1to64 | 0..1 | This is the internal system reference number of the rate code. | not used | |||||
@RatePlanCategory | StringLength1to64 | 0..1 | This is the type of the rate group the updated rate code belongs to. Only one RatePlanCategory is acceptable per RatePlan code; therefore, the RatePlanCategory must be the same for all seasons passed. |
| |||||
@RatePlanType | OTA_CodeType RPT | 0..1 | This is used to identify the type of the RatePlan. Refer to OpenTravel Code List Rate Plan Type (RPT) | ||||||
@RatePlanNotifType | string | 0..1 | This enumeration indicates whether the upload/download is meant to overwrite existing data or to add it. |
| "Delta" | ||||
@Start | date | 1 | In general, the Start and End attributes used at the RatePlan level should be used as follows: the Start attribute should be equal to the earliest Start attribute at the Rate level, and the End attribute should be equal to the latest End attribute at the Rate level. In other words, the Start and End attributes at the RatePlan level should specify the entire span of dates representing the Rate elements found in the Rates collection. This value is to be globally applied to any child element where the date spans are absent. | ||||||
@End | date | 1 | In general, the Start and End attributes used at the RatePlan level should be used as follows: the Start attribute should be equal to the earliest Start attribute at the Rate level, and the End attribute should be equal to the latest End attribute at the Rate level. In other words, the Start and End attributes at the RatePlan level should specify the entire span of dates representing the Rate elements found in the Rates collection. This value is to be globally applied to any child element where the date spans are absent. | ||||||
@CurrencyCode | AlphaLength3 | 1 | The code specifying a monetary unit. Use ISO 4217, three alpha code | "EUR" | |||||
@AdjustedAmount | Money | 0..1 | The amount which should be added to the base rate plan to determine the price of this derived rate plan. Specifies an amount, max 3 decimals. | ||||||
@AdjustedPercentage | Percentage | 0..1 | The percentage off the base rate plan amount used to determine the price of this derived rate plan. Used for percentage values. | ||||||
@AdjustUpIndicator | boolean | 0..1 | When true, the adjusted amount or adjusted percentage is added to the amount specified for the base rate plan to determine the derived rate amount. When false, the adjusted amount or adjusted percentage is subtracted from the amount specified for the base rate plan to determine the derived rate amount. | ||||||
@YieldableIndicator | boolean | 0..1 | Used to indicate the rate plan is subject to yield management logic. When true, the rate plan is yieldable. When false, the rate plan is not yieldable. |
| not used | ||||
@RestrictedDisplayIndicator | boolean | 0..1 | This attribute is a boolean to indicate if the rate is to be considered “Confidential” / marked as a special rate only bookable for specific companies/travel agents. Only one Confidential attribute is acceptable for each RatePlan code; therefore, the attribute must be the same for all seasons passed. |
| not used | ||||
@IsCommissionable | boolean | 0..1 |
| ||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Commission | 0..1 | Contains details pertaining to commissions. | |||||||
@Percent | decimal | 0..1 | The percent applied to the commissionable amount to determine the commission payable amount. | ||||||
@CurrencyCode | AlphaLength3 | 1 | The code specifying a monetary unit. Use ISO 4217, three alpha code | "EUR" | |||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Description | 0..5 | This element should be repeated twice: one instance for the short description and the other for the long description of the rate that is being uploaded/downloaded. This is not needed for deactivated or deleted rate plans. This is only applicable in delta if the description changed. | is taken from the rate plan set up on the PMS | ||||||
@Name | StringLength1to64 | 0..1 | This element is repeated twice: one instance for the short description and another for the long description of the rate that is being sent. Its value must be "Short Description" and "Long Description" respectively. | ||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Description | Text | 1 | This element inside the Description element described above has the actual text corresponding to the Long Description and Short Description of the rate being uploaded/downloaded. | "Test Rate" | is taken from the rate plan set up on the PMS | |||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | 0..1 | Includes all rates loaded for the rate plan. | |||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | 1..n | Upper limit may be agreed upon partners. | |||||||
@RateTier | StringLength1to64 | 0..1 | We are using the attribute to display if the rate is "active" or "deactivated" |
|
| ||||
@Start | date | 1 | This set of Start and End attributes represents the start and end of validity of the specific rate. | ||||||
@End | date | 1 | This set of Start and End attributes represents the start and end of validity of the specific rate. | ||||||
@MinGuestApplicable | Numeric1to999 | 0..1 | Minimum number of occupants for which this rate is valid. | ||||||
@MaxGuestApplicable | Numeric1to999 | 0..1 | Maximum number of occupants for which this rate is valid. | ||||||
@CurrencyCode | AlphaLength3 | 1 | This is the currency associated to the rate that is being sent – it could be different from the currency loaded for the property. | "USD" | is taken from the rate plan set up on the PMS | ||||
@Mon | boolean | 0..1 | These DOW indicators are used to specify to which days the rate value is valid. |
| Not supported for now - please send one Rate element per day. | ||||
@InvTypeCode | StringLength1to16 | 0..1 | This is the room type for which the rates are transferred. For each room type a new instance of the Rate element is passed. If the room type is transmitted with rate values attached it will be considered opened at the price indicated. If the room type is passed with a 0 value it will be considered closed for that rate plan (i.e., not applicable for the rate plan). If in a modification message a room type that was previously loaded is not sent, then it remains unchanged. | ||||||
@UnitMultiplier | Numeric1to999 | 1 | The number of RateTimeUnits that the rate amount is based upon. | ||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | BaseByGuestAmts | 0..1 | A collection of base charges by number of guests. | |||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | BaseByGuestAmts | BaseByGuestAmt | 1..n | At least one instance for NumberOfGuest=1 is mandatory for the RatePlanNotifType = New or Overlay. For the RatePlanNotifType of Delta or Remove it is optional. | |||||||
@AgeQualifyingCode | OTA_CodeType AQC | 0..1 | Defines an age range or age category of a guest (e.g., under 21, over 65, teen, infant). Refer to OpenTravel Code List Age Qualifying Code (AQC) | Only supported: "10" = Adult | |||||
@NumberOfGuests | Numeric1to999 | 0..1 | The NumberOfGuest attribute indicates what type of rate is being passed – if NumberOfGuests is = 1 then we are transmitting a single rate, if higher than 1 then it is a double or full occupancy rate. | ||||||
@AmountAfterTax | Money | 0..1 | The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax). | We do not accept 0,00 amounts | |||||
@AmountBeforeTax | Money | 0..1 | The total amount not including any associated tax (e.g., sales tax, VAT, GST or any associated tax). | We do not accept 0,00 amounts | |||||
@Code | StringLength1to16 | 0..1 | The code associated with this base charge. | ||||||
@CurrencyCode | AlphaLength3 | 1 | The code specifying a monetary unit. Use ISO 4217, three alpha code | "EUR" | |||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | 0..1 | A collection of charges that apply to for additional occupants. | |||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | 1..n | Collection of incremental charges per age qualifying code for additional guests. Amount charged for additional occupant is with respect to age group of the base guests. | |||||||
@AgeQualifyingCode | OTA_CodeType AQC | 0..1 | Defines an age range or age category of a guest (e.g., under 21, over 65, teen, infant). Refer to OpenTravel Code List Age Qualifying Code (AQC) @AgeQualifyingCode = 7 => Infant | Only supported: "10" = Adult | |||||
@MinAge | Numeric1to999 | 0..1 | The minimum age to qualify for AgeQualifyingCode. | ||||||
@MaxAge | Numeric1to999 | 0..1 | The maximum age to qualify for AgeQualifyingCode. | ||||||
@Amount | Money | 1 | A monetary amount. | ||||||
@CurrencyCode | AlphaLength3 | 1 | Currency code. Use ISO 4217, three alpha code. | is taken from the rate plan set up on the PMS | |||||
@TaxInclusive | Boolean | 0..1 | Indicates whether taxes are included in @Amount |
| |||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | Taxes | 0..1 | Description of tax details over additional guest amount. | The element will appear only if BaseByGuestAmt / @AmountAfterTax is also present for the resp rate update. | ||||||
@Amount | Money | 0..1 | A monetary amount of the tax | ||||||
@CurrencyCode | AlphaLength3 | 0..1 | The code specifying a monetary unit. Use ISO 4217 three-alpha code. | ||||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | RateDescription | 0..1 | Description of rate being uploaded. | |||||||
@Name | StringLength1to64 | 0..1 | In many cases the description repeats, this will allow you to define the information that is being sent, typically used when multiple occurrences of ParagraphType are being sent. | ACCOMMODATION | |||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | RateDescription | Text | 1 | ||||||||
@TextFormat | NMTOKEN | 0..1 | Indicates the format of text used in the description e.g. unformatted or html. |
| |||||
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | UniqueID | 0..n | The unique identifier element allows trading partners to uniquely identify each Rate being uploaded, for traceable transactions. | |||||||
@ID | StringLength1to32 | 1 | The ID will transfer the HotelID and needs to be agreed by the trading partners and remain the same throughout the messages. | ||||||
@ID_Context | StringLength1to32 | 1 | Used to identify where the ID comes from. | "protelIO" | |||||
@Type | OTA_CodeType UIT | 1 | A reference to the type of object defined by the UniqueID element. Refer to OpenTravel Code List Unique ID Type (UIT) 18 = Packages |
OTA_HotelRatePlanNotifRS
Element | @Attribute | Type | Num | Description | Comments + Content outbound | pAIR | OnPrem | Comments + Content inbound | pAIR | OnPrem |
---|---|---|---|---|---|---|---|---|---|
OTA_HotelRatePlanNotifRS | 1 | Root element of the message. | |||||||
@EchoToken | StringLength1to128 | 0..1 | A reference for additional message identification, assigned by the requesting host system. When a request message includes an echo token the corresponding response message MUST include an echo token with an identical value. | ||||||
@CorrelationID | StringLength1to64 | 1 | Used to match result messages (*RS) to request messages (*RQ) in asynchronous communication patterns. Therefore mandatory. | ||||||
@TimeStamp | dateTime | 1 | Timestamp of the transaction. | Version="3.000" | |||||
@Version | decimal | 0..1 | Version of the message | "2020-07-15T11:02:51Z" | |||||
@PrimaryLangID | language | 0..1 | Default language of the property. | "en" | |||||
OTA_HotelRatePlanNotifRS | Errors | 0..1 | Mandatory ONLY if Success element is not sent. Only needed if RQ message was unsuccessful. | |||||||
OTA_HotelRatePlanNotifRS | Errors | Error | 1..99 | Collection of Error elements | |||||||
@Type | OTA_CodeType EWT | 1 | Mandatory. Refer to the OTA Code List: Error Warning Type (EWT). | ||||||
@Code | OTA_CodeType ERR | 0..1 | Refers to the OTA Code List: Error Codes (ERR). | ||||||
@RecordID | StringLength1to64 | 0..1 | If the receiving system is able to identify within a batch of rateplan messages which specific message failed, the UniqueID of the message should be reported here. | ||||||
@ShortText | StringLength1to64 | 0..1 | Describes the occurring error in short. | "A rate plan 'XY' was not found for the code provided." | |||||
OTA_HotelRatePlanNotifRS | Success | 1 | Mandatory if no Errors were sent. | |||||||
OTA_HotelRatePlanNotifRS | RatePlanCrossRefs | 0..1 | Container for Rate Plan Cross Reference elements. | |||||||
OTA_HotelRatePlanNotifRS | RatePlanCrossRefs | RatePlanCrossRef | 1..n | Cross Reference between sending system and responding system Rate Plan Codes. | |||||||
@RequestRatePlanCode | StringLength1to64 | 0..1 | Identification of the sending system´s rate plan code | ||||||
@ResponseRatePlanCode | StringLength1to64 | 0..1 | Identification of responding system´s rate plan code | ||||||
OTA_HotelRatePlanNotifRS | Warnings | 0..1 | Can be used in conjunction with Success message to define a business error. | |||||||
OTA_HotelRatePlanNotifRS | Warnings | Warning | 1..999 | Collection of Warning elements. | |||||||
@Type | OTA_CodeType EWT | 1 | Mandatory. Refer to the OTA Code List: Error Warning Type (EWT). | ||||||
@Code | OTA_CodeType ERR | 0..1 | Refers to the OTA Code List: Error Codes (ERR). | ||||||
@RecordID | StringLength1to64 | 0..1 | If the receiving system is able to identify within a batch of rate plan messages which specific message failed, the UniqueID of the message should be reported here. | ||||||
@ShortText | StringLength1to64 | 0..1 | Describes the occurring error in short. | "A rate plan 'XY' was not found for the code provided." |