Target audienceRMS, CRM, CRS
Version3.1
AuthenticationBearer Token
Message typeAsynchronous, Push
Direction Inbound, Outbound

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 outboundpAironPremComments + Content inbound

pAIR 

OnPrem

OTA_HotelRatePlanNotifRQ


1

Root element of the message.


(Haken)(Haken)

 (Haken)

(Haken)

@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.


(Haken)(Haken)
(Haken)


(Haken)

@CorrelationID

StringLength1to64

1

Used to match result messages (*RS) to request messages (*RQ) in asynchronous communication patterns. Therefore mandatory.


(Haken)(Haken)

(Haken)

(Haken)

@TimeStamp 

dateTime

1

Timestamp of the transaction. 

"2020-07-14T16:36:27"(Haken)(Haken)"2019-07-08T11:19:50Z"

(Haken)

(Haken)

@Version 

decimal

0..1

Version of the message

Version="1.001"(Haken)(Haken)

(Haken)

(Haken)

@PrimaryLangID

language

0..1

Default language of the property.

"en"(Haken)(Haken)"en"(Haken)(Haken)

@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

(Haken)(Haken)

Only supported:

8 = Rate

(Haken)

(Haken)

OTA_HotelRatePlanNotifRQ | POS


1

POS provides a mechanism to indicate the source of the message.


(Haken)(Haken)

(Haken)

(Haken)

OTA_HotelRatePlanNotifRQ | POS | Source


1..10

This holds the details about the requestor. It may be repeated to also accommodate the delivery systems.


(Haken)(Haken)

(Haken)

(Haken)

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)).


(Haken)(Haken)

(Haken)

(Haken)

@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)

(Haken)(Haken)

(Haken)

(Haken)

@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.


(Haken)(Haken)"10" = Hotel

(Haken)

(Haken)

@ID_Context

StringLength1to32

1

Used to identify where the ID comes from.

"protelIO"(Haken)(Haken)"protelIO"

(Haken)

(Haken)

OTA_HotelRatePlanNotifRQ | POS | Source | BookingChannel
0..1Specifies the booking channel type and wether it is the primary one.
(Haken)(Haken)
(Haken)(Haken)
@TypeOTA_CodeType BCT1The type of booking channel(Haken)(Haken)
(Haken)(Haken)
@Primaryboolean0..1Indicates wether the booking channel is the primary one.
(Haken)(Haken)
(Haken)(Haken)

OTA_HotelRatePlanNotifRQ | RatePlans


1

Element grouping the rate plans to be transferred.


(Haken)(Haken)

(Haken)

(Haken)

@HotelCode 

StringLength1to16

0..1

This is the Hotel Cloud ID whose rates are being updated. 


(Haken)(Haken)

(Haken)

(Haken)

@ChainCode

StringLength1to8

0..1

Could be set up by the user – not mandatory in the protel system.

Only supported by protel MPE.


(Fehler)(Haken)
(Fehler)

(Fehler)

OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan


1..n

Element defining rate plan being sent. Upper limit to be agreed upon by trading partners.


(Haken)(Haken)

(Haken)

(Haken)

@RatePlanCode 

StringLength1to64

1

This is the name of the rate code which is being updated.


(Haken)(Haken)

(Haken)

(Haken)

@RatePlanID

StringLength1to64

0..1

This is the internal system reference number of the rate code.




not used

(Haken)

(Fehler)

@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. 


(Haken)(Haken)
  • pAir field: instead of RateGroups.TypeID -> RateGroups.Shortname
  • pAir logic: instead of Type of Rate group -> Rate Group short
  • SPE Logic: instead of Type of Rate group -> Rate Group short

(Fehler)

(Fehler)

@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)

(Haken)(Haken)

(Fehler)

(Fehler)

@RatePlanNotifType 

string

0..1

This enumeration indicates whether the upload/download is meant to overwrite existing data or to add it. 

  • New
  • Overlay
  • Delta
(Haken)(Haken)"Delta"

(Haken)

(Haken)

@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. 


(Haken)(Haken)
(Haken)

(Haken)

@End date1In 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. 
(Haken)(Haken)
(Haken)

(Haken)

@CurrencyCodeAlphaLength31The 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. 


(Haken)(Haken)
(Fehler)

(Fehler)

@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. 


(Haken)(Haken)
(Fehler)

(Fehler)

@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. 


(Haken)(Haken)
(Fehler)

(Fehler)

@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. 

  • "true"
  • "false"
(Haken)(Haken)not used

(Haken)

(Fehler)

@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. 

  • "true"
  • "false"
(Haken)(Haken)not used

(Haken)

(Fehler)
@IsCommissionableboolean0..1 
  • "true"
  • "false"
(Haken)(Haken)
(Fehler)(Fehler)
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Commission

0..1

Contains details pertaining to commissions.
(Haken)(Haken)
(Fehler)(Fehler)
@Percentdecimal0..1 The percent applied to the commissionable amount to determine the commission payable amount.
(Fehler)(Haken)
(Fehler)(Fehler)
@CurrencyCodeAlphaLength31The 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.


