> 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/content/content-update/interface-requirements.md).

# Interface requirements

### Connectivity options

&#x20;

The following connectivity options are available to clients of the HCD XML Update Interface.

&#x20;

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Connection Type</td><td valign="top">Hardware Requirements</td><td valign="top">Encryption</td><td valign="top">Other Requirements</td></tr><tr><td valign="top"><p>HTTP</p><p>(unsecured)</p></td><td valign="top">None</td><td valign="top">None</td><td valign="top"><p>Connection to the Internet. Not recommended if sensitive information is to be transmitted.</p><p>Unsecured HTTP is only available in non- production environments.</p></td></tr><tr><td valign="top"><p>Client SSL</p><p>(Internet based / HTTPS)</p></td><td valign="top">None</td><td valign="top">Software Based</td><td valign="top">SSL toolkit, RSA cipher license, connection to the Internet</td></tr><tr><td valign="top"><p>VPN</p><p>(Internet based)</p></td><td valign="top">IPSEC capable device</td><td valign="top">Hardware Based</td><td valign="top">Connection to the Internet</td></tr><tr><td valign="top">Frame Relay (Dedicated line)</td><td valign="top">Frame-relay capable router</td><td valign="top">Not Required</td><td valign="top">None</td></tr></tbody></table>

&#x20;

### SOAP envelope

&#x20;

The SOAP Envelope houses the entire message structure to be delivered. It is made up of an optional Header element, and a required Body element.

&#x20;

**Note**: RateGain has moved from an RPC based format to a document-literal format. Previous versions of this specification reflect the RPC based format so please be sure to note the differences in this version. The changes are minimal as noted below:

&#x20;

Namespace updates (xmlns attributes in the \<Envelope> element)

Structure of the \<Body> element

<br>

### SOAP header

&#x20;

The SOAP Header element is the location of message meta-data. Information such as username, password, action code, and transaction ID are present in the various SOAP Header elements and attributes.  Username and password will correspond to an account created on the RateGain customer portal (my.pegs.com). This account will need to be enabled for HCD updates via Web services in order for the messages to be processed.

&#x20;

While the SOAP specification allows the Header to be an optional element, RateGain requires it to be present in each request. Further, the use of the ebXML:MessageHeader element, and the wsse:Security elements are also required. The following links point to the schema files for the ebXML:MessageHeader element and the wsse:Security element. Clients can reference these schemas to determine required elements and attributes.

&#x20;

·       <http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd>

·       <http://schemas.xmlsoap.org/ws/2002/12/secext>

&#x20;

The following table illustrates specific values that should be present in these elements.

&#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">Element</td><td valign="top">Attribute</td><td valign="top">R / O / C</td><td valign="top">Usage</td><td valign="top">Description</td></tr><tr><td valign="top">MessageHeader</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">SOAP-ENV:mustUnderstand</td><td valign="top">R</td><td valign="top"> </td><td valign="top">Indicates “true” or “false”</td></tr><tr><td valign="top"> </td><td valign="top">version</td><td valign="top">R</td><td valign="top">2.0</td><td valign="top">Indicates the ebXML version</td></tr><tr><td valign="top">From</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top"> </td></tr><tr><td valign="top">PartyId</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top">Supplier Name</td></tr><tr><td valign="top">To</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top"> </td></tr><tr><td valign="top">PartyId</td><td valign="top"> </td><td valign="top">R</td><td valign="top">RateGain</td><td valign="top"> </td></tr><tr><td valign="top">CPAId</td><td valign="top"> </td><td valign="top">R</td><td valign="top">HCDUpdateInterface</td><td valign="top">The destination system</td></tr><tr><td valign="top">ConversationId</td><td valign="top"> </td><td valign="top">R</td><td valign="top"><em>some value</em></td><td valign="top">This value can be used by the client to group a set of transactions into a “conversation”</td></tr><tr><td valign="top">Service</td><td valign="top"> </td><td valign="top">R</td><td valign="top">HCDUpdateInterface</td><td valign="top">The destination service</td></tr><tr><td valign="top"> </td><td valign="top">type</td><td valign="top">R</td><td valign="top">4.0</td><td valign="top">Defines the version of the eb:Service element</td></tr><tr><td valign="top">Action</td><td valign="top"> </td><td valign="top">R</td><td valign="top">Add Update Upsert Delete</td><td valign="top">Defines the action to be performed on the property</td></tr><tr><td valign="top">MessageData</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top"> </td></tr><tr><td valign="top">MessageId</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top">Unique Record ID</td></tr><tr><td valign="top">Timestamp</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top"> </td></tr><tr><td valign="top">Security</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top">Defines the wsse Security element</td></tr><tr><td valign="top">UsernameToken</td><td valign="top"> </td><td valign="top">R</td><td valign="top"> </td><td valign="top">Defines the UsernameToken element</td></tr><tr><td valign="top"> </td><td valign="top">Username</td><td valign="top">R</td><td valign="top"><em>user name</em></td><td valign="top">The client’s username will be defined by RateGain</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">Element</td><td valign="top">Attribute</td><td valign="top">R / O / C</td><td valign="top">Usage</td><td valign="top">Description</td></tr><tr><td valign="top"> </td><td valign="top">Password</td><td valign="top">R</td><td valign="top"><em>password</em></td><td valign="top">The client’s password will be defined by RateGain</td></tr></tbody></table>

