Odigeo Connect Suppliers API

Introduction & Guidelines

Welcome to Odigeo Connect API site.

This technical documentation includes API definitions & xml samples to guide you during the implementation of our various APIs.

The XMLs describe all our API services from top to bottom, following tag, @attribute, and child elements order.

Every element is classified as required / optional at each level, meaning that all @attributes defined as required are mandatory when using their correspondent tag element.

Best Practices

We strongly recommend NOT to send concurrent connections for the same property. Same property concurrent updates might lead to over-bookings.

We strongly recommend to optimize the ​requests sent​ (i.e. please use date ranges instead of updating the same data for individual dates).​ In this regard, it is advisable to always find a good balance between payload size ​and ​the ​number of requests​/second​​​.​

We will apply restrictions regarding body payload max size and rate limit depending on specific needs. The current restrictions are:

  • Max payload size: 100KB (413 http error in case of exceeding)
  • Rate limit: Depending on the business volume, ask your representative. (429 http error in case of exceeding)
We reserve the right to enforce them to any partner that does not comply with our best practices. As per our Terms and Conditions, please remember Odigeo Connect reserves the right to suspend or discontinue the access to our API if it is considered a partner puts the stability of our system at risk.

Authentication

To be able to test our various APIs, you will need to contact OC Connectivity Team.

Once Odigeo Connect signup process is completed, the OC Connectivity Team will provide you with test credentials, so you can start the API implementation on Odigeo Connect sandbox environment.

Access to the API will be provided with an API key, to be used in the Authorization HTTP header.

Once it is considered that you have successfully implemented Odigeo Connect API, the OC Connectivity Team will provide you with the live authentication credentials necessary to test the interface in Odigeo Connect production environment.

Request header Sample Description
Authorization 193s-cf36-ffff-xxxx When you call APIs, send the access token provided by OC Connectivity Team in the authentication header. Required.

cURL example:

curl -X POST \
  https://sandbox-api-suppliers.odigeoconnect.com/product/v1/OC_RoomTypeListRQ \
  -H 'Authorization: xxxxxx-xxx-xxxxxxx-xxxxxxxxxxx' \
  -H 'Content-Type: application/xml' \
  -d '<OC_RoomTypeListRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="valid-property-code" />
</OC_RoomTypeListRQ>'

Errors

Overview

Standard HTTP response codes are used for success and failure notifications. Our errors are further classified by Code identifiers.

In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Odigeo Connect related issues.

Rate limit exceeded errors

RLEE are returned when the request is valid but has exceeded the established rate limits.

All API endpoints are rate limited and all data-access endpoints are rate limited by client SLA.

Exact limits are dynamic and are designed to prevent any single source of traffic from impacting overall API stability

API errors

APIs Errors provide the option to send multiple actions in one single message.

The approach in case of failure is to not execute anything in case of error/s and retrieve an error message with all the errors found. Our aim will always be to provide the more semantic message error inside the error tags and a code to help to identify them.

Specific API errors are returned during scheduled server downtimes.

Odigeo Connect ARI API uses standard OTA error code list for application/business related errors.

Product API

Introduction & Guidelines

Odigeo Connect Product API is able to provide two basic functions to connectivity partners:

  • It allows room type and rate plan autocreation / automapping. The connectivity partner is able to manage the full cycle of room type and rate plan creation, modification and deletion, without the need of any of these actions to be done manually on the Odigeo Connect Extranet.

    Posting product data is possible using the services Create Room Types & Create Rate Plans

  • It allows you to pull all room types and rates plans created on the Odigeo Connect Extranet for a specific property to allow the subsequent manual mapping of room types and rate plans on the connectivity interface.

    Reading product data is possible using the service Get List of Room Types & Rates Plans

Action Endpoint
Create Room Types POST /product/v1/OC_RoomTypeNotifRQ
Create Rate Plans POST /product/v1/OC_RatePlanNotifRQ
Get List of Room Types & Rate Plans POST /product/v1/OC_RoomTypeListRQ

The Product API is served over HTTPS TLS (v1, v1.1, v.1.2) to ensure data privacy.
The Product API uses GET and POST requests to communicate and HTTP response codes to indicate status and errors. All responses come in standard XML and all requests must include a content-type of application/xml and the body must be valid XML for POST requests.

API Host

https://sandbox-api-suppliers.odigeoconnect.com  (Sandbox)
https://api-suppliers.odigeoconnect.com (Production)

The Sandbox environment is unrestricted and only supports test items.
All testing should be done in our Sandbox environments.
When you are getting ready to launch into Production, please request the Production API access via the OC Connectivity Team.

Product access endpoints:

/product/v1/OC_RoomTypeNotifRQ
/product/v1/OC_RatePlanNotifRQ
/product/v1/OC_RoomTypeListRQ

Creating RoomTypes

The Product API provides the capability to create a batch of roomtypes sending an XML with a collection of roomtypes tags and information in the body payload through a POST request of a OC_RoomTypeNotifRQ.

It is possible to send a collection of roomtypes for a single property but multiple property messages are not allowed. The XMLs describe all our API services from top to bottom, following tag, @attribute, and child elements order.

Every element is classified as required / optional at each level, meaning that all @attributes defined as required are mandatory when using their correspondent tag element.

Action Endpoint
Create Roomtypes POST /product/v1/OC_RoomTypeNotifRQ

Create RoomTypes Request XML

  • OC_RoomTypeNotifRQ required

    The OC_RoomTypeNotifRQ is the message that provides the ability to create roomtypes for properties

    • Property required

      Property info (only one allowed per message).

      • @Code required

        Property identifier

      • RoomTypes required

        Collection of roomtypes (only one collection allowed)

        • RoomType required

          Roomtype information

          • @Code required

            RoomType Code.

            String from 1 to 16 chars.

            Allowed chars are A to z and 0 to 9 case insensitive (A = a).

            Unique code at property level.

          • @Reference optional

            Supplier roomtype id reference (mapping purpose)

          • @MaxOccupancy required

            Indicates the maximum number of guests that occupy this room.

            Maximum occupancy will be 20.

          • @MinOccupancy optional

            Indicates the minimum number of guests that occupy this room.

            Default value will be 1.

          • @Status optional

            It allows to indicate if a RoomType is enabled or disabled.

            Possible values are Active/Inactive.

            If not sent default value will be Active.

          • @ViewCode optional

            Indicates the view from the room. Code based on: OC Room View definition

          • Occupancies optional

            Indicates specific occupancy information for different age categories

            • Occupancy optional

              Indicates specific occupancy information for an age category.

              • @AgeQualifyingCode optional

                Defines minimum age range or age category of a guest. Code based on: OC Age Categories definition

              • @MaxOccupancy required

                Defines maximum number of guests that occupy this room for the specified occupancy.

                Any maximum occupancy set up for a specific age category cannot be greater than the mandatory maximum occupancy set up for the room.

          • Bedding optional

            Indicates the type of bed(s) found in the room

            • Bed optional

              Defines the information about one Bed type

              • @Code optional

                Code identifier of a room. Code based on: OC Bedtypes definition

              • @Quantity optional

                Number of beds of one type

          • Size optional

            Room size information.

          • Amenities optional

            A collection of amenity information.

            • Amenity required

              Refers to a specific amenity.

              • @Code required

                Code identifier of an amenity. Code based on: OC Amenities definition

              • @Value required

                Defines if room has it or not. Valid values: true/false.

Request examples

-Basic roomtype creation

<OC_RoomTypeNotifRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE">
        <RoomTypes>
            <RoomType Code="KingdomRoom" MaxOccupancy="4"/>
        </RoomTypes>
    </Property>
</OC_RoomTypeNotifRQ>

+Roomtype with all features

<OC_RoomTypeNotifRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE">
        <RoomTypes>
            <RoomType Code="KingdomRoom" Reference="Kingdom Room" MinOccupancy="1" MaxOccupancy="4" Status="Active"
                      ViewCode="1">
                <Occupancies>
                    <Occupancy AgeQualifyingCode="10" MaxOccupancy="1"/>
                </Occupancies>
                <Bedding>
                    <Bed Code="1" Quantity="1"/>
                    <Bed Code="2" Quantity="1"/>
                </Bedding>
                <Size Units="200" UnitType="13"/>
                <Amenities>
                    <Amenity Code="74" Value="true"/>
                    <Amenity Code="85" Value="true"/>
                    <Amenity Code="101" Value="false"/>
                    <Amenity Code="193" Value="false"/>
                    <Amenity Code="1001" Value="true"/>
                    <Amenity Code="1002" Value="false"/>
                    <Amenity Code="1003" Value="true"/>
                    <Amenity Code="1004" Value="false"/>
                    <Amenity Code="1005" Value="true"/>
                </Amenities>
            </RoomType>
            <RoomType Code="QueenRoom" Reference="Queen Room" MinOccupancy="1" MaxOccupancy="4" Status="Inactive"
                      ViewCode="1">
                <Occupancies>
                    <Occupancy AgeQualifyingCode="10" MaxOccupancy="1"/>
                </Occupancies>
                <Bedding>
                    <Bed Code="1" Quantity="1"/>
                    <Bed Code="2" Quantity="1"/>
                </Bedding>
                <Size Units="200" UnitType="13"/>
                <Amenities>
                    <Amenity Code="74" Value="true"/>
                    <Amenity Code="85" Value="true"/>
                    <Amenity Code="193" Value="false"/>
                    <Amenity Code="1001" Value="false"/>
                    <Amenity Code="1002" Value="true"/>
                </Amenities>
            </RoomType>
        </RoomTypes>
    </Property>
</OC_RoomTypeNotifRQ>

Response messages

We can have two types of response messages: success or error.

Create Roomtypes Success Response XML

  • OC_RoomTypeNotifRS required

    The OC_RoomTypeNotifRS is the message that provides response to create roomtypes request

    • Success optional

      Gives feedback about a successful operation

    • Property required

      Property info (only one).

      • RoomTypes required

        Collection of room types (only one collection allowed)

        • RoomType required

          RoomType mapping info

          • @Code required

            RoomType code

          • @Reference optional

            Reference (supplier), if provided on creation.

    • Errors optional

      Gives feedback about errors in an operation

      Cannot come together with Success tag

      • Error optional

        Gives specific information about an error.

Response examples

-Success

<OC_RoomTypeNotifRS xmlns="http://odigeoconnect.com/2017">
    <Success/>
    <Property Code="PROPERTYCODE">
        <RoomTypes>
            <RoomType Code="KingdomRoom" Reference="Kingdom Room"/>
            <RoomType Code="QueenRoom" Reference="Queen Room"/>
        </RoomTypes>
    </Property>
</OC_RoomTypeNotifRS>

+Error

<OC_RoomTypeNotifRS xmlns="http://odigeoconnect.com/2017">
    <Errors>
        <Error Code="400">Bad Request</Error>
    </Errors>
</OC_RoomTypeNotifRS>

Creating RatePlans

The Product API provides the capability to create a batch of rateplans sending an XML with a collection of rateplan tags and information in the body payload through a POST request of an OC_RatePlanNotifRQ.

You can send a collection of rateplans for a single property but multiple property messages are not allowed.

Action Endpoint
Create Rateplans POST /product/v1/OC_RatePlanNotifRQ

Create RatePlans Request XML

  • OC_RatePlanNotifRQ required

    The OC_RatePlanNotifRQ is the message that provides the ability to create rateplans for properties

    • Property required

      Property info (only one allowed by message).

      • @Code required

        Property identifier

      • RatePlans required

        Collection of rateplans (only one collection allowed)

        • RatePlan required

          RatePlan information

          • @RoomTypeCode required

            OC RoomType identifier

          • @Code required

            RatePlan code.

            String from 1 to 16 chars.

            Allowed chars are A to z and 0 to 9 case insensitive (A = a).

            Unique code at room level.

          • @Reference optional

            Supplier rateplan reference (mapping purpose)

          • @RateType required

            Indicates the type of rate.

            Values accepted are SELL or NET.

          • @Status optional

            It allows to indicate if a RatePlan is enabled or disabled.

            Possible values are Active/Inactive.

            If not sent, the default value will be Active.

          • @CancellationPolicyId optional

            Refers to OC cancellation policy id. The first version of the Odigeo connect API will only accept non-ref cancellation policies. Please use code value:1.

          • @MealPlanId optional

            Refers to OC Meal Plan Type definition.

Request examples

-Basic rateplan creation

<OC_RatePlanNotifRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE">
        <RatePlans>
            <RatePlan RoomTypeCode="KingdomRoom" Code="KingdomRoomRate1" RateType="SELL"/>
            <RatePlan RoomTypeCode="QueenRoom" Code="QueenNetRatePlan" RateType="NET"/>
        </RatePlans>
    </Property>
</OC_RatePlanNotifRQ>

+Rateplan with all features

<OC_RatePlanNotifRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE">
        <RatePlans>
            <RatePlan RoomTypeCode="KingdomRoom" Code="KingdomRoomRate1" Reference="Kingdom Room Rate Plan"
                      RateType="SELL" CancellationPolicyId="1" MealPlanId="14" Status="Active"/>
            <RatePlan RoomTypeCode="QueenRoom" Code="QueenNetRatePlan" Reference="Queen's Room Rate Plan" RateType="NET"
                      CancellationPolicyId="1" MealPlanId="5" Status="Inactive"/>
        </RatePlans>
    </Property>
</OC_RatePlanNotifRQ>

Response messages

We can have two types of response messages: success or error.

Create Rateplan Success Response XML

  • OC_RatePlanNotifRS required

    The OC_RatePlanNotifRS is the message that provides the response to create rateplans request

    • Success optional

      Gives feedback about a successful operation

    • Property required

      Property info (only one).

      • RatePlans required

        Collection of rateplans (only one collection allowed)

        • RatePlan required

          RatePlan mapping info

          • @Code required

            RatePlan code

          • @RoomTypeCode required

            RoomType code

          • @Reference optional

            Reference (supplier), if provided on creation.

    • Errors optional

      Gives feedback about errors in an operation

      Cannot come together with Success tag

      • Error optional

        Gives specific information about an error.

Response examples

-Success

<OC_RatePlanNotifRS xmlns="http://odigeoconnect.com/2017">
    <Success/>
    <Property Code="PROPERTYCODE">
        <RatePlans>
            <RatePlan RoomTypeCode="KingdomRoom" Code="KingdomRoomRate1"/>
            <RatePlan RoomTypeCode="QueenRoom" Code="QueenNetRatePlan"/>
        </RatePlans>
    </Property>
