Developer Docs
  • Our Products
    • Channel Manager
      • Integration and Onboarding Flow
      • RG Bridge - Supply (Push)
        • Integration Overview
          • Vision of Integration
            • Commercial value and business case
          • Information Data flow
            • One way integration
            • Two Way integration – ARI Broadcast and Reservation fetch
            • Information delivery mechanism
          • Technical feasibility of integration
            • Test property setup
            • Sample reservation data
          • RG Bridge Setup
          • Contract
          • Project Plan
          • Certification
          • Monitoring and after sales support
          • Integration checklist
        • Interface Specifications – Availability and Rates Notification Service
          • RG Bridge Integration Process
          • Intended Audience
          • Typographical Conventions
          • Technical Overview
          • Operations
            • Availability Notification
              • OTA_HotelAvailNotifRQ
                • Change in Inventory count
                • Change in availability status and Restrictions
              • OTA_HotelAvailNotifRS
              • XML Usage Specification
            • Rate Change Notification
              • OTA_HotelRateAmountNotifRQ
              • XML Usage Description
              • OTA_HotelRateAmountNotifRS
              • XML Usage Specification
            • Points to remember
        • Interface Specifications – Reservation Notification Service
          • RG Bridge integration process
          • Intended audience
          • Typographical conventions
          • Technical overview
          • Operations
            • Reservation Notification
              • OTA_HotelResNotifRQ
              • XML Usage specification
              • Sample Reservation Messages
              • OTA_HotelResNotifRS
              • XML Usage specification
          • Points to remember
          • Code Lists
      • RG Bridge - Reservation Retrieval (Pull)
        • Technical overview
        • Operations
          • Reservation Retrieval
            • OTA_ReadRQ
            • XML Usage specification
            • OTA_ResRetrieveRS
            • XML Usage specification
          • Reservation Confirmation
            • OTA_NotifReportRQ
            • XML Usage specification
            • OTA_NotifReportRS
            • XML Usage specification
        • Code Lists
      • Direct Connect - Demand (Push)
        • Introduction
        • Interface Specifications – ARI Service
          • Technical Overview
          • Operation: Property List
            • HotelPropertyListGetRQ
            • HotelPropertyListGetRS
            • Test Use Cases
            • FAQ
          • Operation: Product List
            • HotelProductListGetRQ
            • HotelProductListGetRS
            • Test Use Cases
            • FAQ
          • Operation: ARI Get
            • HotelARIGetRQ
            • HotelARIGetRS
            • Test Use Cases
            • FAQ
          • Operation: ARI Update
            • HotelARIUpdateRQ
            • HotelARIUpdateRS
            • Test Use Cases
            • FAQ
          • Points to remember
          • Code Lists
        • Interface Specifications – Reservation Notification Service
          • Technical overview
            • Communication protocols
            • General design
            • Authentication
          • Operation: Reservation
            • OTA_HotelResNotifRQ
            • OTA_HotelResNotifRS
            • Test use cases
            • FAQ
    • Smart Distribution
      • Onboarding process
      • Certification - Demand
      • Authentication Method
      • Book and Cancel Reservation
        • Transaction Header Formats
        • Book API
          • Book Reservation
          • Cancel Reservation
          • Booking Reservation Request Message Format
          • Booking Reservation Response Message Format
          • Cancel Reservation Request Message Format
      • Multiavailability (Enhanced Shopping Transaction)
        • Transaction Header Formats
        • Enhanced Shopping (EST) – Detailed Rate Information
          • Requesting Specific Rates
          • UltraDirect Account Author Negotiated Rate Processing
          • Unavailable Properties
          • UltraDirect Cache Processing
          • Enhanced Shopping Transaction Request Header Format
          • Enhanced Shopping Transaction Response Message Format
      • Pre-Book
        • Transaction Header Formats
        • Pre Book API
          • Pre-Book Request message format
          • Pre-Book Response message format
      • Property list and Booking Summary
        • PropertyList API
        • Booking Summary API
  • Content
    • Integration Process
    • Certification - Demand
    • Content Retrieve
      • SOAP/HTTP
        • SOAP Envelop
        • SOAP Body
        • Date and Time
        • Specifications for Currency Amounts
      • Transaction Specifications
      • Content Retrieval Request
      • Content Retrieval Response
    • Content Update
      • Overview
      • Transaction List
      • Transaction Flow
      • Batch processing
        • File naming convention
      • Multi-lingual capabilities
      • Associating media to textual content
      • Managing images
      • GDS content updates
      • Office of Foreign Assets Control (OFAC)
      • Interface requirements
        • SOAP envelope
        • Standard element formats
      • Transaction specifications
        • Data mapping of elements
        • Area Information
        • Affiliation information
        • Media information
        • Contact information
        • TPA extensions
        • GDS information
        • Response message
      • Codes lists
        • Credit Card
        • Error and Warning codes
        • Spoken Language
        • State and Country
      • Supported language codes
      • Client application generation using WSDL tool
  • UltraDirect
    • Integration Process
    • Certification
    • Ultradirect transaction sets - XML
      • Transaction header formats
      • Booking transactions
        • Booking request message format..
        • Request message format - Cancel
        • Request message format - Commit/Rollback
        • Request message format - Modify
        • Response message format - Booking
      • Enhanced shopping (EST)
        • Requesting Specific Rates
        • Request message format
        • Response message format.
      • Rate and availability transactions
        • Standard multi-availability
          • Request & Response message format
      • Rate Rules
        • Request message format
        • Response message format
      • Reference data transactions
        • Request message format..
        • Response message format..
      • Single property availability
        • Request message format
        • Response message format
    • XML ultradirect specifications
      • Overview
        • Transaction list
      • Interface requirements
      • Transaction meta data
    • Error Codes..
    • UltraDirect Transaction Samples and Usage
      • Using UltraDirect (Seamless, a real-time transaction)
      • EST (Enhanced Shopping Transaction)
      • Rate Rules
      • Book Reservation
      • Cancellation
      • Book Reservation with session control
      • Modification
      • Booking Storage and Retrieval
      • List of Test Credit Cards
      • Test properties in UAT
      • Guarantee Type and Method Combinations
    • xml ultradirect codes
  • Get in Touch
    • Questions?