&#x20;

### SOAP body

&#x20;

The SOAP Body contains the message payload. In the case of the HCD XML Update Interface, this is an OTA\_HotelDescriptiveContentNotifRQ OTA XML document.

&#x20;

### Example of SOAP envelope&#x20;

&#x20;

The following example SOAP Envelope shows the use of the ebXML Header and wsse Security elements within the SOAP Header.

&#x20;

```
<env:Envelope 
xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:ns1="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"
xmlns:ns2="http://www.opentravel.org/OTA/2003/05" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header><ns2:MessageHeader ns1:mustUnderstand="false" ns2:version="2.0"
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">
<ns2:From>
<ns2:PartyId>Customer</ns2:PartyId>
</ns2:From>
<ns2:To><ns2:PartyId>RateGain</ns2:PartyId>
</ns2:To>
<ns2:CPAId>ODDUpdateInterface</ns2:CPAId>
<ns2:ConversationId>SIHtoODD1</ns2:ConversationId>
<ns2:Service ns2:type="4.0">ODDUpdateInterface</ns2:Service>
<ns2:Action>UPSERT</ns2:Action>
<ns2:MessageData>
<ns2:MessageId>IDTPAPA</ns2:MessageId>
<ns2:Timestamp>2024-10-15T13:01:31</ns2:Timestamp></ns2:MessageData>
</ns2:MessageHeader>
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<UsernameToken>
<Username> RateGain assigned interface email address</Username>
<Password> RateGain assigned password </Password>
</UsernameToken>
</Security>
</env:Header>
<env:Body>
<HotelDescriptiveContents>
.
.
.
</HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
</env:Body>
</env:Envelope>
```

&#x20;

### Action codes

The action codes are defined in the SOAPHeader/eb:MessageHeader/eb:Action element. These codes, in conjunction with the “overwrite” and “removal” flags within the OTA\_HotelDescriptiveContentNotifRQ element, define what will happen to the property data within the message. The supported action codes are: Add, Update, Upsert, and Delete.

&#x20;

### Add

An action code of “Add” is equivalent to a database “insert.”

&#x20;

If the action code is “Add”, all required elements and attributes must be present in the OTA\_HotelDescriptiveContentNotifRQ message. If the message fails validation, an error will be returned to the client, and no data will be stored.

&#x20;

If the action code is “Add”, and the property is found to exist in the HCD, an error will be returned, and the property data will not be modified.

&#x20;

When a property is being added to the HCD, it must contain a minimum set of data elements in order to be considered valid. The following table describes these data requirements.