</OC_RatePlanNotifRS>

+Error

<OC_RatePlanNotifRS xmlns="http://odigeoconnect.com/2017">
    <Errors>
        <Error Code="400">Bad Request</Error>
    </Errors>
</OC_RatePlanNotifRS>

Get RoomTypes & RatePlans

Once RoomTypes & RatePlans are created, this endpoint can be used to retrieve all the information set up, or via the previous post services, either via a manual action of Product creation on the OC Extranet.

Action Endpoint
Get List of Room Types & Rate Plans POST /product/v1/OC_RoomTypeListRQ

Get RoomTypes & Rateplans Request XML

  • OC_RoomTypeListRQ required

    The OC_RoomTypeListRQ is the message that provides the ability to list roomtypes and rateplans for properties

    • Property required

      Property info (only one).

      • @Code required

        Property identifier

Request examples

-Room & Rates request

<OC_RoomTypeListRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE" />
</OC_RoomTypeListRQ>

Response messages

We can have two types of response messages: success or error.

Success Response XML

  • OC_RoomTypeListRS required

    The OC_RoomTypeListRS is the message that provides the response to list Room & Rates request

    • Success optional

      Gives feedback about a successful operation

    • Errors optional

      Gives feedback about errors in an operation.

      Cannot come together with Success tag

      • Error optional

        Gives specific information about an error.

    • Property required

      Property info (only one).

      • @Code required

        Property identifier

      • RoomTypes optional

        Collection of roomtypes by property (only one will be allowed)

        • RoomType optional

          Roomtype information

          • @Code required

            RoomType Code.

            String from 1 to 16 chars.

            Allowed chars are A to z and 0 to 9 case insensitive (A = a).

            Unique code at property level.

          • @Reference optional

            Supplier roomtype id reference (mapping purpose)

          • @MaxOccupancy required

            Indicates the maximum number of guests that occupy this room.

            Maximum occupancy will be 20.

          • @MinOccupancy optional

            Indicates the minimum number of guests that occupy this room.

            Default value will be 1.

          • @Status optional

            It allows to indicate if a RoomType is enabled or disabled.

            Possible values are Active/Inactive.

            If not sent default value will be Active.

          • @ViewCode optional

            Indicates the view from the room. Code based on: OC Room View definition

          • Occupancies optional

            Indicates specific occupancy information for different age categories

            • Occupancy optional

              Indicates specific occupancy information for an age category.

              • @AgeQualifyingCode optional

                Defines minimum age range or age category of a guest. Code based on: OC Age Categories definition

              • @MaxOccupancy required

                Defines maximum number of guests that occupy this room for the specified occupancy.

                Any maximum occupancy set up for a specific age category cannot be greater than the mandatory maximum occupancy set up for the room.

          • Bedding optional

            Indicates the type of bed(s) found in the room

            • Bed optional

              Defines the information about one Bed type

              • @Code optional

                Code identifier of a room. Code based on: OC Bedtypes definition

              • @Quantity optional

                Number of beds of one type

          • Size optional

            Room size information.

          • Amenities optional

            A collection of amenity information.

            • Amenity required

              Refers to a specific amenity.

              • @Code required

                Code identifier of an amenity. Code based on: OC Amenities definition

              • @Value required

                Defines if room has it or not. Valid values: true/false.

          • RatePlans required

            Collection of rateplans (only one collection allowed)

            • RatePlan required

              RatePlan information

              • @Code required

                RatePlan code.

                String from 1 to 16 chars.

                Allowed chars are A to z and 0 to 9 case insensitive (A = a).

                Unique code at room level.

              • @Reference optional

                Supplier rateplan reference (mapping purpose)

              • @RateType required

                Indicates the type of rate.

                Values accepted are SELL or NET.

              • @Status optional

                It allows to indicate if a RatePlan is enabled or disabled.

                Possible values are Active/Inactive.

                If not sent, the default value will be Active.

              • @CancellationPolicyId optional

                Refers to OC cancellation policy id. The first version of the Odigeo connect API will only accept non-ref cancellation policies. Please use code value:1.

              • @MealPlanId optional

                Refers to OC Meal Plan Type definition.

Response examples

-Success

<OC_RoomTypeListRS xmlns="http://odigeoconnect.com/2017">
    <Success/>
    <Property Code="PROPERTYCODE">
        <RoomTypes>
            <RoomType Code="KingdomRoom" Reference="Kingdom Room" MaxOccupancy="4" MinOccupancy="1" Status="Active"
                      ViewCode="1">
                <Occupancies>
                    <Occupancy AgeQualifyingCode="10" MaxOccupancy="1"/>
                </Occupancies>
                <Bedding>
                    <Bed Code="1" Quantity="1"/>
                    <Bed Code="2" Quantity="1"/>
                </Bedding>
                <Size Units="200" UnitType="13"/>
                <Amenities>
                    <Amenity Code="74" Value="true"/>
                    <Amenity Code="85" Value="true"/>
                    <Amenity Code="193" Value="false"/>
                    <Amenity Code="1001" Value="true"/>
                    <Amenity Code="1002" Value="true"/>
                </Amenities>
                <RatePlans>
                    <RatePlan Code="KingdomRoomRatePlanAllInclusive" Reference="KingdomRoomRatePlanAllInclusive"
                              RateType="SELL" CancellationPolicyId="1" MealPlanId="1" Status="Active"/>
                    <RatePlan Code="KingdomRoomRateRoomOnly" Reference="KingdomRoomRateRoomOnly" RateType="SELL"
                              CancellationPolicyId="1" MealPlanId="14" Status="Active"/>
                    <RatePlan Code="KingdomRoomRateEarlyBird" Reference="KingdomRoomRateEarlyBird" RateType="NET"
                              CancellationPolicyId="1" MealPlanId="10" Status="Active"/>
                </RatePlans>
            </RoomType>
            <RoomType Code="QueenRoom" Reference="Queen Room" MaxOccupancy="2" MinOccupancy="1" Status="Active"
                      ViewCode="1">
                <Occupancies>
                    <Occupancy AgeQualifyingCode="10" MaxOccupancy="1"/>
                </Occupancies>
                <Bedding>
                    <Bed Code="1" Quantity="1"/>
                    <Bed Code="2" Quantity="1"/>
                </Bedding>
                <Size Units="100" UnitType="13"/>
                <Amenities>
                    <Amenity Code="74" Value="true"/>
                    <Amenity Code="85" Value="true"/>
                    <Amenity Code="193" Value="false"/>
                    <Amenity Code="1001" Value="false"/>
                    <Amenity Code="1002" Value="true"/>
                </Amenities>
                <RatePlans>
                    <RatePlan Code="QueenRoomRatePlanAllInclusive" Reference="QueenRoomRatePlanAllInclusive"
                              RateType="SELL"
                              CancellationPolicyId="1" MealPlanId="1" Status="Active"/>
                    <RatePlan Code="QueenRoomRateRoomOnly" Reference="QueenRoomRateRoomOnly" RateType="SELL"
                              CancellationPolicyId="1" MealPlanId="14" Status="Active"/>
                    <RatePlan Code="QueenRoomRateEarlyBird" Reference="QueenRoomRateEarlyBird" RateType="NET"
                              CancellationPolicyId="1" MealPlanId="10" Status="Active"/>
                </RatePlans>
            </RoomType>
        </RoomTypes>
    </Property>
</OC_RoomTypeListRS>

+Error

<OC_RoomTypeListRS xmlns="http://odigeoconnect.com/2017">
    <Errors>
        <Error Code="400">Bad Request</Error>
    </Errors>
</OC_RoomTypeListRS>

ARI API

Introduction & Guidelines

The API is based on messages that conform to the OpenTravel Alliance 2016B specification and best practices

Messages exchanged through the API use a subset of elements from the full OTA specification for each message.

Elements used in each message are listed in the detailed descriptions below. Not documented elements will be ignored, but might be added in future releases.

When you launch a insert/update/delete request, the information is updated in a transactional and not partial way, so if the request fails, information is not updated.

Date range restrictions

When defining date ranges both dates (Start/End) will be included in the update.

We will support date restrictions in the future for 18 months in advance. Restrictions/updates that are greater than this will not apply.

Endpoints overview:

Action Endpoint
Set and update inventory POST /ari/v1/OTA_HotelInvCountNotifRQ
Set and update Availability restrictions POST /ari/v1/OTA_HotelBookingRuleNotifRQ
Set and update Rates POST /ari/v1/OTA_HotelRateAmountNotifRQ

API Host

https://sandbox-api-suppliers.odigeoconnect.com  (Sandbox)
https://api-suppliers.odigeoconnect.com (Production)

The Sandbox environment is unrestricted and only supports test items.
All testing should be done in our Sandbox environments.
When you are getting ready to launch into Production, please request the Production API access via the OC Connectivity Team.

Inventory

The inventory api service allows you to send and update the amount of inventory available for a specific property.

This update is available at RoomType level or at RatePlan level.

When you launch a insert/update/delete request, the information is updated in a transactional and not partial way, so if the request fails, information is not updated.

Update Inventory for Roomtypes / Rateplans

It is possible to update inventory at RoomType level or RatePlan level.

Updating inventory at RoomType level will mean it will be shared by all rateplans that belong to this Roomtype.

However, it is possible to also update inventory at RatePlan level. In this case we will understand the value is the maximum inventory to be sold for a specific rateplan.

The message endpoint and structure will be similar, just that for rateplan updates you will need to send InvCode (Roomtype) and also RatePlanCode.

Action Endpoint
Update inventory (RoomType/Rateplan) POST /ari/v1/OTA_HotelInvCountNotifRQ

Request XML

  • OTA_HotelInvCountNotifRQ required

    The OTA_HotelInvCountNotifRQ is the message that sends the update for roomtypes and rateplans inventory.

  • @TimeStamp required

    ISO 8601 encoded timestamp indicating the creation date and time of the message.

  • @Version required

    The OpenTravel message version indicated by a decimal value.

    • Inventories required

      A collection of Inventory.

      • @HotelCode required

        The code that uniquely identifies a single hotel property. The hotel code is decided between vendors.

      • Inventory required

        This is the inventory information for a given room type.The set of changes in the number of units of base inventory for one inventory type (code) to be made on the server.

        • StatusApplicationControl required

          Information on what the BookingRule Message applies to (i.e. the combination of inventory and rate codes) and the period of application.The StatusApplicationControl class is used to indicate to which block codes/rate plans/inventory codes a status should be applied.

          • @InvCode required

            RoomType Code.

          • @RatePlanCode required (When updating rates)

            A string value may be used to request a particular code or an ID if the guest qualifies for a specific rate, such as AARP, AAA, a corporate rate, etc., or to specify a negotiated code as a result of a negotiated rate.

          • @Start required

            The starting value of the time span.

            Format is YYYY-MM-DD.

          • @End required

            The ending value of the time span. Can not be greater than the defined ARI date range restrictions

          • @Mon, @Tue, @Weds, @Thur, @Fri, @Sat, @Sun optional

            When true, applies only to a particular week day in the given time span.

        • InvCounts required

          A collection of inventory counts.

          • InvCount required

            Individual inventory count

            • @Count required

              Number of units of inventory

RoomType request examples:

-Basic example:

<OTA_HotelInvCountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                          TimeStamp="2017-03-08T07:38:54.729Z" Version="3.000">
    <Inventories HotelCode="PROPERTYCODE">
        <Inventory>
            <StatusApplicationControl InvCode="KingdomRoom" Start="2017-03-28" End="2017-03-29"/>
            <InvCounts>
                <InvCount Count="2"/>
            </InvCounts>
        </Inventory>
    </Inventories>
</OTA_HotelInvCountNotifRQ>

+Multiple date ranges example:

<OTA_HotelInvCountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="EchoToken"
                          TimeStamp="2017-03-08T07:38:54.729Z" Version="3.000">
    <Inventories HotelCode="PROPERTYCODE">
        <Inventory>
            <StatusApplicationControl InvCode="KingdomRoom" Start="2017-03-18"
                                      End="2017-03-20" Mon="true" Fri="true"/>
            <InvCounts>
                <InvCount Count="5"/>
            </InvCounts>
        </Inventory>
        <Inventory>
            <StatusApplicationControl InvCode="QueenRoom" Start="2017-03-28"
                                      End="2017-03-30"/>
            <InvCounts>
                <InvCount Count="3"/>
            </InvCounts>
        </Inventory>
    </Inventories>
</OTA_HotelInvCountNotifRQ>

Rateplan request examples:

+Basic example (RatePlan):

<OTA_HotelInvCountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                          TimeStamp="2017-03-08T07:38:54.729Z" Version="3.000">
    <Inventories HotelCode="PROPERTYCODE">
        <Inventory>
            <StatusApplicationControl InvCode="KingdomRoom" RatePlanCode="RACK" Start="2017-03-28"
                                      End="2017-03-29"/>
            <InvCounts>
                <InvCount Count="2"/>
            </InvCounts>
        </Inventory>
    </Inventories>
</OTA_HotelInvCountNotifRQ>

+Multiple date ranges example (RatePlan):

<OTA_HotelInvCountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="EchoToken"
                          TimeStamp="2017-03-08T07:38:54.729Z" Version="3.000">
    <Inventories HotelCode="PROPERTYCODE">
        <Inventory>
            <StatusApplicationControl InvCode="KingdomRoom" RatePlanCode="RACK" Start="2017-03-18" End="2017-03-20"
                                      Mon="true" Fri="true"/>
            <InvCounts>
                <InvCount Count="2"/>
            </InvCounts>
        </Inventory>
        <Inventory>
            <StatusApplicationControl InvCode="QueenRoom" RatePlanCode="EARLY" Start="2017-03-28" End="2017-03-30"/>
            <InvCounts>
                <InvCount Count="6"/>
            </InvCounts>
        </Inventory>
    </Inventories>
</OTA_HotelInvCountNotifRQ>                    

Response messages RoomType & Rateplan Inventory

We can have two types of response messages: success or error.

