> For the complete documentation index, see [llms.txt](https://developer.rategain.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.rategain.com/ultradirect/ultradirect-transaction-sets-xml/single-property-availability/request-message-format.md).

# Request message format

<table data-header-hidden><thead><tr><th valign="top">Element Path</th><th>Attribute</th><th>Occ</th><th>Type</th><th>Notes</th></tr></thead><tbody><tr><td valign="top"><p> </p><p>HotelML/Head/Process</p></td><td> </td><td><p> </p><p>1</p></td><td> </td><td> </td></tr><tr><td valign="top"> </td><td><p> </p><p>DataPath</p></td><td><p> </p><p>1</p></td><td><p> </p><p>Char</p></td><td><p> </p><p>Set to "/HotelML/Form/PropertyInformation”</p></td></tr><tr><td valign="top"> </td><td><p> </p><p>Function</p></td><td><p> </p><p>1</p></td><td><p> </p><p>Char</p></td><td><p> </p><p>Set to “TI_PropertyInformationV1_1”</p></td></tr><tr><td valign="top"> </td><td><p> </p><p>Token</p></td><td><p> </p><p>1</p></td><td><p> </p><p>Char</p></td><td><p> </p><p>Unique ID for the transaction generated by the system sending the transaction.</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Head/Route</p></td><td> </td><td><p> </p><p>1</p></td><td> </td><td> </td></tr><tr><td valign="top"> </td><td><p> </p><p>Source</p></td><td><p> </p><p>1</p></td><td><p> </p><p>Char 2-3</p></td><td><p> </p><p>Identifies the organization sending the transaction. The value to use will be provided during the implementation project.</p></td></tr><tr><td valign="top"> </td><td><p> </p><p>Destination</p></td><td><p> </p><p>1</p></td><td><p> </p><p>Char 2</p></td><td><p> </p><p>Always set to “00” (i.e. zero zero).</p></td></tr><tr><td valign="top"> </td><td><p> </p><p>RequestedAccuracy</p></td><td><p> </p><p>0..1</p></td><td><p> </p><p>Enum</p></td><td><p> </p><p>This specifies whether the response can be generated from the UltraDirect transaction cache. Note: this is a preference, since it can be overridden by the hotel chain. Valid values are:</p><p> </p><p>“CacheOrSource” (default if attribute is omitted) - First attempt to respond with data from the cache, but if data is not available, deliver the request to the source (hotel CRS) for processing.</p><p> </p><p>“SourceOnly” - Bypass the cache and return availability from the source</p><p>(hotel CRS) only.</p><p> </p><p>“CacheOnly” - Only return data from the cache. If data is not available in the cache for the requested parameters, then an error will be returned</p><p> </p><p>It is strongly recommended to set this to “CacheOrSource”.</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ Property</p></td><td> </td><td><p> </p><p>1</p></td><td> </td><td> </td></tr><tr><td valign="top"> </td><td><p> </p><p>PropertyCode</p></td><td><p> </p><p>1</p></td><td><p> </p><p>Char</p></td><td><p> </p><p>Chain and property code, separated by a semi-colon – e.g. “UI;AB1234”</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ Property/Locale</p></td><td> </td><td><p> </p><p>0..1</p></td><td> </td><td><p> </p><p>This is used to request the room/rate descriptions in the response to be in a specific language.</p></td></tr></tbody></table>

<br>

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"> </td><td valign="top"><p> </p><p>Language</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Char 2</p></td><td valign="top"><p> </p><p>Language code – e.g. “FR”</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Country</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char</p></td><td valign="top"><p> </p><p>Optional country name – e.g. “France”.</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate</p></td><td valign="top"> </td><td valign="top"><p> </p><p>1</p></td><td valign="top"> </td><td valign="top"><p> </p><p>Specifies rate selection criteria.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>VersionCompliance</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Enum</p></td><td valign="top"><p> </p><p>Specifies the version of the transaction being used. All new implementations should set this to “Enhanced_V1”.</p><p> </p><p>In older implementations of this message where the VersionCompliance is not sent, some of the elements &#x26; attributes listed in the request and response messages will not be supported.</p></td></tr><tr><td valign="top"> </td><td valign="top">  Usage</td><td valign="top">  0..1</td><td valign="top">  Enum</td><td valign="top"><p>  Values are:</p><p>  “PreBook” – re-check the rate and/or availability status prior to making a booking</p><p>  “CacheShopping” – availability transactions that are automatically generated by the demand partner’s system to fill and/or refresh a local cache.</p><p>  “ProductDetails” – availability transaction to obtain additional information about a room/rate during the booking flow</p><p>“UserShopping” – availability transaction generated by an end-user event (e.g. searching on a website)</p><p>  “Shop2Push” (RateGain Internal Use Only)</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>MatchingQualifier</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Enum.</p></td><td valign="top"><p> </p><p>Valid only when at least one rate plan code</p><p>(RateCriteria/RateSearch/@RatePlanCode) is included in the request.</p><p> </p><p>If “ExactAndPublic” the CRS should return the requested rate plans (if available) plus the public rates.</p><p> </p><p>If “Exact” the CRS should return rates for the requested rate plans only. An</p><p>Error will be returned when the requested rate is not found or available.</p><p> </p><p>If “ExactOrPublic” the CRS should return rates for the requested rate plans when available, or return public rates if requested rate plans are not available.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>CalculationMethod</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Enum.</p></td><td valign="top"><p> </p><p>Specifies the preferred rate calculation method to use when a rate change occurs across the length of stay. Valid values are:</p><p> </p><p>“First” – rate for the first nightly “Highest” – highest nightly rate “Average” – average nightly rate</p><p>“Frequent” – most frequently occurring rate</p><p> </p><p>When this element is not included on the request, the CRS will apply their default method to calculate the rate range.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Commissionable</p><p>Status</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Enum.</p></td><td valign="top"><p> </p><p>Specifies whether commissionable and/or non-commissionable rate are required.</p><p> </p><p>“Commissionable” - Return commissionable rates only</p><p> </p><p>“NonCommissionable” - Return non-commissionable rates only</p></td></tr></tbody></table>

<br>

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"><p> </p><p>“Both” - Return both non-commissionable and commissionable rates. This is the default if not sent.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>ReturnUnavailable</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Boolean</p></td><td valign="top"><p> </p><p>If “true”, closed properties will be included in the response.</p><p> </p><p>If “false”, closed properties will not be included in the response.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>NumberOfAdults</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>Number or adults per room. This attribute is deprecated – new implementation using transaction version “Enhanced_V1” should use the GuestCount element instead.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>NumberOfChildren</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>Number of children per room. This attribute is deprecated, as</p><p>NumberOfAdults.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>NumberOfRooms</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>Total number of rooms required, which is used when checking availability. The prices in the response will be per room.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>NumberOfBeds</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>Preferred number of beds per room.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>BedType</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Enum</p></td><td valign="top"><p> </p><p>Indicates the preferred bed type. Values are:</p><p> </p><p>Single, Twin, Double, King, Queen, Futon, MurphyBed, SofaBed, TatamiMats, Rollaway, Crib</p><p> </p><p>This attribute is only processed when version is “Enhanced_V1”.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>ReturnRateChanges</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Boolean</p></td><td valign="top"><p> </p><p>Preference for whether response should include each distinct rate if it changes during the stay.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>RoomCategory</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Enum</p></td><td valign="top"><p> </p><p>Indicates the preferred quality of room. The following values are most commonly used:</p><p> </p><p>Deluxe, Superior, Standard, Moderate, Economy, Premium</p><p> </p><p>The attribute also supports the following values but these are generally not used in this context:</p><p> </p><p>FirstClass, Budget, Upscale, Luxury, MeetingConvention, ResidentialApartment, Resort, CorporateBusinessTransient, AllSuite, ExtendedStay, Tourist, Efficiency</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate/GuestCount</p></td><td valign="top"> </td><td valign="top"><p> </p><p>0..M</p></td><td valign="top"> </td><td valign="top"><p> </p><p>This element specifies the number of adults and children (optionally including child counts by age).</p><p> </p><p>GuestCount must occur once (and only once) with Type=”Adult”.</p><p> </p><p>It can also occur once with Type=”Child” if no Age attribute is supplied.</p></td></tr></tbody></table>

<br>

&#x20;

&#x20;

&#x20;

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"><p>Alternatively, it can multiple times for Type=”Child” when an Age attribute is specified.</p><p> </p><p>This element is only processed when transaction version is “Enhanced_V1”. It should be used instead of the NumberOfAdults and NumberOfChildren attributes of PropertyRate because it allows the age of each child to be specified.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Type</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Enum</p></td><td valign="top"><p> </p><p>Values “Adult” or “Child”</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Count</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>Number of guests of this type</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Age</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>The optional age of the guest. Only applicable when Type=”Child”.</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate/ExtraBed</p></td><td valign="top"> </td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"> </td><td valign="top"><p> </p><p>This is used to request rollaway beds or cots/cribs. The element can occur up to three times - once for each type of extra bed – as defined by the Type attribute.</p><p> </p><p>This element is only processed when transaction version is “Enhanced_V1”.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Type</p></td><td valign="top"> </td><td valign="top"><p> </p><p>Enum</p></td><td valign="top"><p> </p><p>Type of extra bed required. Valid values are:</p><p> </p><p>AdultRollAway, ChildRollAway, Crib</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Number</p></td><td valign="top"> </td><td valign="top"><p> </p><p>Integer</p></td><td valign="top"><p> </p><p>The number of beds of this type</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate/AgentInfo</p></td><td valign="top"> </td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"> </td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Number</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Char 8</p></td><td valign="top"><p> </p><p>Travel agent identifier – often the IATA number.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Type</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Enum.</p></td><td valign="top"><p> </p><p>Identifies the type of travel agent identifier. Values are: “ARC” , “IATA”, “TIDS”, “CLIA”, “AAA”, “GDS”, “Other”.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>City</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 3</p></td><td valign="top"><p> </p><p>Originating Agent’s City. Not normally required.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Country</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 2</p></td><td valign="top"><p> </p><p>Originating Agent’s Country Code (ISO Standard Codes). Not normally required.</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate/Amenity</p></td><td valign="top"> </td><td valign="top"><p> </p><p>0..6</p></td><td valign="top"> </td><td valign="top"><p> </p><p>This is used to request specific room or rate features, such as breakfast</p><p>(“BRKFST”) or a non-smoking room (“NSMK”) etc.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Code</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Char 6</p></td><td valign="top"><p> </p><p>Amenity code. This is a string for Enhanced V2. For V1 please see Appendix 1b</p><p>for possible values .<br>(*Only Applicable for “Enhanced_V2”)</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation</p><p>/RateCriteria/DateRange</p></td><td valign="top"> </td><td valign="top"><p> </p><p>1</p></td><td valign="top"> </td><td valign="top"> </td></tr></tbody></table>

<br>

&#x20;

&#x20;

&#x20;

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"> </td><td valign="top"><p> </p><p>InDate</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Date</p></td><td valign="top"><p> </p><p>The arrival date in format “2011-12-24”</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>OutDate</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Date</p></td><td valign="top"><p> </p><p>The departure date in format “2011-12-27”</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation</p><p>/PropertyRate/PriceRange</p></td><td valign="top"> </td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"> </td><td valign="top"><p> </p><p>Specifies the required maximum and/or minimum rate (per room per night). Rarely used.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Currency</p></td><td valign="top"><p> </p><p>1</p></td><td valign="top"><p> </p><p>Char</p></td><td valign="top"><p> </p><p>ISO currency code – e.g. “USD”</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Max</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Decimal</p></td><td valign="top"><p> </p><p>Maximum required daily rate per room - e.g. “150.00”</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>Min</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Decimal</p></td><td valign="top"><p> </p><p>Minimum required daily rate per room - e.g. “150.00”</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate/RateSearch</p></td><td valign="top"> </td><td valign="top"><p> </p><p>0..15</p></td><td valign="top"> </td><td valign="top"><p> </p><p>The RateSearch element is used to request one or more specific rate plan codes. This is used in conjunction with PropertyRate/@MatchingQualifier to specify whether the CRS should return the requested rate plans and/or public rates.</p><p> </p><p>If this element is not present, the CRS may return any available rate plan codes it wishes to promote.</p></td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>RatePlanCode</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 10</p></td><td valign="top"><p> </p><p>Rate access code.</p><p> </p><p>This can be used to request special types of rate, such as specific negotiated or corporate rates. If this functionality is required, the actual RatePlanCode and RatePlanType to send will be provided to the affiliate by the hotel chain or RateGain as part of the UltraDirect implementation project.</p><p> </p><p>Also, many hotels recognize the following standard (generic) rate plan codes. These all require RatePlanType=”Standard”.</p><p> </p><p>"PRO" = Promotional "COR" = Corporate "WKD" = Weekend "RAC" = Rack</p><p>"SNR" = Senior</p><p>"GOV" = Government "MIL" = Military "PKG" = Package</p><p>“WEB” = Web/Internet</p><p>“CLB” = Club</p><p>“FAM” / “FPM” = Family “CVN” or “CNV” = Convention "TVL” = Travel Agent</p></td></tr></tbody></table>

<br>

&#x20;

&#x20;

&#x20;

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top">"TUR" = Tour</td></tr><tr><td valign="top"> </td><td valign="top"><p> </p><p>RatePlanType</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char</p></td><td valign="top"><p> </p><p>Specifies the type of RatePlanCode. Values are:</p><p> </p><p>Corporate, Negotiated, NetRate, Standard</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation/ PropertyRate/RateSearch/AutoInfo</p></td><td valign="top"><p> </p><p>Code</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 25</p></td><td valign="top"><p> </p><p>Auto Frequent Traveler Number</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation</p><p>/PropertyRate/RateSearch/CorpInfo</p></td><td valign="top"><p> </p><p>Code</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 25</p></td><td valign="top"><p> </p><p>Corporate Account Number. This should only be sent when</p><p>RateSearch/@RatePlanType=”Corporate”.</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation</p><p>/PropertyRate/RateSearch/ FlyerInfo</p></td><td valign="top"><p> </p><p>Code</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 25</p></td><td valign="top"><p> </p><p>Frequent Flyer Number</p></td></tr><tr><td valign="top"><p> </p><p>HotelML/Form/PropertyInformation</p><p>/PropertyRate/RateSearch/ FreqGuest</p></td><td valign="top"><p> </p><p>Code</p></td><td valign="top"><p> </p><p>0..1</p></td><td valign="top"><p> </p><p>Char 25</p></td><td valign="top"><p> </p><p>Frequent Guest Number</p></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.rategain.com/ultradirect/ultradirect-transaction-sets-xml/single-property-availability/request-message-format.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
