Rates for OBP Update


pmsXchange receives updates for rates via the OTA_HotelRateAmountNotifRQ message. pmsXchange will process the updates and respond with the OTA_HotelRateAmountNotifRS message as a receipt of success or failure.

OTA_HotelRateAmountNotifRQ

The OTA_HotelRateAmountNotifRQ message is used to update the rates for one or more room types for a single hotel.

Each OTA_HotelRateAmountNotifRQ message should have a single RateAmountMessages element which indicates the hotel to update using the RateAmountMessages @HotelCode attribute. The RateAmountMessages \ RateAmountMessage elements will contain the updates to process over a date range. There can be several RateAmountMessage updates per request, however each request should be limited to one hotel.

The basic structure of the message is as follows:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2005-08-01T09:30:47-05:00" Version="1.0" EchoToken="echo-abc123"> <POS> <Source> <RequestorID Type="22" ID="PMS1"/> </Source> </POS> <RateAmountMessages HotelCode="ABC"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="200.00"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount AgeQualifyingCode="10" Amount="20"/> <AdditionalGuestAmount AgeQualifyingCode="8" Amount="10"/> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> <RateAmountMessage> <!-- Content omitted --> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>

StatusApplicationControl

This element must appear once in each RateAmountMessage element. The StatusApplicationControl element is used to specify the room type and rate code for which the update applies. 

The @InvTypeCode attribute is required and the @RatePlanCode attribute is optional. It is possible to have 1 or more pmsXchange room types linked to the same InvTypeCode + RatePlanCode combination and the update will be applied to all room types found with matching values. 

Rate

The Rate element is used to determine the dates for which the update applies. The dates affected by the update are controlled by the mandatory Rate @Start and Rate @End attributes. Use the Mon, Tue, Wed, Thur, Fri, Sat or Sun attributes to apply an update to specific days of the week. If any of these day of week attributes is present, then they must all be present. For example it is not possible to specify just the Mon and Fri attribute and not include the other 5.

BaseByGuestAmt

Rates should be sent through in the BaseByGuestAmt element. Either @AmountAfterTax or @AmountBeforeTax must be included and must contain the rate as a positive decimal value (i.e. a rate of 200 should be 200.00).

Only adult occupants are supported (@AgeQualifyingCode="10"). Child occupancy rates are not supported (see: AdditionalGuestAmounts).

An adult occupancy must be included in the @NumberOfGuests attribute and must be a positive integer value between 1 and 5. Sending more an occupancy of more than 5 will return an Error response.

If an occupancy level is missing, The Channel Manager will backfill the missing occupancy levels with the provided rate (i.e. only @NumberOfGuests="3" is received, the rate for this occupancy level will also apply to 1 and 2 guests).

In order to set Rates it is mandatory to specify the @CurrencyCode. At present pmsXchange DOES NOT perform currency conversion and the Rate amount specified will be applied directly to SiteMinder.

AdditionalGuestAmounts

Additional guest charges can be sent through in the AdditionalGuestAmounts. This includes both adult and child guests.

OTA_HotelRateAmountNotifRQ Specification

Elements and attributes marked with Number=1 or more will always be sent. 0 means that the element or attribute is optional, while a second numeric value or 'n' indicates the element or attribute can repeat (where n = no limit)"

Element

Number

Description

OTA_HotelRateAmountNotifRQ

1

Root node

@EchoToken

1

Globally unique identifier for the request, the value will be returned in the response EchoToken.

@Version

1

Current version is 1.0

@Timestamp

1

Timestamp of the request in xml dateTime format

OTA_HotelRateAmountNotifRQ / POS / Source / RequestorID

1

This identifies the system which is sending the Rates. This element must appear in the first Source element.

@Type

1

Fixed at 22 (ESRP)

@ID

1

The ID used will be agreed by the trading partners and remain the same throughout the messages.

OTA_HotelRateAmountNotifRQ / RateAmountMessages

1

Contains rates for a given hotel

@HotelCode

1

Hotel code of the property whose rate is being updated

RateAmountMessages / RateAmountMessage

1..n

Rates to be updated

RateAmountMessage / StatusApplicationControl

1

Contains room identification information

@RatePlanCode

0..1

Identifies the rate to be updated

@InvTypeCode 

1

Identifies the room to be updated

RateAmountMessage / Rates / Rate

1..n

Contains the timespan the update applies to and the currency code if this is a rate update

@CurrencyCode

1

Standard 3 character ISO currency code of the rate eg "AUD"

@Start, @End

1

The start and end date of the rate plan in xml date format. End date is inclusive.

End date cannot be more than 750 days in the future.

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

0..1

"0" or "1". Optional, if not set all are assumed to be set to true

The day of the week indicators are used to communicate which days of the week the update pertains to. For example, if mon, tue and weds are set to "1", and the other days are set to "0", the rate will only be updated for Monday, Tuesday and Wednesday.

If one is sent they must all be sent.

Rate / BaseByGuestAmts

1

Contains information about the rates.

BaseByGuestAmts / BaseByGuestAmt

1..5

Contains the rate amounts per room

@AgeQualifyingCode

1

pmsXchange supports the following values:

10 = Adult

@NumberOfGuests

1

Number of guests included in the rate.

Supports 1 through 5.

@AmountAfterTax

0..1

One and only one of @AmountAfterTax and @AmountBeforeTax must be included if BaseByGuestAmts is present. Must be a positive decimal value. i.e. a rate of 200 should be 200.00

@AmountBeforeTax