&#x20;

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Element</td><td valign="top">Attribute</td></tr><tr><td valign="top">OTA_HotelDescriptiveContentNotiflRQ</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Version</td></tr><tr><td valign="top"> </td><td valign="top">PrimaryLangID</td></tr><tr><td valign="top">HotelDescriptiveContents</td><td valign="top"> </td></tr><tr><td valign="top">HotelDescriptiveContent</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">BrandCode</td></tr><tr><td valign="top"> </td><td valign="top">HotelCode</td></tr><tr><td valign="top"> </td><td valign="top">CurrencyCode</td></tr><tr><td valign="top"> </td><td valign="top">HotelName</td></tr><tr><td valign="top">HotelInfo</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">HotelStatus</td></tr><tr><td valign="top"> </td><td valign="top">HotelStatusCode</td></tr><tr><td valign="top">CategoryCodes</td><td valign="top"> </td></tr><tr><td valign="top">LocationCategory</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top">SegmentCategory</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top">HotelCategory</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top">Services</td><td valign="top"> </td></tr><tr><td valign="top">Service</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top"> </td><td valign="top">ProximityCode</td></tr><tr><td valign="top">FacilityInfo</td><td valign="top"> </td></tr><tr><td valign="top">GuestRooms</td><td valign="top"> </td></tr></tbody></table>

<br>

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Element</td><td valign="top">Attribute</td></tr><tr><td valign="top">GuestRoom</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">ID</td></tr><tr><td valign="top">Amenities</td><td valign="top"> </td></tr><tr><td valign="top">Amenity</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">RoomAmenityCode</td></tr><tr><td valign="top">Policies</td><td valign="top"> </td></tr><tr><td valign="top">Policy</td><td valign="top"> </td></tr><tr><td valign="top">PolicyInfo</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">CheckInTime</td></tr><tr><td valign="top"> </td><td valign="top">CheckOutTime</td></tr><tr><td valign="top"> </td><td valign="top">UsualStayFree CutoffAge</td></tr><tr><td valign="top"> </td><td valign="top">KidsStayFree</td></tr><tr><td valign="top">TaxPolicies</td><td valign="top"> </td></tr><tr><td valign="top">TaxPolicy</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Percent</td></tr><tr><td valign="top"> </td><td valign="top">Amount</td></tr><tr><td valign="top"> </td><td valign="top">ChargeUnit</td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top">AreaInfo</td><td valign="top"> </td></tr><tr><td valign="top">Attractions</td><td valign="top"> </td></tr><tr><td valign="top">Attraction</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">AttractionCategoryCode</td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top"> </td><td valign="top">ID</td></tr><tr><td valign="top">ContactInfos</td><td valign="top"> </td></tr><tr><td valign="top">ContactInfo</td><td valign="top"> </td></tr><tr><td valign="top">Addresses</td><td valign="top"> </td></tr><tr><td valign="top">Address</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">UseType</td></tr><tr><td valign="top">AddressLine</td><td valign="top"> </td></tr><tr><td valign="top">Cityname</td><td valign="top"> </td></tr><tr><td valign="top">StateProv</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">StateCode</td></tr><tr><td valign="top">Countryname</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">Code</td></tr><tr><td valign="top">Phones</td><td valign="top"> </td></tr><tr><td valign="top">Phone</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">PhoneLocationType</td></tr><tr><td valign="top"> </td><td valign="top">PhoneTechType</td></tr><tr><td valign="top"> </td><td valign="top">Phonenumber</td></tr></tbody></table>

&#x20;

&#x20;

### Update

An action code of “Update” is equivalent to a database “update”. If the action code is “Update” and the property is not found to exist in the HCD, an error will be returned to the client.

Messages with an action code of “Update” will examine the “overwrite” and various “removal” flags that can be present in the OTA message structure to determine what course of action to take with the data in the request.

When the “overwrite” attribute in the HotelDescriptiveContent element is set to “true” (false is assumed if the attribute is not present) it causes a “refresh” of the data to occur. This means that ALL property data will be removed and re-inserted with the data in the request transaction. Any child “removal” attributes will be ignored.

&#x20;

Care must be taken to ensure that the resulting property record continues to meet the minimum required data elements as defined by RateGain. If this is not the case, an error will be returned, and the property data will not be updated.

&#x20;

The “removal” attribute will work in a similar way. Any “removal” attribute that is set to “true” (false is assumed if the attribute is not present), causes the property data at that element level to be removed. This means that any data in the element containing the “removal” attribute, AND all the data of that element’s children, will be removed.

&#x20;

Again, care must be taken to ensure that the resulting property record continues to meet the minimum required data elements as defined by RateGain. If this is not the case, an error will be returned, and the property data will not be updated.

&#x20;

Sample of an Update message with Removal Flag = true:

```
 <OTA_HotelDescriptiveContentNotifRQ xmlns="
http://www.opentravel.org/OTA/2003/05
" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
 PrimaryLangID="EN">
<HotelDescriptiveContents>
<HotelDescriptiveContent CurrencyCode="USD" TimeZone="CST" BrandCode="ZZ" HotelCode="AA123" HotelName="Test Hotel" Overwrite="false">
<FacilityInfo>
<MeetingRooms>
<MeetingRoom RoomName="Meeting Room Name" Removal="true"/>
</MeetingRooms>
</FacilityInfo>
</HotelDescriptiveContent>
</HotelDescriptiveContents>
</OTA_HotelDescriptiveContentNotifRQ>
```

&#x20;

### Upsert

An action code of “Upsert” is equivalent to a database “Update” or “Insert”.

&#x20;

If an action code is “Upsert”, a search for the property’s information will be performed. If the property is found, the data contained in the “Upsert” message will be used to update the HCD. If not found and the minimum required data set is not met, an error will be returned to the client. If the minimum required data set is met, then the property will be added to the HCD.

&#x20;

Please refer to the action code of “Update” for the guidelines of the “Overwrite” and “Removal” flags.

&#x20;

### Delete

An action code of “Delete” is equivalent to a database “delete”.

&#x20;

If the action code is “Delete”, only the following attributes will be validated:

&#x20;

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Element</td><td valign="top">Attribute</td></tr><tr><td valign="top">OTA_HotelDescriptiveContentNotifRQ</td><td valign="top"> </td></tr></tbody></table>

<br>

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"> </td><td valign="top">Version</td></tr><tr><td valign="top"> </td><td valign="top">PrimaryLangID</td></tr><tr><td valign="top">HotelDescriptiveContents</td><td valign="top"> </td></tr><tr><td valign="top">HotelDescriptiveContent</td><td valign="top"> </td></tr><tr><td valign="top"> </td><td valign="top">BrandCode</td></tr><tr><td valign="top"> </td><td valign="top">HotelCode</td></tr></tbody></table>

&#x20;

&#x20;

All other elements and attributes, including those of the HotelDescriptiveContent element, will be ignored. If the action code is “Delete”, and the property is not found in the database, an error will be returned to the client.

&#x20;

When sending an action code of Delete, the property will be deleted for all languages when the primary language code = EN (English). When sending an action code of Delete and the language code is not EN (English), only the data associated to the provided language code will be deleted.

&#x20;

### Standard element formats&#x20;

### Date and time

All references to Date, Time and Timestamp will use the format required by the OpenTravel Specification, which follows ISO standard 8601:

&#x20;

**Date:** The Date will be the Calendar Date format represented as \[YYYY]-\[MM]-\[DD] where \[YYYY] indicates a four-digit year, 0000 through 9999, \[MM] indicates a two-digit month of the year, 01 through 12, and \[DD] indicates a two-digit day of that month, 01 through 31. Example: 2024-10-15

&#x20;

**Time:** The Time will be the 24-hour clock (extended format) represented as \[hh]:\[mm]:\[ss] where \[hh] refers to a zero-padded hour between 00 and 24 (where 24 is only used to notate midnight at the end of a calendar day), \[mm] refers to a minute between 00 and 59, and \[ss] refers to a second between 00 and 59.  Example: 22:59:01

&#x20;

**Timestamp**                                                                                                                            The Timestamp will be a combination of date and time represented as \[YYYY]-\[MM]-\[DD]T\[hh]:\[mm]:\[ss] where the time designator \[T] is used to show the start of the time component. Example: 2024-10-15T17:59:01

&#x20;

### Specifications for currency amounts

Only positive currency amounts are allowed within the message. Negative currency amounts are not allowed therefore will generate an error if present within any of the amount attributes.

Positive amount

·      Positive ten U.S. dollars would appear in the message as: 10.00

### Specifications for decimal amounts

RateGain uses the Decimal Fixed Point for all decimal usages.

In fixed-point numbers, DECIMAL(p,s), the decimal point is fixed at a specific place, regardless of the value of the number. When you specify a column of this type, you write its precision (p) as the total number of digits it can store, from 1 to 32. You write its scale (s) as the total number of digits that fall to the right of the decimal point. All numbers with an absolute value less than 0.5\*10-s have the value zero. The largest absolute value of a variable of this type that you can store without an error is 10p-s - 10-s&#x20;