(Haken)(Haken)is taken from the rate plan set up on the PMS

(Fehler)

(Fehler)

@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. 


(Haken)(Haken)

(Haken)

(Haken)

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"(Haken)(Haken)is taken from the rate plan set up on the PMS

(Fehler)

(Haken)

OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates


0..1

Includes all rates loaded for the rate plan.


(Haken)(Haken)
(Haken)

(Haken)

OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate


1..n

Upper limit may be agreed upon partners.


(Haken)(Haken)
(Haken)

(Haken)

@RateTierStringLength1to640..1

We are using the attribute to display if the rate is "active" or "deactivated"
There is a possiblity to disable this attribute in our OTA_RatePlanNotifRQ  outbound message.

  • Active
  • Deactivated
(Haken)(Haken)
  • Active
  • Deactivated
(Haken)(Haken)

@Start

date

This set of Start and End attributes represents the start and end of validity of the specific rate. 


(Haken)(Haken)

(Haken)

(Haken)

@End 

date

1

This set of Start and End attributes represents the start and end of validity of the specific rate. 


(Haken)(Haken)

(Haken)

(Haken)

@MinGuestApplicable

Numeric1to999

0..1

Minimum number of occupants for which this rate is valid.


(Haken)(Haken)
(Fehler)

(Fehler)

@MaxGuestApplicable

Numeric1to999

0..1

Maximum number of occupants for which this rate is valid.


(Haken)(Haken)
(Fehler)

(Fehler)

@CurrencyCode 

AlphaLength3

This is the currency associated to the rate that is being sent – it could be different from the currency loaded for the property. 

"USD"(Haken)(Haken)is taken from the rate plan set up on the PMS(Haken)

(Haken)

@Mon
@Tue
@Weds
@Thur
@Fri
@Sat
@Sun 

boolean

0..1

These DOW indicators are used to specify to which days the rate value is valid.

  • "true"
  • "false"
(Haken)(Haken)

Not supported for now - please send one Rate element per day.

(Fehler)

(Fehler)

@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. 


(Haken)(Haken)

(Haken)

(Haken)

@UnitMultiplierNumeric1to9991The number of RateTimeUnits that the rate amount is based upon.





OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | BaseByGuestAmts
0..1A collection of base charges by number of guests.
(Haken)(Haken)
(Haken)(Haken)

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. 


(Haken)(Haken)

(Haken)

(Haken)

@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)

(Haken)(Haken)

Only supported:

"10" = Adult

(Haken)

(Haken)

@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. 


(Haken)(Haken)

(Haken)

(Haken)

@AmountAfterTax 

Money

0..1

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


(Haken)(Haken)We do not accept 0,00 amounts

(Haken)

(Haken)

@AmountBeforeTaxMoney0..1The total amount not including any associated tax (e.g., sales tax, VAT, GST or any associated tax). 
(Haken)(Haken)We do not accept 0,00 amounts(Haken)(Haken)
@CodeStringLength1to160..1The code associated with this base charge.
(Haken)(Haken)
(Haken)(Haken)
@CurrencyCodeAlphaLength31The code specifying a monetary unit. Use ISO 4217, three alpha code"EUR"




OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts
0..1A collection of charges that apply to for additional occupants.
(Fehler)(Haken)
(Haken)(Haken)
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount
1..nCollection 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.
(Fehler)(Haken)
(Haken)(Haken)
@AgeQualifyingCode OTA_CodeType AQC0..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
@AgeQualifyingCode = 8 => Child
@AgeQualifyingCode = 9 => Teenager
@AgeQualifyingCode = 10 => Adult

(Fehler)(Haken)

Only supported:

"10" = Adult

(Haken)(Haken)
@MinAgeNumeric1to9990..1The minimum age to qualify for AgeQualifyingCode.
(Fehler)(Haken)
(Fehler)(Fehler)
@MaxAgeNumeric1to9990..1The maximum age to qualify for AgeQualifyingCode.
(Fehler)(Haken)
(Fehler)(Fehler)

@Amount

Money1A monetary amount.
(Fehler)(Haken)
(Haken)(Haken)
@CurrencyCodeAlphaLength31Currency code. Use ISO 4217, three alpha code.
(Fehler)(Haken)is taken from the rate plan set up on the PMS(Haken)(Haken)
@TaxInclusiveBoolean0..1Indicates whether taxes are included in @Amount
  • "true"
  • "false"
(Haken)(Haken)
(Fehler)(Fehler)
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | AdditionalGuestAmounts | AdditionalGuestAmount | Taxes
0..1Description of tax details over additional guest amount.The element will appear only if BaseByGuestAmt / @AmountAfterTax is also present for the resp rate update.(Haken)(Haken)
(Fehler)(Fehler)
@AmountMoney0..1A monetary amount of the tax
(Haken)(Haken)
(Fehler)(Fehler)
@CurrencyCodeAlphaLength30..1The code specifying a monetary unit. Use ISO 4217 three-alpha code.
(Haken)(Haken)
(Fehler)(Fehler)
OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | RateDescription
0..1Description of rate being uploaded.
(Haken)(Haken)