Powered by GitBook
On this page
  1. UltraDirect
  2. XML ultradirect specifications

Transaction meta data

PreviousInterface requirementsNextError Codes..

Last updated 2 months ago

The Head element in HotelML plays the role of structuring transaction meta data, such as what nodes to process, where the instance document has been and where it is going, and any error conditions that occurred along the way.

For reference, the following models illustrate the parent child relationships of the Head component:

Head Element Content Model

Making a request

The Process element is used to aggregate information about a specific operation that is to be performed on a node in the instance document. The essential information is fairly basic, requiring the path to the node to operate on, the function to perform, and a token to include in each response structure that is generated by processing.

Note: While this model inherently supports multiple operations on multiple data structures (including batching), multiple operations on multiple data structures is not supported at this time. Only one operation on one data set is allowed per instance document.

The following example illustrates a request.

<?xml version="1.0"?>

<HotelML xmlns="
http://www.xpegs.com/v2001Q3/HotelML
"> <Head>
<Process Function="TI_PropertyInformationV1_1" DataPath="/HotelML/Form/PropertyInformation" Token="992535807859"/>
<Route Source="SGACode" Destination="00"/> </Head>
<Form>
<PropertyInformation PropertyCode="XX;12345" DataSet="Basic"/> </Form>
</HotelML>

The following example illustrates a response.

<HotelML xmlns=”
http://www.xpegs.com/v2001Q3/HotelML
”> <Head xmlns="
http://www.xpegs.com/v2001Q3/HotelML
">
<Route xmlns="
http://www.xpegs.com/v2001Q3/HotelML
" Source="00" Destination="SGACode">
<Operation xmlns="
http://www.xpegs.com/v2001Q3/HotelML
"
Action="Create" DataPath="/HotelML"
StartTime="2001-07-11T15:40:01.365-05:00"
TotalProcessTime="14463" App="TIDispatcher"
AppVer="1.1" Success="true"/>
</Route>
</Head>
<Property Token=”992535807859”> … </Property> </HotelML>

