SiteMinder APIs
Help CentrePartner ContactsTest Extranet LoginBecome a SiteMinder Partner
  • Hub
  • Quickstart
  • Integration Process
  • CHANNELS
    • Introduction
      • SiteConnect
        • Getting Started
        • Developer Guide
          • Integration Requirements
          • Message Structure
          • Error Handling
        • API Reference
          • Rooms and Rates
          • Availability and Restrictions
          • Rates
          • Reservations
            • Reservation XML Sample
        • Testing and Certification
        • Changelog
        • FAQ
      • Channels Plus
        • Getting Started
        • Developer Guide
          • Partner Portal
          • Deals
          • Invoicing: Gross vs. Net
        • API Reference
          • Properties
          • Property
          • Lock Reservation
          • Confirm Reservation
          • Modify Reservation
          • Cancel Reservation
        • Testing and Certification
        • Swagger
        • Changelog
        • FAQ
  • PMS / RMS
    • Introduction
      • pmsXchange
        • Getting Started
        • Developer Guide
          • Integration Requirements
          • Message Structure
          • Error Handling
        • API Reference
          • Rooms and Rates
          • Availability and Restrictions
          • Rates
          • Reservations
            • Reservations PULL
            • Reservations Import
            • Reservations Upload
              • Reservation Types
            • Payment Transaction Record
            • Credit Card Tokenization
            • Reservations XML Samples
              • Reservations PULL Samples
              • Reservations Upload Samples
        • Testing and Certification
        • Changelog
        • FAQ
  • APPS
    • Introduction
      • SiteMinder Exchange
        • Getting Started
        • Developer Guide
          • Integration Requirements
          • Message Structure
          • Error Handling
        • API Reference
          • Availability and Rates
            • Publishers
            • Hotels
            • RoomTypes
            • RatePlans
            • Availability
            • Rates
            • Models
            • Response Samples
              • Publishers Sample
              • Hotels Sample
              • RoomTypes Samples
              • RatePlans Samples
              • Availability Samples
              • Rates Sample
            • ARI 1-Way Guidelines
          • Reservations
            • Maximum Content Sample
            • Minimum Content Sample
        • Testing and Certification
        • Activation & Deactivation Process for Hotels
          • Activation Process for Hotels
          • Activation Form Parameterisation
          • Deactivation Process for Hotels
        • Changelog
          • Reservations API Changelog
          • ARI API Changelog
        • FAQ
  • Additional Resources
    • Reference Tables
      • Booking Agent Codes
      • Document Type Code (DOC)
      • Error Codes (ERR)
      • Error Warning Types (EWT)
      • Fee Tax Type (FTT)
      • Handling HTTP 500
      • Meal Plan Type (MPT)
      • OpenTravel Codes List
      • Payment Card Provider Codes
      • Service and Extra Charge
      • Strong Customer Authentication Codes
      • Test Credit Cards
    • Glossary
    • FAQ
Powered by GitBook
On this page
  • Request
  • Examples
  • Update Multiple Values Examples
  • Specification
  • Response
  • Examples
  • Specification

Was this helpful?

  1. PMS / RMS
  2. Introduction
  3. pmsXchange
  4. API Reference

Availability and Restrictions

Message Exchange Workflow

  • OTA_HotelAvailNotifRQ - request sent by PMS with the real-time availability and restrictions.

  • OTA_HotelAvailNotifRS - response sent by SiteMinder to acknowledge receipt.

Request

Examples

Availability and Restrictions can technically be sent together using the OTA_HotelAvailNotifRQ message; however, we require these to be sent in separate requests for better processing and clarity.

To set the Availability of a room type, use the AvailStatusMessage/@BookingLimit attribute.

Availability is set at the 'Room Type/Category' level (InvTypeCode). For example, if the room type is 'Superior' with 'SUP' as the InvTypeCode, all rates linked to this category will share the same availability pool. Updates will apply to the 'SUP' InvTypeCode.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage BookingLimit="10">
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP"/>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

To update the Stop Sell restriction, use the RestrictionStatus node.

Each restriction type is managed independently, meaning updates for one restriction (e.g., stop sell) do not affect the status of others (e.g., closed to arrival or departure). For example, sending a stop sell update will not modify the closed to arrival or closed to departure settings.

SUP / GLD room rate is stop sold for the specified date range.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Status="Close"/>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

SUP / BAR room rate is open for sale for the specified date range.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMS1"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="BAR"/>
			<RestrictionStatus Status="Open"/>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

To update the Closed to Arrival (CTA) restriction, use the RestrictionStatus node.

Each restriction type is managed independently, meaning updates for one restriction (e.g., stop sell) do not affect the status of others (e.g., closed to arrival or departure). For example, sending a stop sell update will not modify the closed to arrival or closed to departure settings.