Update Roomtype Inventory Success Response XML

  • OTA_HotelInvCountNotifRS required

    The OTA_HotelInvCountNotifRS is the message used to indicate the status of processing the OTA_HotelInvCountNotifRQ message.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • Success optional

      An element that is not intended to contain any data. The presence of this empty element in the response message indicates that the incoming request message was processed successfully. Returning an empty element of this type indicates the successful processing of an OpenTravel message.

    • Errors optional

      A collection of errors that occurred during the processing of a message.

      • Error optional

        Indicates that an error occurred in the processing of the incoming request message. An error is defined as a malformed XML message that could not be processed and/or validated, or any business-level error that could happen.

        • @Type optional

          The Error element MUST contain the Type attribute that uses a recommended set of values to indicate the error type. The validating XSD can expect to accept values that it has NOT been explicitly coded for and process them by using Type ="Unknown". Refer to OC Error Type.

        • @Code optional

          If present, this refers to a table of coded values exchanged between applications to identify errors. Refer to OC Code Errors.

        • @ShortText optional

          An abbreviated version of the error in textual format.

Response examples

By clicking on the example name you can fold/unfold it

-Success

<OTA_HotelInvCountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000"
                          TimeStamp="2017-03-01T09:30:47+08:00">
    <Success/>
</OTA_HotelInvCountNotifRS>

+Error

<OTA_HotelInvCountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000"
                          TimeStamp="2017-03-01T09:30:47+08:00">
    <Errors>
        <Error Type="3" Code="527" ShortText="Invalid number of inventory adjustments"/>
    </Errors>
</OTA_HotelInvCountNotifRS>

Availability restrictions

The availability restrictions api service allows to send and update rules and restrictions affecting the availability status of the property.

When you launch a insert/update/delete request, the information is updated in a transactional and not partial way, so if the request fails, information is not updated.

The supported operations are:

  • At room type & rate plan level:
    • STOP SELL: Close / Open inventory sales
  • At rate plan level:
    • LOS:
      • Min Length of Stay through
      • Min Length of Stay on arrival
      • Max Length of Stay through
      • Max Length of Stay on arrival
      • Full Pattern Length of Stay on arrival
    • RELEASE: (aka ‘Cut off time’ or ‘Lead time’):
      • Min Advanced booking offset
      • Max Advanced booking offset
      *Please note our API allows the release to be set as per days or hours time.
    • CTA & CTD:
      • Close to arrival (CTA)
      • Close to departure (CTD)
Action Endpoint
Set and update restrictions POST /ari/v1/OTA_HotelBookingRuleNotifRQ

Request XML

  • OTA_HotelBookingRuleNotifRQ required

    The OTA_BookingRuleNotifRQ is the message that sends the notification of the rules and restrictions affecting the availability status of the hotel.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • RuleMessages required

      Container for the individual RuleMessage(s). An OTA_HotelBookingRuleNotifRQ contains the booking rules for a single property.

      • @HotelCode required

        The code that uniquely identifies a single property.

      • RuleMessage required

        Container for the collection of Booking Rules for a given hotel or chain.

        • StatusApplicationControl required

          Information on what the BookingRule Message applies to (i.e. the combination of inventory and rate codes) and the period of application.The StatusApplicationControl class is used to indicate to which block codes/rate plans/inventory codes a status should be applied.

          • @InvCode required

            Inventory Code (Room type).

          • @RatePlanCode required

            Rate Plan code

          • @Start required

            The starting value of the time span.

            Format is YYYY-MM-DD.

          • @End required

            The ending value of the time span. Can not be greater than the defined ARI date range restrictions

          • @Mon, @Tue, @Weds, @Thur, @Fri, @Sat, @Sun optional

            When true, applies only to a particular week day in the given time span.

        • BookingRules required

          A collection of BookingRules.

          • BookingRule required

            The BookingRule element defines restrictions to rates and stays at the hotel for a given rate plan, room type or rate plan/room type combination.

            • @MinAdvancedBookingOffset optional

              Minimum ISO-8601 duration before the arrival date for which this rate plan may be booked.

            • @MaxAdvancedBookingOffset optional

              Maximum ISO-8601 duration before the arrival date for which this rate plan may be booked.

            • LengthsOfStay optional

              A collection of lengths of stay.

              • @ArrivalDateBased required

                True indicates that LOS is based on arrival date. False indicates that LOS is based on stay date.

              • @FixedPatternLength optional

                The number of elements in a fixed pattern length of stay (FPLOS) array. Only applicable when MinMaxMessageType is FullPatternLOS. You must define the data from left to right. Example: 110001 (First day open, Second day open, Third day close, Fourth day close, Fifth daty close, Sixth day open)

              • LengthOfStay optional

                A collection of patterns defining allowable lengths of stay (LOS).

                • @MinMaxMessageType optional

                  An enumerated type used to define how the minimum and maximum LOS is applied.

                  Accepted values: SetMinLOS, SetMaxLOS, FullPatternLOS.

                • @Time optional

                  Used in conjunction with the MinMaxMessageType to define the length of stay requirements. The time unit measure is DAY/s

                • LOS_Pattern optional

                  This may be used when MinMaxMessageType is FullPatternLOS to identify the open and closed status by LOS (e.g., if LengthsOfStay@FixedPatternLength="5" then FullPatternLOS="11011", left to right).

                  • @FullPatternLOS required

                    The size of the pattern cannot be greater than 31 days. Left to right

            • RestrictionStatus optional

              Availability status assigned to the room rate combination for this booking rule. (CTA/CTD)

              • @Status optional

                Identifies the availability status of an item. (Open, Close)

              • @Restriction optional

                Defines CTA/CTD. Expected values: Arrival, Departure.

Request examples

+LOS request:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="BAR" Start="2017-04-12" End="2017-04-15" Fri="true"/>
            <BookingRules>
                <BookingRule>
                    <LengthsOfStay ArrivalDateBased="false">
                        <LengthOfStay MinMaxMessageType="SetMinLOS" Time="3"/>
                    </LengthsOfStay>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="BAR" Start="2017-04-16" End="2017-04-20" Mon="true"/>
            <BookingRules>
                <BookingRule>
                    <LengthsOfStay ArrivalDateBased="true">
                        <LengthOfStay MinMaxMessageType="SetMaxLOS" Time="5"/>
                    </LengthsOfStay>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="BAR" Start="2017-04-21" End="2017-04-25" Mon="true"/>
            <BookingRules>
                <BookingRule>
                    <LengthsOfStay ArrivalDateBased="true">
                        <LengthOfStay MinMaxMessageType="SetMinLOS" Time="2"/>
                        <LengthOfStay MinMaxMessageType="SetMaxLOS" Time="10"/>
                    </LengthsOfStay>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>                        
                    

+Open/Close (rateplan) request:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000" EchoToken="TOKEN_HASH">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="KingdomRoom" RatePlanCode="RACK" Start="2017-03-18" End="2017-03-20"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Status="Open"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="QueenRoom" RatePlanCode="EARLY" Start="2017-04-21" End="2017-04-25"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Status="Close"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>

+Open/Close (roomtype) request:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000" EchoToken="TOKEN_HASH">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="KingdomRoom" Start="2017-03-18" End="2017-03-20"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Status="Open"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="QueenRoom" Start="2017-04-21" End="2017-04-25"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Status="Close"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>

+CTA request:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="KingdomRoom" RatePlanCode="RACK" Start="2017-03-18"
                                      End="2017-03-20"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Restriction="Arrival" Status="Close"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>                        
                    

+CTD request:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="KingdomRoom" RatePlanCode="RACK" Start="2017-03-18"
                                      End="2017-03-20"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Restriction="Departure" Status="Close"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="QueenRoom" RatePlanCode="EARLY" Start="2017-03-18"
                                      End="2017-03-20"/>
            <BookingRules>
                <BookingRule>
                    <RestrictionStatus Restriction="Departure" Status="Open"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>                        
                    

+Release (Cutoff) request:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="RACK" Start="2017-04-12" End="2017-04-15" Mon="true"/>
            <BookingRules>
                <BookingRule MinAdvancedBookingOffset="P1D" MaxAdvancedBookingOffset="P2D"/>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="EARLY" Start="2017-04-20" End="2017-04-25"
                                      Fri="true"/>
            <BookingRules>
                <BookingRule MinAdvancedBookingOffset="PT2H" MaxAdvancedBookingOffset="P360D"/>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>                        
                    

+Mixed restrictions:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000">
    <RuleMessages HotelCode="PROPERTYCODE">
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="RACK" Start="2017-04-15"
                                      End="2017-04-20"/>
            <BookingRules>
                <BookingRule MinAdvancedBookingOffset="P1D" MaxAdvancedBookingOffset="P2D">
                    <RestrictionStatus Restriction="Arrival" Status="Open"/>
                </BookingRule>
                <BookingRule>
                    <RestrictionStatus Restriction="Departure" Status="Open"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
        <RuleMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="EARLY" Start="2017-04-20"
                                      End="2017-04-25" Mon="true"/>
            <BookingRules>
                <BookingRule>
                    <LengthsOfStay ArrivalDateBased="false">
                        <LengthOfStay MinMaxMessageType="SetMinLOS" Time="5"/>
                        <LengthOfStay MinMaxMessageType="SetMaxLOS" Time="10"/>
                    </LengthsOfStay>
                    <RestrictionStatus Status="Close"/>
                </BookingRule>
            </BookingRules>
        </RuleMessage>
    </RuleMessages>
</OTA_HotelBookingRuleNotifRQ>                        
                    

+Full Pattern LOS:

<OTA_HotelBookingRuleNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2017-07-01T11:25:15"
                             Version="5.000">
<RuleMessages HotelCode="PROPERTYCODE">
    <RuleMessage>
        <StatusApplicationControl InvCode="KingdomRoom" RatePlanCode="RACK" Start="2017-03-18"
                                  End="2017-03-20"/>
        <BookingRules>
            <BookingRule>
                <LengthsOfStay ArrivalDateBased="true" FixedPatternLength="8">
                    <LengthOfStay MinMaxMessageType="FullPatternLOS">
                        <LOS_Pattern FullPatternLOS="10001111" />
                    </LengthOfStay>
                </LengthsOfStay>
            </BookingRule>
        </BookingRules>
    </RuleMessage>
</RuleMessages>
</OTA_HotelBookingRuleNotifRQ>                        
                    

Response messages

We can have two types of response messages: success or error.

Restrictions Success Response XML

  • OTA_HotelBookingRuleNotifRS required

    The OTA_HotelBookingRuleNotifRS is the message used to indicate the status of processing the OTA_HotelBookingRuleNotifRQ message.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • Success optional

      An element that is not intended to contain any data. The presence of this empty element in the response message indicates that the incoming request message was processed successfully. Returning an empty element of this type indicates the successful processing of an OpenTravel message.

    • Errors optional

      A collection of errors that occurred during the processing of a message.

      • Error optional

        Indicates that an error occurred in the processing of the incoming request message. An error is defined as a malformed XML message that could not be processed and/or validated, or any business-level error that could happen..

        • @Type optional

          The Error element MUST contain the Type attribute that uses a recommended set of values to indicate the error type. The validating XSD can expect to accept values that it has NOT been explicitly coded for and process them by using Type ="Unknown". Refer to OC Error Type.

        • @Code optional

          If present, this refers to a table of coded values exchanged between applications to identify errors. Refer to OC Code Errors.

        • @ShortText optional

          An abbreviated version of the error in textual format.

Response examples

-Success

<OTA_HotelBookingRuleNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000"
                             TimeStamp="2017-03-01T09:30:47+08:00">
    <Success/>
</OTA_HotelBookingRuleNotifRS>

+Error

<OTA_HotelBookingRuleNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000"
                             TimeStamp="2017-03-01T09:30:47+08:00">
    <Errors>
        <Error Type="3" Code="400" ShortText="Invalid property code" />
    </Errors>
</OTA_HotelBookingRuleNotifRS>

Rates

Set and update rates

The rates api service allows you to send and update rate amounts for specific days and rateplans.

When you launch a insert/update/delete request, the information is updated in a transactional and not partial way, so if the request fails, information is not updated.

Action Endpoint
Set and update rates POST /ari/v1/OTA_HotelRateAmountNotifRQ

Request XML

  • OTA_HotelRateAmountNotifRQ required

    This message is used to provide a notification of a new rate plan created for a hotel, and to synchronize the rate plan between systems for booking.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • RateAmountMessages required

      A collection of RateAmountMessages that define the rate changes to be made.

      • @HotelCode required

        The code that uniquely identifies a single hotel property. The hotel code is decided between vendors.

      • RateAmountMessage required

        Defines the rate changes to be made.

        • StatusApplicationControl required

          Information on what the RateAmount Message applies to (i.e. the combination of inventory and rate codes) and the period of application. The StatusApplicationControl class is used to indicate to which block codes/rate plans/inventory codes a status should be applied.

          • @InvCode required

            Inventory code. (Roomtype)

          • @RatePlanCode required

            A string value may be used to request a particular code or an ID if the guest qualifies for a specific rate, such as AARP, AAA, a corporate rate, etc., or to specify a negotiated code as a result of a negotiated rate.

          • @Start required

            The starting value of the time span.

            Format is YYYY-MM-DD.

          • @End required

            The ending value of the time span. Can not be greater than the defined ARI date range restrictions

          • @Mon, @Tue, @Weds, @Thur, @Fri, @Sat, @Sun optional

            When true, applies only to a particular week day in the given time span.

        • Rates required

          A collection of rate changes to be synchronized between systems.

          • Rate required

            The BookingRule element defines restrictions to rates and stays at the hotel for a given rate plan, room type or rate plan/room type combination.

            • BaseByGuestAmts required

              A collection of Base charges by number of guests.

              • BaseByGuestAmt required

                Base charge for a given number of guests for a given age qualifying code.

                • @AgeQualifyingCode optional

                  Defines minimum age range or age category of a guest. Code based on: OC Age Categories definition

                • @NumberOfGuests required

                  The number of guests associated with this base charge.

                • @AmountAfterTax required

                  The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                  This field is an integer number. (e.g. if you want to provide a price of 33.05 EUR per night, you should supply: AmountAfterTax="3005" DecimalPlaces="2")

                  e.g. if AmountAfterTax="10056" DecimalPlaces="2", that means a price of 100.56

                  Zero amounts are only allowed for child and infant rates.

                • @DecimalPlaces required

                  The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                  Maximum value allowed is 3.

Request examples

By clicking on the example name you can fold/unfold it

-Basic example:

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            TimeStamp="2017-03-08T07:38:54.729Z" Version="5.000">
    <RateAmountMessages HotelCode="PROPERTYCODE">
        <RateAmountMessage>
            <StatusApplicationControl InvCode="SIN" RatePlanCode="RACK" Start="2017-07-24" End="2017-07-31"/>
            <Rates>
                <Rate>
                    <BaseByGuestAmts>
                        <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3895" DecimalPlaces="2"/>
                    </BaseByGuestAmts>
                </Rate>
            </Rates>
        </RateAmountMessage>
    </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>                            