Route

The Route element is very important to record where an instance document has been or where it is going for a number of reasons. Primary motivations would include debugging an instance document that may have been corrupted during creation or routing, commissions for bookings, and transaction distribution statistics.

Note: Routing information is often, if not always, contractually required by RateGain. Please refer to the relevant business agreements for clarifications on required routing information.

The information that is collected requires, at minimum, the source and destination of a single route where every arc of a route must be persisted in a Route element.

If an operation is performed by the Source, important information about the operation must be persisted in a child Operation element, recording the action, path to the node operated on, start time, processing time, and essential application information.

The following example illustrates a route and operation where an immediate customer created a PropertyInformation request and sent the request directly to RateGain.

<?xml version="1.0"?>

<HotelML xmlns="
http://www.xpegs.com/v2001Q3/HotelML
"> <Head>
<Process Function="TI_PropertyInformationV1_1" DataPath="/HotelML/Form/PropertyInformation" Token="992535807859"/>
<Route Source="SGACode" Destination="00"/>
</Head>
<Form>
<PropertyInformation PropertyCode="XX;12345" DataSet="Basic"/> </Form>
</HotelML>

The following example illustrates a route and operation where RateGain processed a PropertySearch request and sent the response back to the customer.

<HotelML xmlns=”
http://www.xpegs.com/v2001Q3/HotelML
”>
<Head xmlns="
http://www.xpegs.com/v2001Q3/HotelML
">
<Route xmlns="
http://www.xpegs.com/v2001Q3/HotelML
"
Source="00" Destination="SGACode">
<Operation
xmlns="
http://www.xpegs.com/v2001Q3/HotelML
"
Action="Create" DataPath="/HotelML" StartTime="2001-07-11T15:40:01.365- 05:00" TotalProcessTime="14463"
App="TIDispatcher" AppVer="1.1" Success="true"/>
</Route>
</Head>
<Property Token=”992535807859”> … </Property> </HotelML>

A real example

<?xml version=”1.0”?>

<HotelML xmlns=”
http://www.xpegs.com/v2001Q3/HotelML
” > <Head>
<Process DataPath=”/HotelML/Form/PropertySearch[1]” Function=”TI/PropertySearch/V1_1” Token="12ab />
<Route Source=”ADSCode” Destination=”PEGSCode” > <Operation Action=”create”
DataPath=”/HotelML/Form/PropertySearch[1]”
StartTime=”23:59:59.999”
TotalProcessTime=”00:00:00.025” App=”SomeKillerApp”
AppVer=”4.5.2” Success=”True” />
</Route>
</Head>
<Form>
<PropertySearch MaxCount=”100” PrimarySortOrder=”PropertyName”> <DateRange InDate="2000-12-24" OutDate="2000-12-25" /> <BasicSearch>
<Brand  Code="BW" />
</BasicSearch>
</PropertySearch>
</Form>
</HotelML>

In this example, it is important to note the following important information:

  • XML processing instruction

  • Process element with the desired operation, node to process, and token

  • Route element with source and destination with child Operation element to record the creation of the instance document.

  • PropertySearch element with structure containing all data required to perform requested operation.

Receiving a response

HotelML is built in such a way that the aggregation of responses is facilitated, however, it is in no way required. While each response will only have the result set of the submitted form, HotelML allows for a series of transaction responses to be summed into one big instance document that could be thought of as a session. This may be achieved through XSL -Transforms or other means. Since the processing of a response is essentially up the BSP, there is little more to cover here other than to provide an example.

A real example

Note: For simplicity, the data of the PropertySearchState element has been omitted

<?xml version=”1.0”?>