For example: 5,2 will allow the following values – 12345 or 123.45

&#x20;

### General business rules

Business Rules are specific rules defined by RateGain that further clarify the use of a particular element and/or attribute within the OpenTravel XML message.

The following rules apply to transactions submitted to RateGain:

· Any Elements and/or Attributes present in the message that are not defined within this document will be ignored by RateGain.

o    One exception – Text Element under descriptions will only be allowed once, even if the parent element is not expected by RateGain.

&#x20;

· Unless otherwise specifically stated within the document the OpenTravel schema definitions, limitations, and usage will be enforced.

· Only English based property information will be distributed to the GDSs.

· Enforcement of English as the first message received for action code of Add. If English is not the first message processed for an Add, all records for the property will be rejected until English is the first message received within a Transactional message or Batch.

· All amount attributes are assumed to be in the property’s native currency.

· When sending the Feature element, the parent element Service must contain the Code attribute of 47 (equals Accessible Code) or 80 (equals Security). If not present, an error will be returned and no information will be updated.

· Within the Feature element, upon providing Physically Challenged (Feature/@AccessibleCode) or Security (Feature/@SecurityCode) information, only one of these code types should be present. If both are present, an error will be returned and no information will be updated. Multiple Feature elements may be sent in the same message to update more than one of these information types.

· Within the Service element, upon providing Hotel Amenity (Service/@Code), Business Services (Service/@BusinessServiceCode), or Meal Plan (Service/@MealPlanCode) information, only one of these code types should be present. If more than one of these is sent, an error will be returned and no property information will be updated. Multiple Service elements may be sent in the same message to update more than one of these information types.

· Default information will be applied in HCD for specific OpenTravel Hotel Amenities, Room Amenities, Business Services and Recreation facilities based on the description of the code in the OpenTravel code list. The three types of default are as follows:

o    Whether it is on-site or offsite. For example, if Hotel Amenity HAC.64 (On-site parking) is provided, the amenity will always be recorded as on-site in HCD (i.e. the same as setting Service/@Proximity=”1”). HCD will ignore any other value of Proximity that may be supplied.

o    Whether it is always complimentary or whether charges can be specified. For example, if Business Service BUS.52 (Incoming fax complimentary) is provided, RateGain will automatically set this service to be complimentary (Service/@Included=”true”) and will ignore any charges that may be supplied.

o    Whether operating times/schedules can be specified. For example, if Hotel Amenity HAC.33 (Elevators) is supplied, any operating schedules will be ignored because they are not appropriate for this type of amenity.

&#x20;

Refer to the “HCD OTA Supported Codes” spreadsheet for the defaults that will be applied for specific codes in the HAC, RMA, BUS and RST code lists.

· If Attraction/@AttractionCategoryCode is of type “Airport”, then Attraction/@Code must contain the corresponding three letter airport code. This is the only manner in which the attribute Code will be used.

&#x20;

· All free form text fields allow bulleted lists.

&#x20;

· The following elements contain an attribute labeled ID. This is a unique identifying value assigned by the creating system. The ID attribute will be used to reference a primary-key value within our database.

o    Attraction

o    GuestRoom

o    MeetingRoom

o    Restaurant