+Complete example:

<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="EchoToken"
                            TimeStamp="2017-03-08T07:38:54.729Z" Version="5.000">
    <RateAmountMessages HotelCode="PROPERTYCODE">
        <RateAmountMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="RACK" Start="2017-07-20" End="2017-07-22"/>
            <Rates>
                <Rate>
                    <BaseByGuestAmts>
                        <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                        <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                        <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                        DecimalPlaces="2"/>
                        <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                        DecimalPlaces="2"/>
                    </BaseByGuestAmts>
                </Rate>
            </Rates>
        </RateAmountMessage>
        <RateAmountMessage>
            <StatusApplicationControl InvCode="DBL" RatePlanCode="EARLY" Start="2017-07-25" End="2017-07-29"/>
            <Rates>
                <Rate>
                    <BaseByGuestAmts>
                        <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="3000" DecimalPlaces="2"/>
                        <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="1000"
                                        DecimalPlaces="2"/>
                        <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="2" AmountAfterTax="1500"
                                        DecimalPlaces="2"/>
                        <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="2000"
                                        DecimalPlaces="2"/>
                    </BaseByGuestAmts>
                </Rate>
            </Rates>
        </RateAmountMessage>
    </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>                            

Response messages

We can have two types of response messages: success or error.

Rates Success Response XML

  • OTA_HotelBookingRuleNotifRS required

    The OTA_HotelBookingRuleNotifRS is the message used to indicate the status of processing the OTA_HotelBookingRuleNotifRQ message.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • Success optional

      An element that is not intended to contain any data. The presence of this empty element in the response message indicates that the incoming request message was processed successfully. Returning an empty element of this type indicates the successful processing of an OpenTravel message.

    • Errors optional

      A collection of errors that occurred during the processing of a message.

      • Error optional

        Indicates that an error occurred in the processing of the incoming request message. An error is defined as a malformed XML message that could not be processed and/or validated, or any business-level error that could happen.

        • @Type optional

          The Error element MUST contain the Type attribute that uses a recommended set of values to indicate the error type. The validating XSD can expect to accept values that it has NOT been explicitly coded for and process them by using Type ="Unknown". Refer to OC Error Type.

        • @Code optional

          If present, this refers to a table of coded values exchanged between applications to identify errors. Refer to OC Code Errors.

        • @ShortText optional

          An abbreviated version of the error in textual format.

Response examples

By clicking on the example name you can fold/unfold it

-Success

<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000"
                            TimeStamp="2017-03-01T09:30:47+08:00">
    <Success/>
</OTA_HotelRateAmountNotifRS>

+Error

<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000"
                            TimeStamp="2017-03-01T09:30:47+08:00">
    <Errors>
        <Error Type="3" Code="400" ShortText="Invalid property code" />
    </Errors>
</OTA_HotelRateAmountNotifRS>

Read Calendar

Read the calendar for a hotel for date range

The calendar read allows you to consult with the ARI for a provided Hotel Code and date period.

It returns all the Availability restrictions, Inventory and Rates set for all RatePlans for the hotel for that period

Action Endpoint
Read calendar GET /ari/v1/OC_ReadCalendarRQ

Request XML

  • OC_ReadCalendarRQ required

    This message is used to request calendar ARI dates for date period for a single property.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • Property required

      A node specifying the Property code and the Start/End of the period.

      • @Code required

        The code that uniquely identifies a single hotel property. The hotel code is decided between vendors.

      • @Start required

        The starting value of the time span. Format is YYYY-MM-DD.

      • @End required

        The ending value of the time span. The whole period can not be greater than 31 days.

      • @Mon, @Tue, @Wed, @Thu, @Fri, @Sat, @Sun optional

        When true, applies only to a particular week day in the given time span.
        So for example Mon="true" Tue="true" will return info only for Mondays and Tuesdays in the period.

Request examples

By clicking on the example name you can fold/unfold it

-Basic example:

<OC_ReadCalendarRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE" Start="2017-04-15" End="2017-04-16" />
</OC_ReadCalendarRQ>                        

+Complete example:

<OC_ReadCalendarRQ xmlns="http://odigeoconnect.com/2017">
    <Property Code="PROPERTYCODE" Start="2017-04-10" End="2017-04-17" Sat="true" Sun="true"/>
</OC_ReadCalendarRQ>                        

Response messages

We can have two types of response messages: success or error.

Calendar Read Success Response XML

  • OC_ReadCalendarRS required

    The OC_ReadCalendarRS is the result from making a request with the OC_ReadCalendarRQ message. The result is composed of 3 different sections, containing all the info set with the ARI messages.
    Please note:
    1.This endpoint returns all the data set in the Availability restrictions, Inventory and Rates
    2.The data is given per date on the RatePlan level.
    3.In case of any inconsistencies when setting the ARI rates, inconsistencies may appear here.
    3.In case some data is not present in the database it won't be returned. So blank dates are possible.
    4.In case of any error, it will be reported in Errors.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • Success optional

      An element that is not intended to contain any data. The presence of this empty element in the response message indicates that the incoming request message was processed successfully. Returning an empty element of this type indicates the successful processing of an message.

    • Errors optional

      A collection of errors that occurred during the processing of a message. In case of an error, the other parts of the response are not shown.

      • Error optional

        Indicates that an error occurred in the processing of the incoming request message. An error is defined as a malformed XML message that could not be processed and/or validated, or any business-level error that could happen.

        • @Type optional

          The Error element MUST contain the Type attribute that uses a recommended set of values to indicate the error type. The validating XSD can expect to accept values that it has NOT been explicitly coded for and process them by using Type ="Unknown". Refer to OC Error Type.

        • @Code optional

          If present, this refers to a table of coded values exchanged between applications to identify errors. Refer to OC Code Errors.

        • @ShortText optional

          An abbreviated version of the error in textual format.

    • Property optional

      In case of Success this element is mandatory. Gives information about the Property. Contains the response data.

      • @Code required

        The code that uniquely identifies a single property.

      • AvailabilityRestrictions required

        Contains the Availability restrictions. (set in the Availability restrictions endpoint). Could be empty in case no Availability restrictions were found for the period.

        • AvailabilityRestriction required

          This element defines restrictions to rates and stays at the hotel for a single date for a given rate plan, room type or rate plan/room type combination.

          • @Date required

            The date for which the restrictions are valid. Format is YYYY-MM-DD.

          • @RoomTypeCode required

            RoomType's code.

          • @RatePlanCode optional

            RatePlanCode - if provided then the restriction applies to the corresponding RoomType. If not provided then the restriction applies for the RoomType.

            • Status optional

              Identifies the availability status of an item. (Open, Close)

              • @Closed required

                If true then the item is Closed. If false the item is Open

            • AdvancedBookingOffset optional

              • @Min required

                Minimum ISO-8601 duration before the arrival date for which this rate plan may be booked.

              • @Max required

                Maximum ISO-8601 duration before the arrival date for which this rate plan may be booked.

            • MinLOS

              Defines the minimum Length of stay (LOS)

              • @Days required

                Number of days defining allowable lengths of stay (LOS).

              • @ArrivalDateBased required

                True indicates that LOS is based on arrival date. False indicates that LOS is based on stay date.

            • MaxLos optional

              Defines the maximum Length of stay (LOS). Maximum 28 days.

              • @Days required

                Number of days defining allowable lengths of stay (LOS).

              • @ArrivalDateBased required

                True indicates that LOS is based on arrival date. False indicates that LOS is based on stay date.

            • LOS_Pattern optional

              To identify the open and closed status by lengths of stay (LOS) (left to right) ex 1011 day 1 open, day 2 closed, day 3 open, day 4 open...

              • @FullPatternLOS required

                The size of the pattern cannot be greater than 31 days. Left to right

      • Inventories required

        Contains the Inventory. (set in the Inventory endpoint). Could be empty in case no Inventories were found for the period.

        • Inventory optional

          This is the inventory information for a given room type / rate plan

          • @Date required

            The Inventory date. Format is YYYY-MM-DD.

          • @RoomTypeCode required

            RoomType Code.

          • @RatePlanCode optional

            RatePlan Code - if not set then this is the Inventory for the RoomType

          • @Count required

            Number of units of inventory

      • Rates required

        Contains the Rates. (set in the Rates endpoint). Could be empty in case no Rates were found for the period.

        • Rate Contains single rate for RatePlan per Date

          • Date required

            The date for which the rates are valid.

          • RoomTypeCode required

            Inventory Code (Room type).

          • RatePlanCode required

            Rate Plan code

          • BaseByGuestAmts required

            A collection of Base charges by number of guests.

            • BaseByGuestAmt required

              Base charge for a given number of guests for a given age qualifying code.

              • AgeQualifyingCode optional

                Defines minimum age range or age category of a guest. Code based on: OC Age Categories definition

              • NumberOfGuests required

                The number of guests associated with this base charge.

              • AmountAfterTax required

                The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

              • DecimalPlaces required

                The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency. Maximum value allowed is 3.

Response examples

-Success (Basic)

<OC_ReadCalendarRS xmlns="http://odigeoconnect.com/2017">
    <Success/>
    <Property Code="PROPERTYCODE">
        <AvailabilityRestrictions>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="SINGLE" >
                <Status Closed="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <Status Closed="false" ClosedToArrival="true" ClosedToDeparture="true" />
                <AdvancedBookingOffset Min="PT24H" Max="PT48H"/>
                <MinLOS Days="1" ArrivalDateBased="true"/>
                <MaxLOS Days="10" ArrivalDateBased="true" />
            </AvailabilityRestriction>
        </AvailabilityRestrictions>
        <Inventories>
            <Inventory Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK" Count="3" />
            <Inventory Date="2017-04-15" RoomTypeCode="SINGLE" Count="8" />
        </Inventories>
        <Rates>
            <Rate Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <BaseByGuestAmts>
                    <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                    <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                </BaseByGuestAmts>
            </Rate>
        </Rates>
    </Property>
</OC_ReadCalendarRS>

+Success (With full pattern)

<OC_ReadCalendarRS xmlns="http://odigeoconnect.com/2017">
    <Success/>
    <Property Code="PROPERTYCODE">
        <AvailabilityRestrictions>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="SINGLE" >
                <Status Closed="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <Status Closed="false" ClosedToArrival="true" ClosedToDeparture="true" />
                <AdvancedBookingOffset Min="PT24H" Max="PT48H"/>
                <MinLOS Days="1" ArrivalDateBased="false"/>
                <MaxLOS Days="10" ArrivalDateBased="false" />
                <LOS_Pattern FullPatternLOS="10001111" />
            </AvailabilityRestriction>
        </AvailabilityRestrictions>
        <Inventories>
            <Inventory Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK" Count="3" />
            <Inventory Date="2017-04-15" RoomTypeCode="SINGLE" Count="8" />
        </Inventories>
        <Rates>
            <Rate Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <BaseByGuestAmts>
                    <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                    <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                </BaseByGuestAmts>
            </Rate>
        </Rates>
    </Property>
</OC_ReadCalendarRS>

+Error

<OC_ReadCalendarRS xmlns="http://odigeoconnect.com/2017">
    <Errors>
        <Error Code="400">Bad Request</Error>
    </Errors>
</OC_ReadCalendarRS>

+Success (Full)

<OC_ReadCalendarRS xmlns="http://odigeoconnect.com/2017">
    <Success/>
    <Property Code="PROPERTYCODE">
        <AvailabilityRestrictions>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="SINGLE" >
                <Status Closed="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <Status Closed="false" ClosedToArrival="true" ClosedToDeparture="true" />
                <AdvancedBookingOffset Min="PT24H" Max="PT48H"/>
                <MinLOS Days="1" ArrivalDateBased="true"/>
                <MaxLOS Days="10" ArrivalDateBased="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="DBL" >
                <Status Closed="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-15" RoomTypeCode="DBL" RatePlanCode="RACK">
                <Status Closed="false" ClosedToArrival="true" ClosedToDeparture="true" />
                <AdvancedBookingOffset Min="PT24H" Max="PT48H"/>
                <MinLOS Days="1" ArrivalDateBased="true"/>
                <MaxLOS Days="10" ArrivalDateBased="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-16" RoomTypeCode="SINGLE" >
                <Status Closed="false" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-16" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <Status Closed="false" ClosedToArrival="true" ClosedToDeparture="true" />
                <AdvancedBookingOffset Min="PT24H" Max="PT48H"/>
                <MinLOS Days="1" ArrivalDateBased="true"/>
                <MaxLOS Days="10" ArrivalDateBased="true" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-16" RoomTypeCode="DBL" >
                <Status Closed="false" />
            </AvailabilityRestriction>
            <AvailabilityRestriction Date="2017-04-16" RoomTypeCode="DBL" RatePlanCode="RACK">
                <Status Closed="false" ClosedToArrival="true" ClosedToDeparture="true" />
                <AdvancedBookingOffset Min="PT24H" Max="PT48H"/>
                <MinLOS Days="1" ArrivalDateBased="true"/>
                <MaxLOS Days="10" ArrivalDateBased="true" />
            </AvailabilityRestriction>
        </AvailabilityRestrictions>
        <Inventories>
            <Inventory Date="2017-04-15" RoomTypeCode="DBL" RatePlanCode="RACK" Count="5" />
            <Inventory Date="2017-04-15" RoomTypeCode="DBL" RatePlanCode="NRF" Count="3" />
            <Inventory Date="2017-04-15" RoomTypeCode="DBL" Count="8" />
            <Inventory Date="2017-04-16" RoomTypeCode="DBL" RatePlanCode="RACK" Count="6" />
            <Inventory Date="2017-04-16" RoomTypeCode="DBL" RatePlanCode="NRF" Count="4" />
            <Inventory Date="2017-04-16" RoomTypeCode="DBL" Count="10" />
        </Inventories>
        <Rates>
            <Rate Date="2017-04-15" RoomTypeCode="DBL" RatePlanCode="RACK">
                <BaseByGuestAmts>
                    <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                    <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                </BaseByGuestAmts>
            </Rate>
            <Rate Date="2017-04-15" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <BaseByGuestAmts>
                    <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                    <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                </BaseByGuestAmts>
            </Rate>
            <Rate Date="2017-04-16" RoomTypeCode="SINGLE" RatePlanCode="RACK">
                <BaseByGuestAmts>
                    <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                    <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                </BaseByGuestAmts>
            </Rate>
            <Rate Date="2017-04-16" RoomTypeCode="DBL" RatePlanCode="RACK">
                <BaseByGuestAmts>
                    <BaseByGuestAmt NumberOfGuests="1" AmountAfterTax="3000" DecimalPlaces="2"/>
                    <BaseByGuestAmt NumberOfGuests="2" AmountAfterTax="4000" DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="7" NumberOfGuests="1" AmountAfterTax="2000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="8" NumberOfGuests="1" AmountAfterTax="3000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                    <BaseByGuestAmt AgeQualifyingCode="10" NumberOfGuests="1" AmountAfterTax="4000"
                                    DecimalPlaces="2"/>
                </BaseByGuestAmts>
            </Rate>
        </Rates>
    </Property>