<HotelML xmlns=”
http://www.xpegs.com/v2001Q3/HotelML
” > <Head>
<Route Source=”PEGSCode” Destination=”ADSCode” > <Operation Action=”create”
DataPath=”/HotelML/PropertySearchState[1]”
StartTime=”01:01:02.001”
TotalProcessTime=”00:00:00.240” App=”NAS” AppVer=”2.3”
Success=”True” />
</Route>
</Head>
<PropertySearchState MoreProps=”” StateId=”” NumResults=”” Token=”12ab” >
<Property  Code="" AvailabilityStatus="" Name=""
MatchedAmenityCount=”” >
<Phone Number="" Type=”” />
<PostalAddress Line1="” Line2="” Line3="” Line4="” City="” StateCode="” PostalCode="” CountryCode="” Type=" />
<GeoInfo Latitude="" Longitude="" /> <PriceRange Min="" Max="" Currency=”” />
</Property>
</PropertySearchState>
</HotelML>

In this example, it is important to note the following important information:

  • XML processing instruction

  • Route element with source and destination with one child Operation element to record the creation of the response.

  • PropertySearchState element with token and the results of the search.

Errors

All systems have errors, and the XML UltraDirect interface is no different. In order to provide effective error recovery, a variety of information will be provided on each error that occurs. The cause of the error has been divided into classes and the severity of the error has been divided into types. The following sections expand on the classes and types of errors.

Errors

The last class of metadata about an instance document is error information. The following list provides a brief overview of the types of errors that may occur.

Error Type

Description

Malformed

XML instance document does not conform to format as dictated by XML 1.0 specification.

Validation (Schema/DTD)

XML instance document does not conform to grammar/syntax rules as dictated by Schema or DTD.

Usage (XSL Transform or Application)

XML instance document does not conform to minimum data requirements defined by XSL Transform.

Security

Requestor is not authorized to perform requested function.

System Status Error

Critical system is not available.

Process

The local or remote system that processed the request encountered an error.

Classes of errors

Each of the types of errors just covered could vary in severity. The actual error information will be aggregated in an element that signifies the severity of the error. These elements are generally defined as follows:

Error Class

Description

<Warning>

An error that did not prevent processing and the subsequent generation of a response, however there are conditions associated with the error that should be looked at.

<Error>

An error that prevented processing from occurring, but the system recovered and was capable of providing information about the error.

<Fatal>

An error that resulted in the abortion of processing and the system did not recover.

Error information set

Each type of error will, for the most part, collect the same type of information in attributes. Therefore a common set of attributes is used by each of the elements that represent an error type.

For more specific information, see the Head component in the HotelML Schema documentation

Attribute

Description

Code

The actual error code that was returned. This code is used to look up a description of the error.

Type

This is the type of error that occurred. The types were enumerated and explained above.

Description

This is the textual description of the error that occurred. It is anticipated that this description could be provided in multiple languages, however this is not supported in the first version of the XML Transaction Interface.

FormDataPath

This is an XPath style expression that points to the node on which the operation was performed that created the error. This should help to narrow down the offending data structure for debugging purposes.

ResultDataPath

In the event that a result was generated, this is an XPath style expression that points to the node created by the operation, or more specifically, to the portion of the result that is in question.

Examples

Given this information, the following examples illustrate how an error might appear in an instance document.

A warning condition:

<HotelML>
<Head>
<Warning Code=”” Type=”” Description=”” FormDataPath=””/> </Head>
</HotelML>

An error condition:

<HotelML>
<Head>
<Error Code=”” Type=”” Description=”” FormDataPath=”” ResultDataPath=””/>
</Head>
</HotelML>

A fatal error condition:

<HotelML>
<Head>
<Fatal Code=”” Type=”” Description=”” FormDataPath=”” ResultDataPath=””/>
</Head>
</HotelML>

Limitations and caveats

Because HotelML is implemented in XML Schema to take advantage of namespaces, strong datatypes, and XML-based syntax not found in DTD’s, there are some system limitations and caveats that must be kept in mind.

  • Any element that has occurrence from zero to one time will be overwritten if the element appears more than once, violating the occurrence rule. Future versions of HotelML data-binding classes should handle this error condition as expected.