o    CancelPenalty (\*\*\*Note: attribute is labeled PolicyCode\*\*\*

&#x20;

· At minimum, one RoomAmenityCode is required per each GuestRoom.

· The Code attribute under the GuestRoom element can be used to group amenities that are not specific to an individual GuestRoom. RateGain supports use of the codes ALL and SOME under the Code attribute. When the Code equates to ALL or SOME, this will identify that the amenities are found in ALL rooms or SOME rooms. When the Code does not equal ALL or SOME, the amenities will only be associated with the specified guest room.

· The OpenTravel codes are only allowed once per property unless otherwise specified within the usage of the attribute.

· The PrimaryLangID attribute denotes the language that the data within the rest of the message. The following rules will apply to PrimaryLangID:

o    When sending an action code of Delete, the property will be deleted for all languages when the primary language code = EN (English)

o    When sending an action code of Delete and the language code is not EN (English), then only the data associated to the language will be deleted.

· Chain, Brand, and PID codes must be sent in upper case.

· HotelStatusCode attribute allows the status of 5 (Test). “Test” properties will be excluded from all HCD content extracts and will only be accessible by distributors when the exact brand and PID are included within the request.

· HotelStatusCode attribute allows the status of 3 (PreOpening). RateGain will ignore the HotelStatus attribute (Bookable / NonBookable flag) and default to NonBookable. This will allow the property to be visible but not receive booking request.

· When the Action code is Add the Overwrite and Removal attributes are ignored.

· There can be multiple GuaranteePayment policies per property, but only one for each GuaranteeCode within a specified date range is allowed.

· The ExistsCode attribute is used to help determine if an “amenity” code is available at the property. When the ExistsCode attribute equals 1, RateGain will include the “amenity”. When the ExistsCode attribute does not equal 1, the “amenity” will not be added. If the client chooses to not use this attribute or leave this attribute empty, RateGain will add all “amenities” associated to the empty attribute.

· When providing an update message to modify the address (specifically AddressLine attribute) information, all previous AddressLine must be provided including the line which includes the modified piece of data. For example, if 5 lines were previously provided, then all 5 lines will need to be provided to update the AddressLine data.

· At least one property phone number is required with a PhoneLocationType=”4” and a PhoneTechType=”1”.

· The Removal flag found under ContactInfo element will only apply to removal of the phone data found under the Phone element.

· A property status to Delete will not be able to be modified. Please contact your RateGain representative to update the property from a delete status.

· A property status to Sanctioned will not be able to be modified. Please see section 2.8 for more details or you may contact your RateGain representative for further details.

· TimeZone attribute houses the information for both the time zone and GMT offset.  RateGain allows for each individual piece of information to be submitted together using a semi-colon between the two or sent individually. However, when only sending the GMT offset the semi-colon is needed and must be the first character.

· Effective dates (Start, End and DOW) for Guarantee Payment Policies with the same GuaranteeCode value may not overlap. RateGain will return an error if two or more Guarantee Payment policies are sent with same date range & DOW, or an update sent would result in an overlap.

o For example: If a policy is sent for 10/15/2024 through 12/31/2024 for Monday through Friday, a second policy may be sent for the same date range for Sat and Sun, but the same date range with the same Days of Week will not be allowed.

· The Guarantee Deposit Policy date ranges are independent of the Method of Payment Policy date ranges.

· End date under the Guarantee Payment cannot be before the Start date.

· Basic child policies, such as “1 child aged 12 or under allowed free per adult” can be defined using structured fields using the element HotelDescriptiveContent/Policies/Policy/PolicyInfo.  However, if more complex child policies are required – such as “1 child aged 12 or under allowed free for every 2 paying guests up to a maximum of 2 free children” then the child policy can be extended using the TPA extension: HotelDescriptiveContents/TPA\_Extensions/TPA\_Extension/ChildPolicyExtended.  The ChildPolicyExtended element is intended to supplement the basic child policy information in PolicyInfo, not to replace it.

### Special characters and trademarks

#### Special Characters

With the allowance of multi byte languages, special characters will also be supported in HCD. Special characters can range from the simple umlaut to more complex character sets. The following link is to the Unicode Code Chart for Symbols and Special Punctuation (special characters). Suppliers can reference this site to determine the requirements for each character.

&#x20;

<http://www.unicode.org/charts/symbols.html>

&#x20;

Suppliers will need to modify their process to match the HTML Unicode Standards. The standard for sending special characters to RateGain is as follows: \&#xcode;.

Using the charts found in the above link, suppliers will be able to ascertain the "code" value for a special character.

&#x20;

For more information, the following link contains the guidelines on the use of the Unicode standard in conjunction with the XML.

&#x20;

<http://www.w3.org/TR/unicode-xml>

#### Trademarks

It is the responsibility of the hotel company inputting data into the HCD to ensure that trademarks used are authorized for use by their owners prior to input.

#### AAA Trademark Usage

Input of the American Auto Association (AAA) trademarks and references to diamond ratings are prohibited by AAA. Messages containing any reference to AAA will be returned as an error to the supplier. None of the data in that message will be processed.

&#x20;


---

# 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:

```
GET https://developer.rategain.com/content/content-update/interface-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