</OC_ReadCalendarRS>

Reservations API

Introduction & Guidelines

The reservation api service allows partners to receive reservations made by Odigeo customers

The message format used is XML (OTA) over HTTPS TLS (v1, v1.1, v.1.2).
Is mandatory to include content-type: application/xml

EchoToken

EchoTokens ensure that each request can be uniquely identified (GUID) for troubleshooting purposes in both testing and production environments.
All requests you receive from OdigeoConnect will contain an EchoToken, and your response must include the same EchoToken as received in the request.

Endpoints overview:

Action Endpoint
Reservation Notification POST https://your-domain/your-path
Reservation read POST /reservation/v1/OTA_ReadRQ

Reservation notification

T​h​e reservation creation notification service sends a new booking.

Endpoints overview:

Action Endpoint
Reservation Notification POST https://your-domain/your-path

Create Reservation Request XML

  • OTA_HotelResNotifRQ required

    The OTA_HotelResNotifRQ

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • @ResStatus required

      Values accepted: Book

    • POS optional

      The point-of-sale data that allows to identify the trading partner that is sending the request or the response message.

      • Source required

        This holds the details about the requestor.

        • RequestorID required

          An identifier of the entity making the request (e.g. ATA/IATA/ID number, Electronic Reservation Service Provider (ERSP), Association of British Travel Agents.(ABTA)).

          • @Type required

            A reference to the type of object defined by the UniqueID element. Refer to OpenTravel Code List Unique ID Type (UIT).

          • @ID required

            A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.

        • BookingChannel required

          Specifies the booking channel type and whether it is the primary means of connectivity of the source.

          • CompanyName
    • HotelReservations required

      A collection of hotel reservations.

      • HotelReservation required

        Contains a hotel reservation.

        • @CreateDateTime required

          Time stamp of the creation.

        • UniqueID required

          Used to provide PMS and/or CRS identifiers. An identifier used to uniquely reference an object in a system (e.g. an airline reservation reference, customer profile reference, booking confirmation number, or a reference to a previous availability quote).

        • @Type required

          Refer to OpenTravel Code List Unique ID Type (UIT).

        • @ID required

          Reservation ID

        • RoomStays required

          Collection of room stays. A collection of RoomStay objects. Room stays associated with this reservation.

          • RoomStay required

            Details on the Room Stay including Guest Counts, Time Span of this Room Stay, pointers to Res Guests, guest Memberships, Comments and Special Requests pertaining to this particular Room Stay and finally finacial information related to the Room Stay, including Guarantee, Deposit and Payment and Cancellation Penalties.

            • RatePlans required

              A collection of Rate Plans associated with a particular Room Stay

              • RatePlan required

                 

                • @RatePlanCode required

                   

                • CancelPenalties required

                  Collection of cancellation penalties.

                  • CancelPenalty required

                    Defines the cancellation penalty of the hotel facility.

                • MealsIncluded required

                  Defines which meals are included with this rate program.

            • RoomRates required

              A collection of Room Rates associated with a particular Room Stay. Each Room Rate combination can have multiple rates. Example King room, Rack rate plan, Monday through Thursday, weekday amount, Friday and Saturday, weekend amount.

              • RoomRate required

                Room Rate specific information

              • @RoomTypeCode required

                Specfic system room type code, ex: A1K, A1Q etc.

              • @RatePlanCode required

                A string value may be used to request a particular code or an ID if the guest qualifies for a specific rate, such as AARP, AAA, a corporate rate, etc., or to specify a negotiated code as a result of a negotiated rate.

              • @NumberOfUnits required

                The number of rooms. Please note that value is always 1.

                • Rates optional

                  Individual rate amount. This rate is valid for a range of number of occupants and an occupant type.

                  • Rate required

                    The Rate contains a collection of elements that define the amount of the rate

                    • RateTimeUnit required

                      Indicates the time unit for the rate.

                    • EffectiveDate required

                      Indicates the starting date

                    • ExpireDate required

                      Indicates the ending date

                      • Base optional

                        The total amount charged for the service including additional amounts and fees.

                        • @AmountAfterTax required

                          The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                        • @CurrencyCode required

                          An ISO 4217 (3) alpha character code that specifies a monetary unit.

                        • @DecimalPlaces required

                          The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                          Maximum value allowed is 3.

                      • Discount optional

                        Discount percentage and/or Amount, code and textual reason for discount

                        • @AmountAfterTax required

                          The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                        • @CurrencyCode required

                          An ISO 4217 (3) alpha character code that specifies a monetary unit.

                        • @DecimalPlaces required

                          The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                          Maximum value allowed is 3.

                        • @Percent required

                          Discount percentage

                      • Total optional

                        The total amount charged for the service including additional amounts and fees.

                        • @AmountAfterTax required

                          The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                        • @CurrencyCode required

                          An ISO 4217 (3) alpha character code that specifies a monetary unit.

                        • @DecimalPlaces required

                          The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                          Maximum value allowed is 3.

              • RoomRateDescription optional

                The description or name of a room rate

                • Text required

                  Provides text and indicates whether it is formatted or not.

            • GuestCounts required

              A collection of Guest Counts associated with Room Stay. A child Guest Count element is required for each distinct age group.A collection of GuestCount by age group.

              • GuestCount required

                A recurring element that identifies the number of guests and ages of the guests.

              • @AgeQualifyingCode required

                Defines minimum age range or age category of a guest. Code based on: OC Age Categories definition

              • @Count required

                The number of guests in one AgeQualifyingCode or Count.

              • @Age optional

                The exact Age of the guest - e.g. 11. (ToDo - Javi) Please check for example using this in the Multi Discount request example.

            • Discount optional

              Discount percentage and/or Amount, code and textual reason for discount. (ToDo - Javi)This is the sum of all discounts found in RoomRate > Rates

              • @AmountAfterTax required

                The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

              • @CurrencyCode required

                An ISO 4217 (3) alpha character code that specifies a monetary unit.

              • @DecimalPlaces required

                The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                Maximum value allowed is 3.

              • @Percent required

                Discount percentage

            • TimeSpan optional

              Used to specify a time window range by either specifying an earliest and latest date for the start date and end date or by giving a date with a time period that can be applied before and/or after the start date.

              • Start optional

                The starting value of the time span.

              • End optional

                The ending value of the time span.

            • Comments optional

              A collection of comments.

              • Comment required

                Comment details

                • Text required

                  Provides text and indicates whether it is formatted or not.

            • Total required

              The total amount charged for the Room Stay including additional occupant amounts and fees. If TaxInclusive is set to True, then taxes are included in the total amount.

              • @AmountAfterTax required

                The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

              • @CurrencyCode required

                An ISO 4217 (3) alpha character code that specifies a monetary unit.

              • @DecimalPlaces required

                The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                Maximum value allowed is 3.

        • ResGuests required

          Collection of guests associated with the reservation.

          • ResGuest required

            The ResGuest object contains the information about a guest associated with a reservation.

            • Profiles required

              A collection of Profile objects or Unique IDs of Profiles.

              • ProfileInfo required

                A collection of Profile objects or Unique IDs of Profiles.

                • Profile required

                  Provides detailed information regarding either a company or a customer profile.Root element for profile content.

                  • Customer required

                    Detailed customer information for this profile.Contains basic data on the customer's identity, location, relationships, finances, memberships, etc.

                    • PersonName required

                      Detailed name information for the customer.This provides name information for a person.

                      • NamePrefix optional

                        Salutation of honorific (e.g. Mr., Mrs., Ms., Miss, Dr.)

                      • GivenName required

                        Given name, first name or names.

                      • Surname required

                        Family name, last name. May also be used for full name if the sending system does not have the ability to separate a full name into its parts, e.g. the surname element may be used to pass the full name.

                    • Telephone required

                      Information on a telephone number for the customer.

                    • Email required

                      Information on an email address for the customer.

                    • Address optional

                      Detailed information on an address for the customer.

                      • AddressLine optional

                        Free form address details.

                      • CityName optional

                        City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address).

                      • PostalCode optional

                        Post Office Code number.

                      • StateProv optional

                        State or Province name (e.g., Texas).State, province, or region name or code needed to identify location.

                      • CountryName optional

                        ISO CODE for customer country

        • ResGlobalInfo required

          ResGlobalInfo is a container for various information that affects the Reservation as a whole. These include global comments, counts, reservation IDs and payment methods.

          • TimeSpan required

            The Time Span which covers the Room Stay.Used to specify a time window range by either specifying an earliest and latest date for the start date and end date or by giving a date with a time period that can be applied before and/or after the start date.

            • @Start required

              The starting value of the time span.

            • @End required

              The ending value of the time span.

          • Comments optional

            A collection of comments.

            • Comment required

              Comment details

              • Text required

                Provides text and indicates whether it is formatted or not.

          • Guarantee required

            The guarantee information associated to the Reservation or a particular Room Stay or Service.The guarantee information to hold a reservation

            • GuaranteesAccepted required

              Guarantee Detail.

              • PaymentCard required

                Details of a debit or credit card.Specific payment card information.

                • @ExpireDate required

                  Indicates the ending date.

                • CardHolderName required

                  Card holder name

                  • PlainText required

                    Card holder name text

                • SeriesCode required

                  Verification digits. Secure information that supports PCI tokens, data masking and other encryption methods.

                  • PlainText required

                    Verification digits text.

          • Total required

            The total amount charged for the accommodation including additional occupant amounts and fees. If TaxInclusive is set to True, then taxes are included in the total amount.

            • @AmountAfterTax required

              The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

            • @CurrencyCode required

              An ISO 4217 (3) alpha character code that specifies a monetary unit.

            • @DecimalPlaces required

              The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
              Maximum value allowed is 3.

          • BasicPropertyInfo required

            Property information for the reservation. An abbreviated short summary of hotel descriptive information.

            • @HotelCode required

              The code that uniquely identifies a single property.

Request examples

By clicking on the example name you can fold/unfold it

-Basic

<OTA_HotelResNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2017-03-09T21:32:52+02:00"
                     EchoToken="GUID" ResStatus="Book">
    <HotelReservations>
        <HotelReservation CreateDateTime="2017-03-09T21:31:52+02:00">
            <UniqueID Type="14" ID="123456789abcdef"/>
            <RoomStays>
                <RoomStay>
                    <RatePlans>
                        <RatePlan RatePlanCode="NRF">
                            <CancelPenalties>
                                <CancelPenalty PolicyCode="1" />
                            </CancelPenalties>
                            <MealsIncluded MealPlanCodes="14"/>
                        </RatePlan>
                    </RatePlans>
                    <RoomRates>
                        <RoomRate RoomTypeCode="SRSB" RatePlanCode="NRF" NumberOfUnits="1"/>
                    </RoomRates>
                    <GuestCounts>
                        <GuestCount AgeQualifyingCode="10" Count="1"/>
                        <GuestCount AgeQualifyingCode="8" Count="2" Age="7" />
                        <GuestCount AgeQualifyingCode="7" Count="3" Age="1" />
                    </GuestCounts>
                    <Total AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
                </RoomStay>
            </RoomStays>
            <ResGuests>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                      <GivenName>Mike</GivenName>
                                      <Surname>Johnson</Surname>
                                    </PersonName>
                                    <Telephone PhoneNumber="+34 123456789"/>
                                    <Email>lodging.support+123456789abcdef@odigeoconnect.com</Email>
                                    <Address>
                                      <AddressLine>Bailén, 67</AddressLine>
                                      <CityName>Barcelona</CityName>
                                      <PostalCode>08009</PostalCode>
                                      <StateProv>Barcelona</StateProv>
                                      <CountryName>ES</CountryName>
                                    </Address>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
            </ResGuests>
            <ResGlobalInfo>
                <TimeSpan Start="2017-07-17" End="2017-07-18"/>
                <Guarantee>
                    <GuaranteesAccepted>
                        <GuaranteeAccepted>
                            <PaymentCard ExpireDate="0320">
                                <CardHolderName>Mr Mike Johnson</CardHolderName>
                                <CardNumber>
                                    <PlainText>4444444444444444</PlainText>
                                </CardNumber>
                                <SeriesCode>
                                    <PlainText>333</PlainText>
                                </SeriesCode>
                            </PaymentCard>
                        </GuaranteeAccepted>
                    </GuaranteesAccepted>
                </Guarantee>
                <Total AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
                <BasicPropertyInfo HotelCode="PROPERTYCODE"/>
            </ResGlobalInfo>
        </HotelReservation>
    </HotelReservations>
</OTA_HotelResNotifRQ>

+Multiple room stays