SUP / GLD room rate is closed for arrival (check-in) on 2025-03-01.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Restriction="Arrival" Status="Close"/>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

SUP / BAR room rate is open for arrival (check-in) on 2025-03-01.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="BAR"/>
			<RestrictionStatus Restriction="Arrival" Status="Open"/>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

To update the Closed to Departure (CTD) restriction, use the RestrictionStatus node.

Each restriction type is managed independently, meaning updates for one restriction (e.g., stop sell) do not affect the status of others (e.g., closed to arrival or departure). For example, sending a stop sell update will not modify the closed to arrival or closed to departure settings.

SUP / GLD room rate is closed for departure (check-out) on 2025-03-01.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Restriction="Departure" Status="Close"/>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

SUP / BAR room rate is open for departure (check-out) on 2025-03-01.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="BAR"/>
			<RestrictionStatus Restriction="Departure" Status="Open" />
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

Minimum Length of Stay is the minimum number of nights the guest must stay if this date is the requested arrival date.

To set a Minimum Stay, use the LengthsOfStay element, which contains a single LengthOfStay element with two mandatory attributes:

  • @MinMaxMessageType: Must be set to "SetMinLOS".

  • @Time: The minimum stay duration in days.

Ensure there is no conflict between MinLOS and MaxLOS values. The system should not allow a minimum stay (MinLOS) to be greater than the maximum stay (MaxLOS) for the same date.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<LengthsOfStay>
				<LengthOfStay MinMaxMessageType="SetMinLOS" Time="7"/>
			</LengthsOfStay>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

Maximum Length of Stay is the maximum number of nights the guest can stay after the requested arrival date.

To set a Maximum Stay, use the LengthsOfStay element, which includes a single LengthOfStay element with two mandatory attributes:

  • @MinMaxMessageType: Must be set to "SetMaxLOS".

  • @Time: The maximum stay duration in days.

Ensure there is no conflicting logic between MaxLOS and MinLOS. The system must prevent hotels from setting a maximum stay (MaxLOS) that is less than the minimum stay (MinLOS) for the same date.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<LengthsOfStay>
				<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="7"/>
			</LengthsOfStay>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

To remove the Maximum Stay, set the @Time attribute to 999. Note that a value of 0 is not supported for this purpose.

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-01" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<LengthsOfStay>
				<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="999"/>
			</LengthsOfStay>
		</AvailStatusMessage>
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

Update Multiple Values Examples

Each AvailStatusMessage can be used to set Availability, Minimum/Maximum Stays, CTA/CTD and Stop Sells either individually or in combination. Each attribute—such as BookingLimit for availability, LengthOfStay for minimum/maximum stays, and RestrictionStatus for stop sells and CTA/CTD—can be updated independently within the same request.

If you choose to send Stop Sell, CTA and CTD on a Room Level (RatePlanCode not present), then all updates (Open and Close) should follow the same rule. The same applies if you choose to send the restrictions at a room rate level (InvTypeCode and RatePlanCode are present). It is not acceptable to send Room-level restriction updates, and then overlay them with Room Rate level updates or vice versa.

Here is an example of an OTA_HotelAvailNotifRQ that updates only Availability for the same room in a single request:

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage BookingLimit="10"> <!-- Availability -->
			<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP"/>
		</AvailStatusMessage>
		<AvailStatusMessage BookingLimit="5"> <!-- Availability -->
			<StatusApplicationControl Start="2025-03-15" End="2025-03-31" InvTypeCode="SUP"/>
		</AvailStatusMessage>
		<!-- Additional AvailStatusMessage elements -->
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

Here is an example of an OTA_HotelAvailNotifRQ that updates only Minimum/Maximum Stay, Stop Sell and CTA/CTD for the same room rate in a single request:

<OTA_HotelAvailNotifRQ
	xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2024-07-06T15:27:41+00:00" Version="1.0">
	<POS>
		<Source>
			<RequestorID Type="22" ID="PMSCODE"/>
		</Source>
	</POS>
	<AvailStatusMessages HotelCode="HOTEL">
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<LengthsOfStay>
				<LengthOfStay MinMaxMessageType="SetMinLOS" Time="2"/> <!-- Min Length of Stay -->
				<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="5"/> <!-- Max Length of Stay -->
			</LengthsOfStay>
			<RestrictionStatus Status="Close"/> <!-- Stop Sell -->
		</AvailStatusMessage>
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Restriction="Arrival" Status="Close"/> <!-- Close to Arrival (CTA) -->
		</AvailStatusMessage>
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Restriction="Departure" Status="Close"/> <!-- Close to Departure (CTD) -->
		</AvailStatusMessage>
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-15" End="2025-03-31" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<LengthsOfStay>
				<LengthOfStay MinMaxMessageType="SetMinLOS" Time="1"/> <!-- Min Length of Stay -->
				<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="7"/> <!-- Max Length of Stay -->
			</LengthsOfStay>
			<RestrictionStatus Status="Open"/> <!-- Stop Sell -->
		</AvailStatusMessage>
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-15" End="2025-03-31" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Restriction="Arrival" Status="Open"/> <!-- Close to Arrival (CTA) -->
		</AvailStatusMessage>
		<AvailStatusMessage>
			<StatusApplicationControl Start="2025-03-15" End="2025-03-31" InvTypeCode="SUP" RatePlanCode="GLD"/>
			<RestrictionStatus Restriction="Departure" Status="Open"/> <!-- Close to Departure (CTD) -->
		</AvailStatusMessage>
		<!-- Additional AvailStatusMessage elements -->
	</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>

