Requests
Syntax
The OTA_HotelRateAmountNotifRQ
message uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
EchoToken="message_ID"
TimeStamp="timestamp"
Version="3.0"
NotifType="[Overlay|Delta|Remove]"
NotifScopeType="[ProductRate]">
<POS>
<Source>
<RequestorID ID="partner_key"/>
</Source>
</POS>
<RateAmountMessages HotelCode="HotelID">
<RateAmountMessage>
<StatusApplicationControl Start="YYYY-MM-DD"
End="YYYY-MM-DD"
Mon="boolean_value"
Tue="boolean_value"
Weds="boolean_value"
Thur="boolean_value"
Fri="boolean_value"
Sat="boolean_value"
Sun="boolean_value"
InvTypeCode="RoomID"
RatePlanCode="PackageID"
RatePlanType="[26]" />
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AmountBeforeTax="float"
AmountAfterTax="float"
CurrencyCode="currency"
NumberOfGuests="integer"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount Amount="float"
AgeQualifyingCode="[10|8]"
MaxAge="integer"/>
</AdditionalGuestAmounts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Elements and attributes
The OTA_HotelRateAmountNotifRQ
message has the following elements and
attributes:
Element / @Attribute | Occurrences | Type | Description |
---|---|---|---|
OTA_HotelRateAmountNotifRQ | 1 | Complex element | The root element for a rates message. |
OTA_HotelRateAmountNotifRQ / @xmlns | 0..1 | string (URI) | The XML namespace. |
OTA_HotelRateAmountNotifRQ / @EchoToken | 1 | string | A unique identifier for this request message. This value is returned
in the response message. Allowed characters are a-z , A-Z , 0-9 , _ (underscore) , and - (dash) . |
OTA_HotelRateAmountNotifRQ / @TimeStamp | 1 | DateTime | The creation date and time of this message. |
OTA_HotelRateAmountNotifRQ / @Version | 1 | decimal | The OpenTravel message version. |
OTA_HotelRateAmountNotifRQ / @NotifType | 0..1 | enum | The type of notification to apply to every
Valid values are: To understand how these attributes work, check out the examples.
|
OTA_HotelRateAmountNotifRQ / @NotifScopeType | 0..1 | enum | The scope of the Valid values are:
|
OTA_HotelRateAmountNotifRQ / POS | 0..1 | POS | A container for specifying the partner account for this message (typically used if your backend provides price feeds for multiple partner accounts). |
OTA_HotelRateAmountNotifRQ / POS / Source | 1 | Source | Required if <POS> is present. A container for the
<RequestorID> . |
OTA_HotelRateAmountNotifRQ / POS / RequestorID | 1 | RequestorID | Required if <POS> is present. Defines the partner
account. |
OTA_HotelRateAmountNotifRQ / POS / RequestorID / @ID | 1 | string | The partner account for this message. This string value is the
"Partner key" value listed on
the
Account settings page in Hotel Center.
Note: If you have a backend that provides feeds for multiple
accounts, this value needs to match the |
OTA_HotelRateAmountNotifRQ / RateAmountMessages | 1 | RateAmountMessages | A collection of <RateAmountMessage> elements that
define rates. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / @HotelCode | 1 | string | The unique identifier for the property. This value must match the Hotel ID specified using <id> in the <listing> element in the Hotel List Feed. The Hotel ID is also listed in Hotel Center. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage | 1..n | RateAmountMessage | A container for setting prices for a room rate (a room type and rate plan combination across a date range). |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl | 1 | StatusApplicationControl | Defines the date range, as well as the identifiers for the room type
(InvTypeCode ) and rate plan (RatePlanCode ). |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Start | 1 | Date | The starting date (based on the property's time zone), inclusive, of the date range. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End | 1 | Date | The ending date (based on the property's time zone), inclusive, of the
date range. Must be equal or greater than the start value.
If start and end are equal, the update applies
to that date. Note that Google supports up to three years of data. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Mon | 0..1 | boolean | Set to true or 1 to explicitly include
Mondays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue | 0..1 | boolean | Set to true or 1 to explicitly include
Tuesdays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds | 0..1 | boolean | Set to true or 1 to explicitly include
Wednesdays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur | 0..1 | boolean | Set to true or 1 to explicitly include
Thursdays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri | 0..1 | boolean | Set to true or 1 to explicitly include
Fridays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat | 0..1 | boolean | Set to true or 1 to explicitly include
Saturdays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun | 0..1 | boolean | Set to true or 1 to explicitly include
Sundays.
If set to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @InvTypeCode | 1 | string | The unique identifier for the inventory (room type). This value maps
to <RoomID> in a Transaction (Property Data) message. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanCode | 1 | string | A unique identifier for the rate plan. This identifier maps to the
<PackageID> in a Transaction (Property Data)
message. The rate plan is further defined and referred to
in <StatusApplicationControl> in both
<OTA_HotelRateAmountNotifRQ> and
<OTA_HotelAvailNotifRQ> messages. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanType | 0..1 | string | An identifier that indicates the type of ARI pricing model that
applies to this pricing update. This should only be specified, using a
value of 26 , when using the LOS-based pricing model. Exclusion
of this attribute indicates this is a per-date pricing
update. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates | 0..1 | Rates | Container for a collection of <Rate> elements. If
NotifType is "Remove" , this element must not
be specified. Otherwise, this element must be specified exactly once. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate | 1 | Rate | Container for a collection of <BaseByGuestAmts>
elements. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @RateTimeUnit | 0..1 | String | The unit by which length of stay is specified. The only supported
value is "Day" , meaning the length of stay will be
specified in days.
To use LOS-based pricing,
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier | 0..1 | Integer | The number of RateTimeUnits which compose the length of
stay for this rate.
For example, if The occupancy rate(s) specified under this To use LOS-based pricing,
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts | 1 | BaseByGuestAmts | Container for a collection of base charges. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt | 1..n | BaseByGuestAmt | Specifies room prices in a specified currency. The price can be
per-occupancy by using multiple <BaseByGuestAmt>
elements, each with a different value for NumberOfGuests .
Otherwise, the price is applicable for a maximum number of occupants
defined by NumberOfGuests . |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountBeforeTax | 0..1 | float |
The daily price of the room rate before taxes and fees. Both If you are using promotions, the
discount is applied to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountAfterTax | 0..1 | float | The daily price of the room rate after including applicable taxes and
fees. If AmountAfterTax is specified, separate per-property
<TaxFeeInfo> messages don't need to be sent. This
attribute can be used in combination with AmountBeforeTax
to provide both base and total rates that can be shown to users in
certain regions.
Warning: If you are using promotions, we strongly
recommend against using Note: If |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @CurrencyCode | 1 | enum | The ISO 4217 (3) alpha character code for a specific monetary unit.
Refer to the list of supported currencies. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @NumberOfGuests | 0..1 | integer | Maximum number of guests that can be accommodated by this rate.
Defaults to 2 guests if not provided.
Note that if |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts | 0..1 | AdditionalGuestAmounts | Container for a collection of charges for additional guests.
This syntax is useful if additional guest or child rates
change based on the date. Consider using the more efficient
For example, suppose that base rates are specified for 1 and 2 adults.
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount | 0..n | AdditionalGuestAmount | Specifies prices based on the type of guest, specified through
AgeQualifyingCode and, if applicable, the guest's age
specified through MaxAge .
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode | 1 | enum | Defines the type of additional guest, either adult or child. Valid
options are:
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge | 0..1 | integer | MaxAge must be specified when
AgeQualifyingCode is 8 . It must not be
specified when AgeQualifyingCode is 10 .
Specifying a value of Values greater than Multiple child age ranges can be specified through separate
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount | 1 | float | Amount before taxes and fees added to the base rate for each
additional guest.
Taxes and fees that depend on occupants' ages must be specified through
the |
Examples
This section provides code examples that highlight how to:
- Set up base rates and total rates
- Add, overlay, and remove rates
- Add, overlay, and remove additional guest amounts
- Set up LOS-based rates
- Add, overlay, and remove LOS-based rates
When you set the add
, overlay
, or remove
values, the date ranges can
the same or different depending on your goals. For example, you can use
overlay
to set only a few weeks for the December holidays rather than the
entire range set for the "Add rate" message. This will replace the occupancy
rates for only this period.
Per-date pricing
For a given room and rate plan there can be a maximum of 50 occupancy rates per property. If the rates are same for all occupancies, you should just send the maximum occupancies with the required price. By doing this, Google infers that the lower occupancies also receives the same base rate.
Set up base rates and total rates
Example 1
Base rate (without taxes or fees) for default occupancy (double). In this
model, taxes and fees for the property must be defined using a
<TaxFeeInfo>
message. The base rate will be more
prominent for users searching from certain regions.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Example 2
Base and total rate for default occupancy (double). In this model, taxes
and fees shouldn't be defined separately using <TaxFeeInfo>
messages. The base rate will be more prominent for users searching from
certain regions.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Example 3
Total rate (with taxes and fees) for multiple occupancies. In this model,
taxes and fees shouldn't be defined separately using <TaxFeeInfo>
messages.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountAfterTax="100.00" CurrencyCode="USD" NumberOfGuests="1"/> <BaseByGuestAmt AmountAfterTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> <BaseByGuestAmt AmountAfterTax="120.00" CurrencyCode="USD" NumberOfGuests="3"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Example 4
Base and total rate for multiple room types and rate plans across different date ranges.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> <RateAmountMessage> <StatusApplicationControl Start="2020-05-01" End="2020-05-31" InvTypeCode="RoomID_2" RatePlanCode="PackageID_2"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="200.00" AmountAfterTax="220.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Add, overlay, and remove rates
There is a limit of 5000 products—room type and package
combinations— per property. Use the Overlay
or Remove
notification
types to remove previously defined products.
Add rates
Set NotifType
to Delta
to add per-occupancy rates for
RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31. Note that
Google supports up to three years of data.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD" NumberOfGuests="1"/> <BaseByGuestAmt AmountBeforeTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> <BaseByGuestAmt AmountBeforeTax="120.00" CurrencyCode="USD" NumberOfGuests="3"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Overlay rates
Set NotifType
to Overlay
to delete all per-occupancy
rates for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31
and replace them with the newly specified per-occupancy rates.
For example, if this message was sent after the "Add rates" message, the occupancy 1, 2, and 3 rates would be deleted, and only the new occupancy 1 rate would be stored. You can also set a shorter date range (e.g.: 2021-12-20 and 2021-12-31) to replace only some of the occupancy rates on certain dates, such as for holidays.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Overlay" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="200.00" CurrencyCode="USD" NumberOfGuests="1"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Remove rates
Set NotifType
to Remove
to delete all per-occupancy
rates for RoomID_1 and PackageID_1 between 2021-10-20 and 2021-12-31.
For example, if this message was sent after either of the other example messages, no per-occupancy rates would be stored.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate">> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Add, overlay, and remove additional guest amounts
Add amounts
Set NotifType
to Delta
to add base rates for
occupancy 1 and 2, and additional guest amounts, for RoomID_1 and
PackageID_1 between 2021-10-20 and 2021-12-31.
Additional guest amounts will be applied on top of a base rate which will be determined by the occupancy in a user search. The user specified occupancy must be within RoomID_1's capacity.
In this example, additional guest amounts will be applied as:
- $5 for children in the age range 0 to 10 (inclusive).
- $10 for children in the age range 11 to 17 (inclusive).
- $20 for adults.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD" NumberOfGuests="1"/> <BaseByGuestAmt AmountBeforeTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount Amount="5.00" AgeQualifyingCode="8" MaxAge="10" /> <AdditionalGuestAmount Amount="10.00" AgeQualifyingCode="8" MaxAge="17" /> <AdditionalGuestAmount Amount="20.00" AgeQualifyingCode="10" /> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Overlay amounts
Set NotifType
to Overlay
to delete all per-occupancy
rates and all additional guest amounts for RoomID_1 and PackageID_1
between 2021-10-20 and 2021-12-31 and replace them with the newly
specified per-occupancy rates and additional amounts.
For example, if this message was sent after the "Add rates" message, the base occupancy 1 and 2 rates would be deleted, and only the new base occupancy 1 rate would be stored. The previous set of additional guest amounts would be deleted, and only the new set of amounts would be stored. Additional guest amounts would now use the new occupancy 1 rate as the base rate. Note that after this update, there are no additional guest charges defined for children.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Overlay" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="200.00" CurrencyCode="USD" NumberOfGuests="1"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount Amount="30.00" AgeQualifyingCode="10" /> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Remove amounts
Set NotifType
to Delete
to delete all per-occupancy
base rates, and all additional guest amounts for RoomID_1 and PackageID_1
between 2021-10-20 and 2021-12-31.
For example, if this message was sent after either of the other example messages, no per-occupancy base rates, or additional guest amounts would be stored.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate">> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Remove only additional guest amounts
Set NotifType
to Delta
with an empty
<AdditionalGuestAmounts>
element to delete all
additional guest amounts for RoomID_1 and PackageID_1 without affecting
base rates between 2021-10-20 and 2021-12-31.
For example, if this message was sent after either of the other example messages, only the base amounts would be stored.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <AdditionalGuestAmounts/> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
LOS-based pricing
Set up LOS-based rates
Example 1
Set rates for 1, 2, and 3 night stays starting on 2020-05-18. The total rate for 1, 2 and 3 night stays in this example would be $100, $180 and $240 respectively.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-18" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> <Rates> <Rate UnitMultiplier="1" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> <Rate UnitMultiplier="2" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="90.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> <Rate UnitMultiplier="3" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="80.00" CurrencyCode="USD" NumberOfGuests="2" /> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Add, overlay, and remove LOS-based rates
Add length(s) of stay
With LOS-based pricing, a Delta
operation allows rates to be
incrementally updated for the check-in date ranges indicated in
<StatusApplicationControl>
and for all lengths of stay
indicated by each child Rate
element's
UnitMultiplier
.
For each applicable check-in date and length of stay, all occupancy rates must be specified.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-18" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> <Rates> <Rate UnitMultiplier="3" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="80.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Overlay length(s) of stay
With LOS-based pricing, an Overlay
operation
replaces the rates for all lengths of stay of the product and check-in date
range indicated in <StatusApplicationControl>
.
With this message, per-occupancy rates for all lengths of stay on the specified arrival dates will be removed and replaced by a double-occupancy rate that is only defined for length of stay 3.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0" NotifType="Overlay" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-18" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> <Rates> <Rate UnitMultiplier="3" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="80.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Remove length(s) of stay
With LOS-based pricing, a Remove
operation removes the rates
for all lengths of stay of the product and check-in date range indicated in
<StatusApplicationControl>
.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Responses
Syntax
The OTA_HotelRateAmountNotifRS
message uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
TimeStamp="timestamp"
EchoToken="echo_token"
Version="3.0">
<!-- Either Success or Errors will be populated. -->
<Success/>
<Errors>
<Error Type="12" Status="NotProcessed" ShortText="issue_code">issue_description</Error>
</Errors>
</OTA_HotelRateAmountNotifRS>
Elements and attributes
The OTA_HotelRateAmountNotifRS
message has the following
elements and attributes:
Element / @Attribute | Occurrences | Type | Description |
---|---|---|---|
OTA_HotelRateAmountNotifRS | 1 | Complex element | The root element for a response to an availability message. |
OTA_HotelRateAmountNotifRS / @TimeStamp | 1 | DateTime | The creation date and time of this message. |
OTA_HotelRateAmountNotifRS / @EchoToken | 1 | string | The unique identifier from the associated
OTA_HotelRateAmountNotifRQ message. |
OTA_HotelRateAmountNotifRS / Success | 0..1 | Success | Indicates that the OTA_HotelRateAmountNotifRQ message was
processed successfully.
Either |
OTA_HotelRateAmountNotifRS / Errors | 0..1 | Errors | A container for one or more issues encountered while processing the
OTA_HotelRateAmountNotifRQ message.
Either |
OTA_HotelRateAmountNotifRS / Errors / Error | 1..n | Error | The description of an error encountered while processing the
OTA_HotelRateAmountNotifRQ message. Details on these
errors can be found in Feed Status Error Messages. |
OTA_HotelRateAmountNotifRS / Errors / Error / @Type | 1 | integer | The OpenTravel Alliance EWT (Error Warning Type) associated with the
error. Only the value 12 (Processing exception) is used. |
OTA_HotelRateAmountNotifRS / Errors / Error / @Code | 1 | integer | The OpenTravel Alliance ERR (Error Code) associated with the error.
Only the value 450 (Unable to process) is used. |
OTA_HotelRateAmountNotifRS / Errors / Error / @Code | 1 | enum | The status of the original request. Only the value
NotProcessed is used. |
OTA_HotelRateAmountNotifRS / Errors / Error / @ShortText | 1 | string | The Google identifier for the issue. Details on these errors can be found in Feed Status Error Messages. |
Examples
Success
The following is a response to a successfully processed OTA_HotelRateAmountNotifRQ message.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0"> <Success/> </OTA_HotelRateAmountNotifRS>
Errors
The following is a response to a OTA_HotelRateAmountNotifRQ message not processed due to errors.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0"> <Errors> <Error Type="12" Code="450" Status="NotProcessed" ShortText="8001">Example</Error> </Errors> </OTA_HotelRateAmountNotifRS>