<OTA_HotelResNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2017-03-09T21:32:52+02:00"
                     EchoToken="GUID" ResStatus="Book">
   <POS>
     <Source>
       <RequestorID Type="18" ID="Partner" />
       <BookingChannel Type="2" Primary="true">
         <CompanyName>Odigeo</CompanyName>
       </BookingChannel>
     </Source>
   </POS>
  <HotelReservations>
      <HotelReservation CreateDateTime="2017-03-09T21:31:52+02:00">
          <UniqueID Type="14" ID="123456789abcdef"/>
          <RoomStays>
              <RoomStay>
                  <RatePlans>
                      <RatePlan RatePlanCode="NRF">
                          <CancelPenalties>
                              <CancelPenalty PolicyCode="1"/>
                          </CancelPenalties>
                          <MealsIncluded MealPlanCodes="14"/>
                      </RatePlan>
                  </RatePlans>
                  <RoomRates>
                      <RoomRate RoomTypeCode="SRSB" RatePlanCode="NRF" NumberOfUnits="1"/>
                  </RoomRates>
                  <GuestCounts>
                      <GuestCount AgeQualifyingCode="10" Count="1"/>
                  </GuestCounts>
                  <Total AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
              </RoomStay>
              <RoomStay>
                  <RatePlans>
                      <RatePlan RatePlanCode="NRF">
                          <CancelPenalties>
                              <CancelPenalty PolicyCode="1"/>
                          </CancelPenalties>
                          <MealsIncluded MealPlanCodes="14"/>
                      </RatePlan>
                  </RatePlans>
                  <RoomRates>
                      <RoomRate RoomTypeCode="DRDT" RatePlanCode="NRF" NumberOfUnits="1"/>
                  </RoomRates>
                  <GuestCounts>
                      <GuestCount AgeQualifyingCode="10" Count="1"/>
                      <GuestCount AgeQualifyingCode="8" Count="2" Age="7" />
                      <GuestCount AgeQualifyingCode="7" Count="3" Age="1" />
                  </GuestCounts>
                  <Total AmountAfterTax="20000" CurrencyCode="EUR" DecimalPlaces="2"/>
              </RoomStay>
              <RoomStay>
                  <RatePlans>
                      <RatePlan RatePlanCode="NRF">
                          <CancelPenalties>
                              <CancelPenalty PolicyCode="1"/>
                          </CancelPenalties>
                          <MealsIncluded MealPlanCodes="14"/>
                      </RatePlan>
                  </RatePlans>
                  <RoomRates>
                      <RoomRate RoomTypeCode="DRDT" RatePlanCode="NRF" NumberOfUnits="1"/>
                  </RoomRates>
                  <GuestCounts>
                      <GuestCount AgeQualifyingCode="10" Count="2"/>
                  </GuestCounts>
                  <Total AmountAfterTax="20000" CurrencyCode="EUR" DecimalPlaces="2"/>
              </RoomStay>
          </RoomStays>
          <ResGuests>
              <ResGuest>
                  <Profiles>
                      <ProfileInfo>
                          <Profile>
                              <Customer>
                                  <PersonName>
                                      <GivenName>Mike</GivenName>
                                      <Surname>Johnson</Surname>
                                  </PersonName>
                                  <Telephone PhoneNumber="+34 123456789"/>
                                  <Email>lodging.support+123456789abcdef@odigeoconnect.com</Email>
                                  <Address>
                                      <AddressLine>Bailén, 67</AddressLine>
                                      <CityName>Barcelona</CityName>
                                      <PostalCode>08009</PostalCode>
                                      <StateProv>Barcelona</StateProv>
                                      <CountryName>ES</CountryName>
                                  </Address>
                              </Customer>
                          </Profile>
                      </ProfileInfo>
                  </Profiles>
              </ResGuest>
              <ResGuest>
                  <Profiles>
                      <ProfileInfo>
                          <Profile>
                              <Customer>
                                  <PersonName>
                                      <GivenName>Yoko</GivenName>
                                      <Surname>Ono</Surname>
                                  </PersonName>
                              </Customer>
                          </Profile>
                      </ProfileInfo>
                  </Profiles>
              </ResGuest>
              <ResGuest>
                  <Profiles>
                      <ProfileInfo>
                          <Profile>
                              <Customer>
                                  <PersonName>
                                      <GivenName>Sean</GivenName>
                                      <Surname>Taro Ono</Surname>
                                  </PersonName>
                              </Customer>
                          </Profile>
                      </ProfileInfo>
                  </Profiles>
              </ResGuest>
              <ResGuest>
                  <Profiles>
                      <ProfileInfo>
                          <Profile>
                              <Customer>
                                  <PersonName>
                                      <GivenName>Baby</GivenName>
                                      <Surname>Ono</Surname>
                                  </PersonName>
                              </Customer>
                          </Profile>
                      </ProfileInfo>
                  </Profiles>
              </ResGuest>
              <ResGuest>
                  <Profiles>
                      <ProfileInfo>
                          <Profile>
                              <Customer>
                                  <PersonName>
                                      <GivenName>Ana</GivenName>
                                      <Surname>Lopez</Surname>
                                  </PersonName>
                              </Customer>
                          </Profile>
                      </ProfileInfo>
                  </Profiles>
              </ResGuest>
              <ResGuest>
                  <Profiles>
                      <ProfileInfo>
                          <Profile>
                              <Customer>
                                  <PersonName>
                                      <GivenName>Luis</GivenName>
                                      <Surname>Perez</Surname>
                                  </PersonName>
                              </Customer>
                          </Profile>
                      </ProfileInfo>
                  </Profiles>
              </ResGuest>
          </ResGuests>
          <ResGlobalInfo>
              <TimeSpan Start="2017-07-28" End="2017-07-30"/>
              <Guarantee>
                  <GuaranteesAccepted>
                      <GuaranteeAccepted>
                          <PaymentCard ExpireDate="0320">
                              <CardHolderName>Mr Mike Johnson</CardHolderName>
                              <CardNumber>
                                  <PlainText>4444444444444444</PlainText>
                              </CardNumber>
                              <SeriesCode>
                                  <PlainText>333</PlainText>
                              </SeriesCode>
                          </PaymentCard>
                      </GuaranteeAccepted>
                  </GuaranteesAccepted>
              </Guarantee>
              <Total AmountAfterTax="50000" CurrencyCode="EUR" DecimalPlaces="2"/>
              <BasicPropertyInfo HotelCode="PROPERTYCODE"/>
          </ResGlobalInfo>
      </HotelReservation>
  </HotelReservations>
</OTA_HotelResNotifRQ>

+Multi Discount

<OTA_HotelResNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2017-03-09T21:32:52+02:00"
                     EchoToken="GUID" ResStatus="Book">
     <POS>
       <Source>
         <RequestorID Type="18" ID="Partner" />
         <BookingChannel Type="2" Primary="true">
           <CompanyName>Odigeo</CompanyName>
         </BookingChannel>
       </Source>
     </POS>
    <HotelReservations>
        <HotelReservation CreateDateTime="2017-03-09T21:31:52+02:00">
            <UniqueID Type="14" ID="RESERVATION_ID"/>
            <RoomStays>
                <RoomStay>
                    <RatePlans>
                        <RatePlan RatePlanCode="RATE1">
                            <CancelPenalties>
                                <CancelPenalty PolicyCode="1"/>
                            </CancelPenalties>
                            <MealsIncluded MealPlanCodes="14"/>
                        </RatePlan>
                    </RatePlans>
                    <RoomRates>
                        <RoomRate RoomTypeCode="ROOM1" RatePlanCode="RATE1" NumberOfUnits="1">
                            <Rates>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-13" ExpireDate="2017-11-14">
                                    <Base AmountAfterTax="20000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="1000" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="19000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-14" ExpireDate="2017-11-15">
                                    <Base AmountAfterTax="12500" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="625" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="11875" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-15" ExpireDate="2017-11-16">
                                    <Base AmountAfterTax="12500" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="625" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="11875" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-16" ExpireDate="2017-11-17">
                                    <Base AmountAfterTax="20000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="1000" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="19000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                            </Rates>
                            <RoomRateDescription Name="RatePlanName">
                                <Text>Parent RatePlan Name</Text>
                            </RoomRateDescription>
                        </RoomRate>
                    </RoomRates>
                    <GuestCounts>
                        <GuestCount AgeQualifyingCode="10" Count="2"/>
                        <GuestCount AgeQualifyingCode="8" Count="1" Age="13"/>
                        <GuestCount AgeQualifyingCode="8" Count="2" Age="10"/>
                        <GuestCount AgeQualifyingCode="7" Count="1"/>
                    </GuestCounts>
                    <TimeSpan Start="2017-11-13" End="2017-11-17"/>
                    <Discount AmountAfterTax="3250" Percent="5" CurrencyCode="EUR" DecimalPlaces="2">
                        <DiscountReason>
                            <Text>Discount Name</Text>
                        </DiscountReason>
                    </Discount>
                    <Total AmountAfterTax="61750" CurrencyCode="EUR" DecimalPlaces="2"/>
                </RoomStay>
                <RoomStay>
                    <RatePlans>
                        <RatePlan RatePlanCode="NRF">
                            <CancelPenalties>
                                <CancelPenalty PolicyCode="1"/>
                            </CancelPenalties>
                            <MealsIncluded MealPlanCodes="14"/>
                        </RatePlan>
                    </RatePlans>
                    <RoomRates>
                        <RoomRate RoomTypeCode="DRDT" RatePlanCode="NRF" NumberOfUnits="1">
                            <Rates>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-13" ExpireDate="2017-11-14">
                                    <Base AmountAfterTax="13500" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="675" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="12825" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-14" ExpireDate="2017-11-15">
                                    <Base AmountAfterTax="12500" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="625" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="11875" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-15" ExpireDate="2017-11-16">
                                    <Base AmountAfterTax="12500" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="625" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="11875" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                                <Rate RateTimeUnit="Day" EffectiveDate="2017-11-16" ExpireDate="2017-11-17">
                                    <Base AmountAfterTax="13500" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Discount AmountAfterTax="675" CurrencyCode="EUR" DecimalPlaces="2" Percent="5">
                                        <DiscountReason>
                                            <Text>Discount Name</Text>
                                        </DiscountReason>
                                    </Discount>
                                    <Total AmountAfterTax="12825" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
							</Rates>
                            <RoomRateDescription Name="RatePlanName">
                                <Text>Parent RatePlan Name</Text>
                            </RoomRateDescription>
						</RoomRate>
					</RoomRates>
					<GuestCounts>
                        <GuestCount AgeQualifyingCode="10" Count="1"/>
                        <GuestCount AgeQualifyingCode="8" Count="1"/>
                    </GuestCounts>
                    <TimeSpan Start="2017-11-13" End="2017-11-17"/>
                    <Discount AmountAfterTax="2600" Percent="5" CurrencyCode="EUR" DecimalPlaces="2">
                        <DiscountReason>
                            <Text>Discount Name</Text>
                        </DiscountReason>
                    </Discount>
                    <Total AmountAfterTax="49400" CurrencyCode="EUR" DecimalPlaces="2">
                    </Total>
				</RoomStay>
			</RoomStays>
            <ResGuests>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <NamePrefix>Mr</NamePrefix>
                                        <GivenName>Mike</GivenName>
                                        <Surname>Johnson</Surname>
                                    </PersonName>
                                    <Telephone PhoneNumber="+34 123456789"/>
                                    <Email>lodging.support+RESERVATION_ID@odigeoconnect.com</Email>
                                    <Address>
                                        <AddressLine>Bailén, 67</AddressLine>
                                        <CityName>Barcelona</CityName>
                                        <PostalCode>08009</PostalCode>
                                        <StateProv>Barcelona</StateProv>
                                        <CountryName>ES</CountryName>
                                    </Address>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <NamePrefix>Ms</NamePrefix>
                                        <GivenName>Yoko</GivenName>
                                        <Surname>Ono</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <NamePrefix>Mr</NamePrefix>
                                        <GivenName>Sean</GivenName>
                                        <Surname>Taro Ono</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <NamePrefix>Mr</NamePrefix>
                                        <GivenName>Baby</GivenName>
                                        <Surname>Ono</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <NamePrefix>Ms</NamePrefix>
                                        <GivenName>Anna</GivenName>
                                        <Surname>Lopez</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <NamePrefix>Mr</NamePrefix>
                                        <GivenName>Luis</GivenName>
                                        <Surname>Perez</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
            </ResGuests>
            <ResGlobalInfo>
                <TimeSpan Start="2017-11-13" End="2017-11-17"/>
                <Guarantee>
                    <GuaranteesAccepted>
                        <GuaranteeAccepted>
                            <PaymentCard ExpireDate="0320">
                                <CardHolderName>Mr Mike Johnson</CardHolderName>
                                <CardNumber>
                                    <PlainText>4444444444444444</PlainText>
                                </CardNumber>
                                <SeriesCode>
                                    <PlainText>333</PlainText>
                                </SeriesCode>
                            </PaymentCard>
                        </GuaranteeAccepted>
                    </GuaranteesAccepted>
                </Guarantee>
                <Total AmountAfterTax="111150" CurrencyCode="EUR" DecimalPlaces="2"/>
                <BasicPropertyInfo HotelCode="PROPERTYCODE"/>
            </ResGlobalInfo>
        </HotelReservation>
    </HotelReservations>
</OTA_HotelResNotifRQ>

Response messages

We can have two types of response messages: success or error.

Create Reservation Notification Response XML

  • OTA_HotelResNotifRS required

    The OTA_HotelResNotifRS is the message that provides a notification about a created reservation

    • Success optional

      Gives feedback about a successful operation

    • Errors optional

      Gives feedback about the errors in an operation

      Cannot come together with Success tag

      • Error optional

        Gives specific information about an error.

        • @Type optional

          The Error element MUST contain the Type attribute that uses a recommended set of values to indicate the error type. The validating XSD can expect to accept values that it has NOT been explicitly coded for and process them by using Type ="Unknown". Refer to OC Error Type.

        • @Code optional

          If present, this refers to a table of coded values exchanged between applications to identify errors. Refer to OC Code Errors.

        • @ShortText optional

          An abbreviated version of the error in textual format.

Response examples

-Success

<OTA_HotelResNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2017-03-01T09:30:47+02:00"
                     EchoToken="GUID">
    <Success/>
</OTA_HotelResNotifRS>

+Error

<OTA_HotelResNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2017-03-01T09:30:47+02:00"
                     EchoToken="GUID">
    <Errors>
        <Error Type="12" Code="450" ShortText="Unable to process"/>
    </Errors>
</OTA_HotelResNotifRS>

Reservation read

The connected supplier should retrieve reservations, modifications and cancellations from Odigeo Connect using the OTA_ReadRQ message. Odigeo Connect will respond with a OTA_ResRetrieveRS that contain the reservations, modifications or cancellations that meet the request criteria in the read request.

Endpoints overview:

Action Endpoint
Reservation read POST /reservation/v1/OTA_ReadRQ

OTA_ReadRQ Request XML

  • OTA_ReadRQ required

    A generic message, available as an action on several OpenTravel services which requests a server to read and return the document type identified by the UniqueID element.

    • @EchoToken optional

      A reference for additional message identification, assigned by the requesting host system.

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • @MoreDataEchoToken optional

      Number of page of the resultset

    • ReadRequests required

      A grouping of Read Requests by travel vertical.

      • HotelReadRequest required

        To retrieve a hotel reservation.

        • @HotelCode optional

          The code that uniquely identifies a single hotel property.

        • SelectionCriteria required

          • @ResStatus required

            Specifies the status of the reservations to be delivered. (Book, Cancel, Modify)

          • @DateType required

            Specifies the type of date provided in the date time span attributes.
            CreateDate: The date the reservation was created.
            ArrivalDate: The arrival date of the reservation.
            DepartureDate: The departure date of the reservation.

          • @Start required

            The starting value of the time span (inclusive).

          • @End required

            The ending value of the time span (inclusive).

