Requests
Syntax
TheOTA_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_account_name"/> </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"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="float" AmountAfterTax="float" CurrencyCode="currency" NumberOfGuests="integer"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Elements & 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:
|
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 of the date range. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End | 1 | Date | The ending date 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. |
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 / 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 / BaseGuestAmts | 1 | BaseByGuestAmts | Container for a collection of base charges. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / 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 / BaseGuestAmts / BaseByGuestAmt / @AmountBeforeTax | 0..1 | Float |
The daily price of the room rate before taxes and fees. If you are using promotions, the
discount is applied to |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / 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 do not 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 / BaseGuestAmts / BaseByGuestAmt / @CurrencyCode | 1 | Enum | The ISO 4217 (3) alpha character code for a specific monetary unit. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseGuestAmts / BaseByGuestAmt / @NumberOfGuests | 0..1 | Integer | Maximum number of guests for which a room is intended. Defaults to 2 if not provided. |
Examples
This section provides code examples that highlight how to:
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
Add rates
Set NotifType
to Delta to add per-occupancy rates for
RoomID_1 and PackageID_1 between 2020-05-18 and 2020-05-23.
<?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-23" 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 2020-05-18 and 2020-05-23
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.
<?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-23" 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 Delete to delete all per-occupancy
rates for RoomID_1 and PackageID_1 between 2020-05-18 and 2020-05-23.
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="2020-05-19T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate">> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Responses
Syntax
TheOTA_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 & Attributes
TheOTA_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="2020-05-13T20: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="2020-05-13T20:50:37-05:00" Version="3.0"> <Errors> <Error Type="12" Code="450" Status="NotProcessed" ShortText="8001">Example</Error> </Errors> </OTA_HotelRateAmountNotifRS>