Availability and Restrictions
Message Exchange Workflow
OTA_HotelAvailNotifRQ
- request sent by PMS with the real-time availability and restrictions.OTA_HotelAvailNotifRS
- response sent by pmsXchange to acknowledge receipt.
Request
Examples
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" Version="1.0" TimeStamp="2025-08-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage BookingLimit="10">
<StatusApplicationControl Start="2025-01-01" End="2025-01-14" 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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" 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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" 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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<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="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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<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 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-05.
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-05" End="2025-03-05" 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-05.
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<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 Restriction="Departure" Status="Open" />
</AvailStatusMessage>
</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>
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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</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"/>
</LengthsOfStay>
</AvailStatusMessage>
</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>
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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" 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" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" 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.
Here is an example of an OTA_HotelAvailNotifRQ
that updates Closed to Arrival (CTA), Closed to Departure (CTD), and sets a Stop Sell for a room in a single request:
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
<RestrictionStatus Restriction="Arrival" Status="Close" />
</AvailStatusMessage>
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
<RestrictionStatus Restriction="Departure" Status="Close" />
</AvailStatusMessage>
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
<RestrictionStatus Status="Close" />
</AvailStatusMessage>
</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>
Here is an example of an OTA_HotelAvailNotifRQ
that updates availability, minimum stays, maximum stays, stop sells, CTA/CTD in a single request:
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2025-02-01T09:30:47+08:00" EchoToken="echo-abc123">
<POS>
<Source>
<RequestorID Type="22" ID="PMS1"/>
</Source>
</POS>
<AvailStatusMessages HotelCode="HOTEL">
<AvailStatusMessage BookingLimit="10">
<StatusApplicationControl Start="2025-03-01" End="2025-03-19" InvTypeCode="SUP"/>
</AvailStatusMessage>
<AvailStatusMessage BookingLimit="9">
<StatusApplicationControl Start="2025-03-20" End="2025-03-20" InvTypeCode="SUP"/>
</AvailStatusMessage>
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-01" End="2025-03-14" InvTypeCode="SUP" RatePlanCode="GLD"/>
<LengthsOfStay>
<LengthOfStay MinMaxMessageType="SetMinLOS" Time="2"/>
<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="5"/>
</LengthsOfStay>
<RestrictionStatus Status="Close"/>
</AvailStatusMessage>
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-15" End="2025-03-20" InvTypeCode="SUP" RatePlanCode="GLD"/>
<LengthsOfStay>
<LengthOfStay MinMaxMessageType="SetMinLOS" Time="3"/>
<LengthOfStay MinMaxMessageType="SetMaxLOS" Time="7"/>
</LengthsOfStay>
<RestrictionStatus Status="Open"/>
</AvailStatusMessage>
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-17" End="2025-03-17" InvTypeCode="SUP" RatePlanCode="GLD"/>
<RestrictionStatus Restriction="Arrival" Status="Close"/>
</AvailStatusMessage>
<AvailStatusMessage>
<StatusApplicationControl Start="2025-03-20" End="2025-03-20" InvTypeCode="SUP" RatePlanCode="GLD"/>
<RestrictionStatus Restriction="Departure" Status="Close"/>
</AvailStatusMessage>
</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>
Specification
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
Last updated