Request examples

By clicking on the example name you can fold/unfold it

-Basic

<OTA_ReadRQ Version="6.0" xmlns="http://www.opentravel.org/OTA/2003/05" MoreDataEchoToken="5" TimeStamp="2017-03-01T09:30:47+02:00" EchoToken="GUID">
    <ReadRequests>
        <HotelReadRequest HotelCode="PROPERTYCODE">
            <SelectionCriteria ResStatus="Book" DateType="CreateDate" Start="2018-05-01" End="2018-05-30" />
        </HotelReadRequest>
    </ReadRequests>
</OTA_ReadRQ>

OTA_ResRetrieveRS Response XML

  • OTA_ResRetrieveRS required

    This message returns a list of reservations when an exact match on a read request could not be made or the request was to return a list of reservations meeting specified criteria.

    • @EchoToken optional

    • @TimeStamp required

      ISO 8601 encoded timestamp indicating the creation date and time of the message.

    • @Version required

      The OpenTravel message version indicated by a decimal value.

    • ReservationsList optional

      A container for multiple reservations.

      • HotelReservation required

        Contains a hotel reservation.

        • @CreateDateTime required

          Time stamp of the creation.

        • UniqueID required

          Used to provide PMS and/or CRS identifiers. An identifier used to uniquely reference an object in a system (e.g. an airline reservation reference, customer profile reference, booking confirmation number, or a reference to a previous availability quote).

        • @Type required

          Refer to OpenTravel Code List Unique ID Type (UIT).

        • @ID required

          Reservation ID

        • RoomStays required

          Collection of room stays. A collection of RoomStay objects. Room stays associated with this reservation.

          • RoomStay required

            Details on the Room Stay including Guest Counts, Time Span of this Room Stay, pointers to Res Guests, guest Memberships, Comments and Special Requests pertaining to this particular Room Stay and finally finacial information related to the Room Stay, including Guarantee, Deposit and Payment and Cancellation Penalties.

            • RatePlans required

              A collection of Rate Plans associated with a particular Room Stay

              • RatePlan required

                 

                • @RatePlanCode required

                   

                • CancelPenalties required

                  Collection of cancellation penalties.

                  • CancelPenalty required

                    Defines the cancellation penalty of the hotel facility.

                • MealsIncluded required

                  Defines which meals are included with this rate program.

            • RoomRates required

              A collection of Room Rates associated with a particular Room Stay. Each Room Rate combination can have multiple rates. Example King room, Rack rate plan, Monday through Thursday, weekday amount, Friday and Saturday, weekend amount.

              • RoomRate required

                Room Rate specific information

              • @RoomTypeCode required

                Specfic system room type code, ex: A1K, A1Q etc.

              • @RatePlanCode required

                A string value may be used to request a particular code or an ID if the guest qualifies for a specific rate, such as AARP, AAA, a corporate rate, etc., or to specify a negotiated code as a result of a negotiated rate.

              • @NumberOfUnits required

                The number of rooms. Please note that value is always 1.

                • Rates optional

                  Individual rate amount. This rate is valid for a range of number of occupants and an occupant type.

                  • Rate required

                    The Rate contains a collection of elements that define the amount of the rate

                    • RateTimeUnit required

                      Indicates the time unit for the rate.

                    • EffectiveDate required

                      Indicates the starting date

                    • ExpireDate required

                      Indicates the ending date

                      • Base optional

                        The total amount charged for the service including additional amounts and fees.

                        • @AmountAfterTax required

                          The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                        • @CurrencyCode required

                          An ISO 4217 (3) alpha character code that specifies a monetary unit.

                        • @DecimalPlaces required

                          The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                          Maximum value allowed is 3.

                      • Discount optional

                        Discount percentage and/or Amount, code and textual reason for discount

                        • @AmountAfterTax required

                          The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                        • @CurrencyCode required

                          An ISO 4217 (3) alpha character code that specifies a monetary unit.

                        • @DecimalPlaces required

                          The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                          Maximum value allowed is 3.

                        • @Percent required

                          Discount percentage

                      • Total optional

                        The total amount charged for the service including additional amounts and fees.

                        • @AmountAfterTax required

                          The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

                        • @CurrencyCode required

                          An ISO 4217 (3) alpha character code that specifies a monetary unit.

                        • @DecimalPlaces required

                          The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                          Maximum value allowed is 3.

              • RoomRateDescription optional

                The description or name of a room rate

                • Text required

                  Provides text and indicates whether it is formatted or not.

            • GuestCounts required

              A collection of Guest Counts associated with Room Stay. A child Guest Count element is required for each distinct age group.A collection of GuestCount by age group.

              • GuestCount required

                A recurring element that identifies the number of guests and ages of the guests.

              • @AgeQualifyingCode required

                Defines minimum age range or age category of a guest. Code based on: OC Age Categories definition

              • @Count required

                The number of guests in one AgeQualifyingCode or Count.

              • @Age optional

                The exact Age of the guest - e.g. 11. (ToDo - Javi) Please check for example using this in the Multi Discount request example.

            • Discount optional

              Discount percentage and/or Amount, code and textual reason for discount. (ToDo - Javi)This is the sum of all discounts found in RoomRate > Rates

              • @AmountAfterTax required

                The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

              • @CurrencyCode required

                An ISO 4217 (3) alpha character code that specifies a monetary unit.

              • @DecimalPlaces required

                The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                Maximum value allowed is 3.

              • @Percent required

                Discount percentage

            • TimeSpan optional

              Used to specify a time window range by either specifying an earliest and latest date for the start date and end date or by giving a date with a time period that can be applied before and/or after the start date.

              • Start optional

                The starting value of the time span.

              • End optional

                The ending value of the time span.

            • Comments optional

              A collection of comments.

              • Comment required

                Comment details

                • Text required

                  Provides text and indicates whether it is formatted or not.

            • Total required

              The total amount charged for the Room Stay including additional occupant amounts and fees. If TaxInclusive is set to True, then taxes are included in the total amount.

              • @AmountAfterTax required

                The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

              • @CurrencyCode required

                An ISO 4217 (3) alpha character code that specifies a monetary unit.

              • @DecimalPlaces required

                The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
                Maximum value allowed is 3.

        • ResGuests required

          Collection of guests associated with the reservation.

          • ResGuest required

            The ResGuest object contains the information about a guest associated with a reservation.

            • Profiles required

              A collection of Profile objects or Unique IDs of Profiles.

              • ProfileInfo required

                A collection of Profile objects or Unique IDs of Profiles.

                • Profile required

                  Provides detailed information regarding either a company or a customer profile.Root element for profile content.

                  • Customer required

                    Detailed customer information for this profile.Contains basic data on the customer's identity, location, relationships, finances, memberships, etc.

                    • PersonName required

                      Detailed name information for the customer.This provides name information for a person.

                      • NamePrefix optional

                        Salutation of honorific (e.g. Mr., Mrs., Ms., Miss, Dr.)

                      • GivenName required

                        Given name, first name or names.

                      • Surname required

                        Family name, last name. May also be used for full name if the sending system does not have the ability to separate a full name into its parts, e.g. the surname element may be used to pass the full name.

                    • Telephone required (first guest), optional (others)

                      Information on a telephone number for the customer.

                    • Email required (first guest), optional (others)

                      Information on an email address for the customer.

                    • Address required (first guest), optional (others)

                      Detailed information on an address for the customer.

                      • AddressLine optional

                        Free form address details.

                      • CityName optional

                        City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address).

                      • PostalCode optional

                        Post Office Code number.

                      • StateProv optional

                        State or Province name (e.g., Texas).State, province, or region name or code needed to identify location.

                      • CountryName optional

                        ISO CODE for customer country

        • ResGlobalInfo required

          ResGlobalInfo is a container for various information that affects the Reservation as a whole. These include global comments, counts, reservation IDs and payment methods.

          • TimeSpan required

            The Time Span which covers the Room Stay.Used to specify a time window range by either specifying an earliest and latest date for the start date and end date or by giving a date with a time period that can be applied before and/or after the start date.

            • @Start required

              The starting value of the time span.

            • @End required

              The ending value of the time span.

          • Comments optional

            A collection of comments.

            • Comment required

              Comment details

              • Text required

                Provides text and indicates whether it is formatted or not.

          • Guarantee required

            The guarantee information associated to the Reservation or a particular Room Stay or Service.The guarantee information to hold a reservation

            • GuaranteesAccepted optional

              Guarantee Detail.

              • PaymentCard required

                Details of a debit or credit card.Specific payment card information.

                • @ExpireDate required

                  Indicates the ending date.

                • CardHolderName required

                  Card holder name

                  • PlainText required

                    Card holder name text

                • SeriesCode required

                  Verification digits. Secure information that supports PCI tokens, data masking and other encryption methods.

                  • PlainText required

                    Verification digits text.

          • Total required

            The total amount charged for the accommodation including additional occupant amounts and fees. If TaxInclusive is set to True, then taxes are included in the total amount.

            • @AmountAfterTax required

              The total amount including all associated taxes (e.g., sales tax, VAT, GST or any associated tax).

            • @CurrencyCode required

              An ISO 4217 (3) alpha character code that specifies a monetary unit.

            • @DecimalPlaces required

              The ISO 4217 standard “minor unit” for the number of decimal places for a particular currency.
              Maximum value allowed is 3.

          • BasicPropertyInfo required

            Property information for the reservation. An abbreviated short summary of hotel descriptive information.

            • @HotelCode required

              The code that uniquely identifies a single property.

Response examples

By clicking on the example name you can fold/unfold it

-Success

<?xml version="1.0"?>
<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2018-07-10T16:45:22+02:00"
                   MaxResponses="75" MoreIndicator="false" MoreDataEchoToken="2">
    <Success/>
    <ReservationsList>
        <HotelReservation CreateDateTime="2018-06-15T16:36:04+02:00">
            <UniqueID Type="14" ID="1"/>
            <RoomStays>
                <RoomStay>
                    <RatePlans>
                        <RatePlan RatePlanCode="NRF">
                            <CancelPenalties>
                                <CancelPenalty PolicyCode="1"/>
                            </CancelPenalties>
                            <MealsIncluded MealPlanCodes="14"/>
                        </RatePlan>
                    </RatePlans>
                    <RoomRates>
                        <RoomRate RoomTypeCode="SRSB" RatePlanCode="NRF" NumberOfUnits="1">
                            <Rates>
                                <Rate RateTimeUnit="Day" EffectiveDate="2012-03-12" ExpireDate="2012-03-13">
                                    <Base AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Total AmountAfterTax="20000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                            </Rates>
                        </RoomRate>
                    </RoomRates>
                    <GuestCounts>
                        <GuestCount AgeQualifyingCode="10" Count="1"/>
                        <GuestCount AgeQualifyingCode="8" Count="2"/>
                        <GuestCount AgeQualifyingCode="7" Count="3"/>
                    </GuestCounts>
                </RoomStay>
            </RoomStays>
            <ResGuests>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <GivenName>Mike</GivenName>
                                        <Surname>Johnson</Surname>
                                    </PersonName>
                                    <Telephone PhoneNumber="+34935500145"/>
                                    <Email>lodging.support+1@edreamsodigeo.com</Email>
                                    <Address>
                                        <AddressLine>Carrer de Diputació 303</AddressLine>
                                        <CityName>Barcelona</CityName>
                                        <PostalCode>08009</PostalCode>
                                        <StateProv>Barcelona</StateProv>
                                        <CountryName>ES</CountryName>
                                    </Address>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <GivenName>Jeff</GivenName>
                                        <Surname>Peterson</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
            </ResGuests>
            <ResGlobalInfo>
                <TimeSpan Start="2018-06-19" End="2018-06-20"/>
                <Guarantee>
                    <GuaranteesAccepted>
                        <GuaranteeAccepted>
                            <PaymentCard ExpireDate="0320">
                                <CardHolderName>Mr Mike Johnson</CardHolderName>
                                <CardNumber>
                                    <PlainText>4444444444444444</PlainText>
                                </CardNumber>
                                <SeriesCode>
                                    <PlainText>333</PlainText>
                                </SeriesCode>
                            </PaymentCard>
                        </GuaranteeAccepted>
                    </GuaranteesAccepted>
                </Guarantee>
                <Total AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
                <BasicPropertyInfo HotelCode="PROPERTYCODE"/>
            </ResGlobalInfo>
        </HotelReservation>
        <HotelReservation CreateDateTime="2018-06-15T16:36:04+02:00">
            <UniqueID Type="14" ID="2"/>
            <RoomStays>
                <RoomStay>
                    <RatePlans>
                        <RatePlan RatePlanCode="NRF">
                            <CancelPenalties>
                                <CancelPenalty PolicyCode="1"/>
                            </CancelPenalties>
                            <MealsIncluded MealPlanCodes="14"/>
                        </RatePlan>
                    </RatePlans>
                    <RoomRates>
                        <RoomRate RoomTypeCode="SRSB" RatePlanCode="NRF" NumberOfUnits="1">
                            <Rates>
                                <Rate RateTimeUnit="Day" EffectiveDate="2012-03-12" ExpireDate="2012-03-13">
                                    <Base AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                    <Total AmountAfterTax="20000" CurrencyCode="EUR" DecimalPlaces="2"/>
                                </Rate>
                            </Rates>
                        </RoomRate>
                    </RoomRates>
                    <GuestCounts>
                        <GuestCount AgeQualifyingCode="10" Count="1"/>
                        <GuestCount AgeQualifyingCode="8" Count="2"/>
                        <GuestCount AgeQualifyingCode="7" Count="3"/>
                    </GuestCounts>
                </RoomStay>
            </RoomStays>
            <ResGuests>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <GivenName>Mike</GivenName>
                                        <Surname>Johnson</Surname>
                                    </PersonName>
                                    <Telephone PhoneNumber="+34935500145"/>
                                    <Email>lodging.support+2@edreamsodigeo.com</Email>
                                    <Address>
                                        <AddressLine>Carrer de Diputació 303</AddressLine>
                                        <CityName>Barcelona</CityName>
                                        <PostalCode>08009</PostalCode>
                                        <StateProv>Barcelona</StateProv>
                                        <CountryName>ES</CountryName>
                                    </Address>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
                <ResGuest>
                    <Profiles>
                        <ProfileInfo>
                            <Profile>
                                <Customer>
                                    <PersonName>
                                        <GivenName>Jeff</GivenName>
                                        <Surname>Peterson</Surname>
                                    </PersonName>
                                </Customer>
                            </Profile>
                        </ProfileInfo>
                    </Profiles>
                </ResGuest>
            </ResGuests>
            <ResGlobalInfo>
                <TimeSpan Start="2018-06-19" End="2018-06-20"/>
                <Guarantee>
                    <GuaranteesAccepted>
                        <GuaranteeAccepted>
                            <PaymentCard ExpireDate="0320">
                                <CardHolderName>Mr Mike Johnson</CardHolderName>
                                <CardNumber>
                                    <PlainText>4444444444444444</PlainText>
                                </CardNumber>
                                <SeriesCode>
                                    <PlainText>333</PlainText>
                                </SeriesCode>
                            </PaymentCard>
                        </GuaranteeAccepted>
                    </GuaranteesAccepted>
                </Guarantee>
                <Total AmountAfterTax="10000" CurrencyCode="EUR" DecimalPlaces="2"/>
                <BasicPropertyInfo HotelCode="PROPERTYCODE"/>
            </ResGlobalInfo>
        </HotelReservation>
    </ReservationsList>