0..1

One and only one of @AmountAfterTax and @AmountBeforeTax must be included if BaseByGuestAmts is present. Must be a positive decimal value. i.e. a rate of 200 should be 200.00

Rate / AdditionalGuestAmounts

0..1

Additional charges for extra guests for a given age qualifying code

AdditionalGuestAmounts / AdditionalGuestAmount

1..2

Mandatory if AdditionalGuestAmounts is present

@AgeQualifyingCode

1

pmsXchange supports the following values:

10 = Adult

8 = Child

@Amount

1

Extra guest charge amount

OTA_HotelRateAmountNotifRS

This message is returned to the PMS in response to the OTA_HotelRateAmountNotifRQ message. It notifies whether the OTA_HotelRateAmountNotifRQ message has been processed successfully.

Example of Success Response

1 2 3 <OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2005-08-01T09:30:47+08:00" EchoToken="echo-abc123"> <Success/> </OTA_HotelRateAmountNotifRS>

Example of Error Response

1 2 3 4 5 <OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2005-08-01T09:30:47+08:00" EchoToken="echo-abc123"> <Errors> <Error Type="3" Code="392">Cannot finder hotelier ABC</Error> </Errors> </OTA_HotelRateAmountNotifRS>

OTA_HotelRateAmountNotifRS Specification

Element

Number

Description

Element

Number

Description

OTA_HotelRateAmountNotifRS

1

Root element

@EchoToken

1

Return the EchoToken from the request message.

@Version

1

Current version is 1.0

@TimeStamp

1

Time of the transaction.

OTA_HotelRateAmountNotifRS / Success

0..1

Will only be present if the request processed successfully. The Errors node will not be present if the Success node is present

OTA_HotelRateAmountNotifRS / Errors

0..1

Contains a list of errors if the request failed to process.

Errors / Error

1..n

Will be at least one node if there is an Errors Node.

@Type

1

Mandatory if Error present.
Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are used

3: Biz rule (The business rules for the request message were not met)
4: Authentication error (If username and password are not authenticated)
6: Authorization error (If authenticated username is not authorized to alter hotel data)
10: Required field missing (If xml does not meet the schema, i.e missing request fields or invalid data types.)

@Code

0..1

See Error Handling


XML Samples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2005-08-01T09:30:47-05:00" Version="1.0" EchoToken="echo-abc123"> <POS> <Source> <RequestorID Type="22" ID="PMS1"/> </Source> </POS> <RateAmountMessages HotelCode="ABC"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="200.00"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount AgeQualifyingCode="10" Amount="20"/> <AdditionalGuestAmount AgeQualifyingCode="8" Amount="10"/> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2005-08-01T09:30:47-05:00" Version="1.0" EchoToken="echo-abc123"> <POS> <Source> <RequestorID Type="22" ID="PMS1"/> </Source> </POS> <RateAmountMessages HotelCode="ABC"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="200.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="3" AmountAfterTax="300.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="4" AmountAfterTax="400.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="5" AmountAfterTax="500.00"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2005-08-01T09:30:47-05:00" Version="1.0" EchoToken="echo-abc123"> <POS> <Source> <RequestorID Type="22" ID="PMS1"/> </Source> </POS> <RateAmountMessages HotelCode="ABC"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="200.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="3" AmountAfterTax="300.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="4" AmountAfterTax="400.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="5" AmountAfterTax="500.00"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount AgeQualifyingCode="10" Amount="20"/> <AdditionalGuestAmount AgeQualifyingCode="8" Amount="10"/> </AdditionalGuestAmounts> </Rate> <Rate CurrencyCode="AUD" Start="2010-01-11" End="2010-01-20" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="110.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="220.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="3" AmountAfterTax="330.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="4" AmountAfterTax="440.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="5" AmountAfterTax="550.00"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount AgeQualifyingCode="10" Amount="20"/> <AdditionalGuestAmount AgeQualifyingCode="8" Amount="10"/> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2005-08-01T09:30:47-05:00" Version="1.0" EchoToken="echo-abc123"> <POS> <Source> <RequestorID Type="22" ID="PMS1"/> </Source> </POS> <RateAmountMessages HotelCode="ABC"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K" RatePlanCode="BAR"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="200.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="3" AmountAfterTax="300.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="4" AmountAfterTax="400.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="5" AmountAfterTax="500.00"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount AgeQualifyingCode="10" Amount="20"/> <AdditionalGuestAmount AgeQualifyingCode="8" Amount="10"/> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> <RateAmountMessage> <StatusApplicationControl InvTypeCode="DLX" RatePlanCode="BFAST"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10" Mon="1" Tue="1" Weds="1" Thur="1" Fri="1" Sat="1" Sun="1"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="110.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="2" AmountAfterTax="220.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="3" AmountAfterTax="330.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="4" AmountAfterTax="440.00"/> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="5" AmountAfterTax="550.00"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount AgeQualifyingCode="10" Amount="25"/> <AdditionalGuestAmount AgeQualifyingCode="8" Amount="15"/> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2005-08-01T09:30:47-05:00" Version="1.0" EchoToken="echo-abc123"> <POS> <Source> <RequestorID Type="22" ID="PMS1"/> </Source> </POS> <RateAmountMessages HotelCode="ABC"> <RateAmountMessage> <StatusApplicationControl InvTypeCode="A1K"/> <Rates> <Rate CurrencyCode="AUD" Start="2010-01-01" End="2010-01-10"> <BaseByGuestAmts> <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="100.00"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>