@NameStringLength1to640..1In 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(Haken)(Haken)


OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | RateDescription | Text
1

(Haken)(Haken)


@TextFormatNMTOKEN0..1Indicates the format of text used in the description e.g. unformatted or html.
  • PlainText
  • HTML
(Haken)(Haken)


OTA_HotelRatePlanNotifRQ | RatePlans | RatePlan | Rates | Rate | UniqueID
0..nThe unique identifier element allows trading partners to uniquely identify each Rate being uploaded, for traceable transactions.
(Fehler)(Haken)
(Fehler)(Fehler)

@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.


(Fehler)(Haken)
(Fehler)(Fehler)

@ID_Context

StringLength1to32

1

Used to identify where the ID comes from.

"protelIO"(Fehler)(Haken)
(Fehler)(Fehler)

@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

(Fehler)(Haken)
(Fehler)(Fehler)

OTA_HotelRatePlanNotifRS

Element | @Attribute

Type

Num

Description

Comments + Content outboundpAIROnPremComments + Content inbound

pAIR

OnPrem

OTA_HotelRatePlanNotifRS


1

Root element of the message.


(Haken)(Haken)
(Haken)(Haken)

@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.


(Haken)(Fehler)
(Haken)(Haken)

@CorrelationID

StringLength1to64

1

Used to match result messages (*RS) to request messages (*RQ) in asynchronous communication patterns. Therefore mandatory.


(Haken)(Haken)
(Haken)(Haken)

@TimeStamp 

dateTime

1

Timestamp of the transaction. 

Version="3.000"(Haken)(Haken)
(Haken)(Haken)

@Version 

decimal

0..1

Version of the message

"2020-07-15T11:02:51Z"(Haken)(Haken)
(Haken)(Haken)

@PrimaryLangID

language

0..1

Default language of the property.

"en"




OTA_HotelRatePlanNotifRS | Errors
0..1Mandatory ONLY if Success element is not sent.
Only needed if RQ message was unsuccessful.

(Haken)(Haken)
(Haken)(Haken)

OTA_HotelRatePlanNotifRS | Errors | Error


1..99

Collection of Error elements


(Haken)(Haken)
(Haken)(Haken)

@Type 

OTA_CodeType EWT

1

Mandatory. Refer to the OTA Code List: Error Warning Type (EWT).

(Haken)(Haken)
(Haken)(Haken)

@Code 

OTA_CodeType ERR

0..1 

Refers to the OTA Code List: Error Codes (ERR). 

(Haken)(Haken)
(Haken)(Haken)

@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. 


(Haken)(Haken)


@ShortText

StringLength1to64

0..1

Describes the occurring error in short.

"A rate plan 'XY' was not found for the code provided."(Haken)(Haken)
(Haken)(Haken)

OTA_HotelRatePlanNotifRS | Success 


1

Mandatory if no Errors were sent.
This is the annotation that the rateplan batch was received successfully. It could be combined with warning messages if some of the rate plans in the batch had issues.


(Haken)(Haken)
(Haken)(Haken)
OTA_HotelRatePlanNotifRS | RatePlanCrossRefs
0..1Container for Rate Plan Cross Reference elements.
(Haken)(Fehler)
(Haken)(Fehler)
OTA_HotelRatePlanNotifRS | RatePlanCrossRefs | RatePlanCrossRef
1..nCross Reference between sending system and responding system Rate Plan Codes.
(Haken)(Fehler)
(Haken)(Fehler)
@RequestRatePlanCodeStringLength1to640..1Identification of the sending system´s rate plan code
(Haken)(Haken)
(Haken)(Fehler)
@ResponseRatePlanCodeStringLength1to640..1Identification of responding system´s rate plan code 
(Haken)(Haken)
(Haken)(Fehler)
OTA_HotelRatePlanNotifRS | Warnings
0..1Can be used in conjunction with Success message to define a business error.
(Haken)(Haken)
(Haken)(Fehler)

OTA_HotelRatePlanNotifRS | Warnings | Warning


1..999

Collection of Warning elements.


(Haken)(Haken)
(Haken)(Fehler)

@Type 

OTA_CodeType EWT

1

Mandatory. Refer to the OTA Code List: Error Warning Type (EWT).

(Haken)(Haken)
(Haken)(Fehler)

@Code 

OTA_CodeType ERR

0..1 

Refers to the OTA Code List: Error Codes (ERR). 

(Haken)(Haken)
(Fehler)(Fehler)

@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. 


(Haken)(Haken)
(Fehler)(Fehler)

@ShortText

StringLength1to64

0..1

Describes the occurring error in short.

"A rate plan 'XY' was not found for the code provided."(Haken)(Haken)
(Haken)(Fehler)
  • Keine Stichwörter