Specification

Element / @Attribute
Type
M
Description

OTA_HotelAvailNotifRQ

Element

1

Root element for the request.

@xmlns

String

1

Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05

@EchoToken

String

1

Unique identifier for the request, used to match requests and responses.

@TimeStamp

DateTime

1

Time when the request was generated.

@Version

String

1

Specifies the API version. Will be set to 1.0.

POS / Source / RequestorID

1

@Type

1

Fixed at 22 (ESRP)

@ID

String

AvailStatusMessages

Element

1

Container for availability and restriction status messages.

@HotelCode

String

1

Identifier for the hotel.

AvailStatusMessage

Element

1..n

Single availability or restriction status message.

@BookingLimit

Integer ≥ 0

0..1

Sets the number of rooms available for sale.

StatusApplicationControl

Element

1

Contains date and room identification information.

@Start

Date

1

The start date for which the update is being set. This date is inclusive.

@End

Date

1

The end date for which the update is being set. This date is inclusive.

@InvTypeCode

String

0..1

Identifies the room type.

@RatePlanCode

String

0..1

Identifies the rate plan.

Mon, Tue, Weds, Thur, Fri, Sat, Sun

Boolean

0..1

The day of the week indicators are optional. If not specified, all days are assumed to be set to true (enabled).

These indicators are used to indicate which days of the week the update applies to. For example:

  • Setting Monday, Tuesday, and Wednesday to "1" while setting the other days to "0" will update availability only for those three days.

If any day of the week is included in the message, all day indicators must be sent to ensure clarity in the update.

LengthsOfStay

Element

0..1

Used for Minimum Stay and Maximum Stay.

LengthOfStay

Element

1..2

Single length of stay information.

@MinMaxMessageType

String

1

Can be one of the following: SetMinLOS

SetMaxLOS

@Time

Integer > 0

1

Specifies the number of days related to a stay.

SetMinLOS : Minimum days required for a stay.

SetMaxLOS : Maximum days bookable.

@Time value must be above 0. To removeMaxLOS), set @Time to 999.

RestrictionStatus

Element

0..1

Used to restrict the room for Stop Sell, Closed to Arrivals, and Closed to Departure.

@Status

String

1

Values:

Open (opens room for sale)

Close (closes room for sale)

@Restriction

String

0..1

Values:

Arrival (closes to arrival)

Departure (closes to departure)

If no type is specified, assume a full close or open for the room rate.

Response

Examples

<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="ed8835ff-6198-4f38-b589-3058397f677c" TimeStamp="2025-07-06T15:27:41+00:00" Version="1.0">
    <Success/>
</OTA_HotelAvailNotifRS>
<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <Errors>
    <Error Type="6">PMS is not authorized to access hotel with HotelCode=XXXX</Error>
  </Errors>
</OTA_HotelAvailNotifRS>
<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <Errors>
    <Error Type="10">Status should be "Close" or "Open"</Error>
  </Errors>
</OTA_HotelAvailNotifRS>
<OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-08-01T09:30:47+08:00" EchoToken="echo-abc123">
  <Errors>
    <Error Type="10">Time should be a number between 1 and 9999</Error>
  </Errors>
</OTA_HotelAvailNotifRS>

Specification

Element / @Attribute
Type
M
Description

OTA_HotelAvailNotifRS

Element

1

Root element for the response.

@xmlns

String

1

Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05

@EchoToken

String

1

Unique identifier for the request, used to match requests and responses.

@TimeStamp

DateTime

1

Time when the response was generated.

@Version

String

1

Specifies the API version. Must be set to 1.0.

Success

Element

0..1

Indicates successful processing of the request.

Errors

Element

0..1

Indicates an error occurred during the processing of the request.

Error

Element

1..n

Single error information containing free text.

@Type

Integer

1

@Code

Integer

0..1

Last updated 20 days ago

Was this helpful?

Type of error. Refer to .

Code representing the error. Refer to .

Testing and Certification
Error Handling
Glossary
Error Warning Types (EWT)
Error Codes (ERR)