</OTA_ResRetrieveRS>

-Success without results

<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" MoreIndicator="false" TimeStamp="2017-03-01T09:30:47+02:00" EchoToken="GUID">
    <Success/>
</OTA_ResRetrieveRS>

+Error

<OTA_ResRetrieveRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="6.000" TimeStamp="2017-03-01T09:30:47+02:00" EchoToken="GUID">
    <Errors>
        <Error Type="12" Code="450" ShortText="Unable to process"/>
    </Errors>
</OTA_ResRetrieveRS>

Glossary

Standard terminology

Property: A hotel, motel, inn, lodge or other accommodation facility.

RateType: The type of rate that applies:

  • SELL: Final rate sell to the public (without discounts).
  • NET: Net rate provided to OC.

Cancellation Policies: The first version of the Odigeo connect API will only accept non-ref cancellation policies.

Please use code value: 1.

Custom Types

There are a few OTA types / Odigeo Connect custom types that you will need to know in order to use the product API properly.

That are specific code/definitions that link concepts with codes.

You will find all of them described below.

Week days

We are based on OTA descriptive code abbreviations for weekdays attributes (DOW_PatternGroup).

Code Name
Mon Monday
Tue Tuesday
Weds Wednesday
Thur Thursday
Fri Friday
Sat Saturday
Sun Sunday

Bedtypes

Odigeo Connect provides properties with a default bed type list that provides the mapping between codes, names and dimensions.

Every property will inherit a default bedtypes list which will be able to override at dimension (width/height) level.

The list of beds is based on descriptive codes for Bed Types from OTA -2016B DESCRIPTIVE CODE TABLES(BED), and specific OC values starting from 1000:

Code Name Width (cm) Height (cm)
1 Double 120 80
2 Futon
3 King 210
4 Murphy bed
5 Queen 150
6 Sofa bed
7 Tatami mats
8 Twin
9 Single
10 Full
11 Run of the house
12 Bed in a shared dorm
13 Water bed
1000 Hearth shaped bed
1001 Bunk bed
1002 Capsule bed
1003 Cot
1004 Air bed
1005 Twin or double
1006 Bed in a female shared dorm
1007 Bed in a male shared dorm
1008 Bed in a mixed shared dorm
1009 Folding bed

Age Categories

We are based on OTA descriptive code for age categories from OTA -2016B DESCRIPTIVE CODE TABLES(AQC).

From the whole OTA AQC list of age codes we are only using the following:

Code Name
7 Infant
8 Child
10 Adult

Room View

We are based on OTA descriptive code for age categories from OTA -2016B DESCRIPTIVE CODE TABLES(RVT).

Code Name
1 Airport view
2 Bay view
3 City view
4 Courtyard view
5 Golf view
6 Harbor view
7 Intercoastal view
8 Lake view
9 Marina view
10 Mountain view
11 Ocean view
12 Pool view
13 River view
14 Water view
15 Beach view
16 Garden view
17 Park view
18 Forest view
19 Rain forest view
20 Various views
21 Limited view
22 Slope view
23 Strip view
24 Countryside view
25 Sea view
26 Gulf view
27 No window
28 Partial sea view

Room Amenity Type

We are based on OTA descriptive code for age categories from OTA -2016B DESCRIPTIVE CODE TABLES(RMA)

From the whole OTA RMA list of age codes we are only using the following, having custom types also (starting from 1000):

Code Name
74 Non-smoking
85 Private bathroom
101 Smoking
193 Shared bathroom
1001 Accessible to disabled guests
1002 Bathroom inside room
1003 Bathroom outside room
1004 Private room
1005 Shared room

Unit of Measure Code

We are based on descriptive codes for Unit of Measures from OTA -2016B DESCRIPTIVE CODE TABLES(UOM)

From the whole OTA UOM list of age codes we are only using the following:

Code Name
13 Square feet
14 Square meters

Meal Plan Type

We are based on OTA descriptive code for Meal Plan Type from OTA -2016B DESCRIPTIVE CODE TABLES(MPT).

Code Name
1 All inclusive
2 American
3 Bed & Breakfast
4 Buffet breakfast
5 Caribbean breakfast
6 Continental breakfast
7 English breakfast
8 European plan
9 Family plan
10 Full board
11 Full breakfast
12 Half board/modified American plan
14 Room only
16 Bermuda
17 Dinner bed and breakfast plan
18 Family American
19 Breakfast
21 Lunch
22 Dinner
23 Breakfast & lunch

Unique Id Types

We are based on OTA descriptive codes for Unique Id Type from OTA -2016B DESCRIPTIVE CODE TABLES(UIT).

From them we are just using the following:

Code Name
14 Reservation

Code Error Types

We are based on OTA descriptive code for Error Types from OTA -2016B DESCRIPTIVE CODE TABLES(EWT).

Code Name
1 Unknown
2 No implementation
3 Biz rule
4 Authentication
5 Authentication timeout
6 Authorization
7 Protocol violation
8 Transaction model
9 Authentical model
10 Required field missing
11 Advisory
12 Processing exception
13 Application error

Code Errors

We are based on OTA descriptive 2016B ERROR CODES.

From them we are using the following subset:

Code Name
15 Invalid Date
58 Price Cannot Be Validated
61 Invalid Currency Code
113 Mandatory Booking Details Missing
131 Invalid Roomtype Code
143 Price Incorrect for Room
161 Search Criteria Invalid
181 Invalid Country Code
184 Invalid Language Code
187 System Currently Unavailable
237 Invalid Customer Number
244 Invalid Email Address
249 Invalid Rate Code
290 Invalid State Provice Territory
291 Invalid Zip Code
303 Unable To Complete Process Reservation
310 Required Last Name
311 Required First Name
317 Invalid Phone Number
320 Invalid Value
321 Required Field Missing
356 Invalid Status Code
357 Invalid City
362 Invalid Number Of Nights
363 Invalid Number Of Rooms
367 Invalid Format
375 Hotel Not Active
381 Invalid Check In Date
382 Invalid Check Out Date
397 Invalid Number Of Adults
398 Invalid Number Specified
400 Invalid Property Code
401 Invalid Rate Requested Field
402 Invalid Room Type
404 Invalid Start-End Date Combination
409 Maximum Length of Stay Restriction
411 Minimum Length of Stay Restriction
427 No Rooms Available Requested Dates
448 System Error
450 Unable To Process
749 Invalid Address Format
883 Price Change Detected

Terms and Conditions

June 20, 2017

By using our Connectivity Services or API Specifications you agree to accept the Terms and Conditions and be bound by it. You shall not use any of the Services or API Specifications if you do not agree to be bound by these Terms and Conditions.

These Terms and Conditions between you and EnGrande S.L. and its affiliates (hereinafter together referred to “Odigeo Connect”) for Odigeo’s Connectivity Services and API Specifications may include other associated material that will be related to these Terms and Conditions.

Provisions of the Terms and Conditions

Built-to-obligations, Enhancements and Maintenance

  1. The Odigeo Connect API Specifications can be found at the secure URL https://developers.odigeoconnect.com/api/suppliers/.

  2. For the time being in the absence of an electronic login process to the Connectivity Services you must contact Odigeo Connect connectivity department and provide your personal information to get authenticated and authorized to connect to the Odigeo Connect System. Otherwise once electronic login is established you will obtain a unique user name and password to log-in electronically to Odigeo Connect Connectivity Services.

  3. A Sandbox is made available by Odigeo Connect that allows you to test your developed code. Make sure that your code is compliant with the existing API Specifications. Any Connection that does not meet Odigeo Connect standards will not be allowed. The access and the development of Odigeo Connect API does not automatically guarantee the use of Odigeo Connect connectivity services.

  4. You must build the System interface in accordance with Odigeo Connect specifications your connectivity must allow properties to set and update information electronically such as but not limited to product data, inventory, rates and availability restrictions via the interface and to receive bookings made on Odigeo Connect’s websites. All property information provided to you by accommodations such as but not limited to hotel, hostel, b&b appartement (hereinafter together referred to ‘accommodation’) that work with Odigeo Connect shall be provided to Odigeo.

  5. You are allowed to make copies of the API Specifications for your own convenience. However, you acknowledge not to disclose, reproduce, summarize and/or distribute the API Specifications.

  6. Odigeo Connect may change, enhance, suspend or discontinue the form and nature of any part of Connectivity Services or API Specifications at any time. In case of a change or other modification Odigeo Connect is not obliged but will use reasonable efforts to inform you about the implementation of such changes. You are required to use the most recent version of the API Specifications and to notify Odigeo Connect in advance before setting live any connectivity change or enhancement.

  7. Your service levels you provide to Odigeo Connect in terms of i.e. response times, scheduled outages, downtime, should not be worse than to any other third party. However, you are obliged to inform Odigeo Connect immediately about any planned and unplanned outages and downtimes as soon as you are aware of them

Relationship to accommodations

Odigeo Connect has no obligation to support accommodations or make them acquainted to the Connectivity Services provided in these Terms and Conditions. It is your sole responsibility to provide help or training to accommodations you made Connectivity Services available to.

Charges

Please note that no fees will be charged by Odigeo Connect for the Services provided in these Terms and Conditions. On the other hand you are solely responsible for any and all costs and expenses you may incur in building your Connection and/or using the Connectivity Services. You are free to charge accommodations services rendered to them in relation to the Connection.

However, you acknowledge that you make available your Connection to at least the same terms and conditions you offer the connection to any other third party.

Licenses and Intellectual Property Rights

Odigeo Connect hereby grants to you under its intellectual property rights a personal, non-transferable, non-sub-licensable, non-exclusive, world-wide license to use Services and Specifications provided in these Terms and Conditions solely for internal use and not for distribution to third parties under the Terms and Conditions currently existing between the Parties.

As between the Parties, you acknowledge that Odigeo Connect owns all rights including all Intellectual Property Rights in the Content, in Access, in the Website and in any of its products and services, and that you do not acquire any right in or to the Content, Access and/or the Website, except as expressly granted in these Terms and Conditions.

Nothing in this Agreement grants to you any right in or to Odigeo Connect’s brand elements (for example, you may not use any of the other Odigeo Connect's brand elements in Google AdWords or any other form of search engine advertising, or register or attempt to register any brand element (including domain names) that is confusingly similar to the Odigeo Connect’s brand elements). All possible use of Odigeo Connect’s brand element shall inure Odigeo Connect's benefit.

Confidentiality

The Parties may receive Confidential Information from the other Party. Each Party agrees that they will not during and for 2 years after the term of the contractual relationship of the Parties disclose Confidential Information obtained from the other Party, except as legally required, and that it will reasonably protect Confidential Information received from the other Party from unauthorized use, access, or disclosure.

Indemnification

You agree that you will, at no cost to Odigeo Connect protect and defend the Odigeo Connect, hold Odigeo Connect harmless and indemnify Odigeo Connect and its officers, directors, employees and agents, against all claims, losses and damages, liabilities, costs and expenses (including reasonable legal costs), resulting or arising from or related to the misuse of the API Specification or Connectivity Services and/or a breach of these Terms and Conditions by you

Liability

Connectivity Services or API Specifications Content are provided on an "as is" and "as available" basis. Odigeo Connect excludes any liability, in particular any liability for indirect and consequential damages, including loss of profits, loss of data, business interruptions, additional costs and expenditures, and third party claims, for itself any of its directors, employees, members, representatives and other auxiliaries, resulting from any act or omission unless committed willfully or by gross negligence, regardless of the legal basis of such liability.

To the extent permitted by applicable law, any liability of Odigeo Connect for any indirect or consequential damage and for punitive or similar damages is excluded.

Nothing shall operate so as to exclude or limit the liability of either party for death or personal injury arising out of their own negligence, or for any other liability which cannot be excluded or limited by law

Term and Termination

The term of the agreed collaboration under these Terms and Condition between the Parties will commence by using the Connectivity Services or API Specifications, and continue in force until terminated by any of the Parties.

You may terminate this collaboration by discontinuing its use at any time. Without prejudice to any other rights, Odigeo Connect may cease providing Connectivity Services or API Specifications at any time and for any reason.

Upon termination for any reason, all license rights granted herein terminate, and you must immediately return to Odigeo Connect all Odigeo Connect property in your custody or control and delete other materials received as part of access, and cease to use all of Odigeo Connect's Brand Elements.

In case of termination all bookings made prior the termination remain honored and will perpetuate until made use of by the consumer

Severability

If any provision of these Terms and Conditions is held to be unenforceable, then that provision is to be construed either by modifying it to the minimum extent necessary to make it enforceable (if permitted by law) or disregarding it (if not). The rest of the Terms and Conditions is to remain in effect as written, and the unenforceable provision is to remain as written in any circumstances other than those in which it is held to be unenforceable. This applies to contractual omissions as well, intended or unintended.

Applicable law and jurisdiction

The terms and conditions are subject to the laws of Spain.

Subject to mandatory law, the exclusive place of jurisdiction for all disputes arising out of or in connection with this contractual relationship, and the place of fulfilment and the place of enforcement, is Barcelona, Spain