## Requests

### Syntax

The `OTA_HotelAvailNotifRQ` message uses the following syntax:

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="message_ID"
                           TimeStamp="timestamp"
                           Version="3.0">
      <POS>
        <Source>
          <RequestorID ID="partner_key"/>
        </Source>
      </POS>
      <AvailStatusMessages HotelCode="HotelID">
        <AvailStatusMessage BookingLimit="integer">
          <StatusApplicationControl Start="YYYY-MM-DD"
                                    End="YYYY-MM-DD"
                                    Mon="boolean"
                                    Tue="boolean"
                                    Weds="boolean"
                                    Thur="boolean"
                                    Fri="boolean"
                                    Sat="boolean"
                                    Sun="boolean"
                                    InvTypeCode="RoomID"/>
        </AvailStatusMessage>
        <AvailStatusMessage>
          <StatusApplicationControl Start="YYYY-MM-DD"
                                    End="YYYY-MM-DD"
                                    Mon="boolean"
                                    Tue="boolean"
                                    Weds="boolean"
                                    Thur="boolean"
                                    Fri="boolean"
                                    Sat="boolean"
                                    Sun="boolean"
                                    InvTypeCode="RoomID"
                                    RatePlanCode="PackageID"/>
          <LengthsOfStay FixedPatternLength="integer">
            <LengthOfStay Time="integer"
                          TimeUnit="[Day]"
                          MinMaxMessageType="[SetMaxLOS|SetMinLOS|SetForwardMaxStay|
                          SetForwardMinStay|FullPatternLOS]">
              <LOS_Pattern FullPatternLOS="pattern"/>
            </LengthOfStay>
          </LengthsOfStay>
          <RestrictionStatus Status="[Close|Open]"
                             Restriction="[Arrival|Departure|Master]"
                             MaxAdvancedBookingOffset="integer_or_duration"
                             MinAdvancedBookingOffset="integer_or_duration"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

Each `<OTA_HotelAvailNotifRQ>` message is treated as a delta update.
For each property, date, room, and package specified in
`<StatusApplicationControl>`, an update to any previously defined restriction
only replaces the value of the same restriction, whereas adding new restriction
does not affect other previously defined restrictions. For example, if a minimum
length of stay for 2 days was previously defined and then a new message
containing only a maximum length of stay for 7 days was updated, then this
action wouldn't erase the previous minimum length of stay value.

### Elements and Attributes

The `OTA_HotelAvailNotifRQ` message has the following elements and attributes:

**Note:** Each type of length of stay restriction is
set independently. For example, a message that sets
`SetMaxLOS` doesn't overwrite a previously defined value
for `SetForwardMaxStay`.

| Element / @Attribute | Occurrences | Type | Description |
|---|---|---|---|
| OTA_HotelAvailNotifRQ | 1 | Complex element | The root element for a message that defines room rate availability. |
| OTA_HotelAvailNotifRQ / @xmlns | 0..1 | string (URI) | The XML namespace. |
| OTA_HotelAvailNotifRQ / @EchoToken | 1 | string | A unique identifier for this request message. This value is returned in the response message. Allowed characters are `a-z`, `A-Z`, `0-9`, `_` (underscore), and `-` (dash). |
| OTA_HotelAvailNotifRQ / @TimeStamp | 1 | [DateTime](https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime) | The creation date and time of this message. |
| OTA_HotelAvailNotifRQ / @Version | 1 | decimal | The OpenTravel message version. |
| OTA_HotelAvailNotifRQ / POS | 0..1 | POS | A container for specifying the partner account for this message. It is typically used if your backend provides price feeds for multiple partner accounts. |
| OTA_HotelAvailNotifRQ / POS/ Source | 1 | Source | Required if `<POS>` is present. A container for the `<RequestorID>`. |
| OTA_HotelAvailNotifRQ / POS / RequestorID | 1 | RequestorID | Required if `<POS>`is present. Defines the partner account. |
| OTA_HotelAvailNotifRQ / POS / RequestorID / @ID | 1 | string | The partner account for this message. This string value is the `Partner key` value listed on the [Account settings page](https://hotelcenter.google.com/accountsettings/basicsettings?a) in Hotel Center. **Note:** If you have a backend that provides feeds for multiple accounts, this value needs to match the `partner` attribute value of your Transaction (Property Data) message and the `ID` attribute value in the `<RequestorID>` element of your `<OTA_HotelRateAmountNotifRQ>` message for the same account. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages | 1 | AvailStatusMessages | A container for one or more `<AvailStatusMessage>` elements. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / @HotelCode | 1 | string | The unique identifier for the property. This value must match the Hotel ID specified using [\<id\> in the \<listing\>](https://developers.google.com/hotels/hotel-prices/xml-reference/hotel-list-feed#listing) element in the Hotel List Feed. The Hotel ID is also listed in [Hotel Center](https://hotelcenter.google.com). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage | 1..n | AvailStatusMessage | Defines room rate availability and restrictions for different time ranges for a single property. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / @BookingLimit | 1 | integer | **Note:** The [OTA_HotelInvCountNotifRQ](https://developers.google.com/hotels/hotel-prices/xml-reference/ari-inv) message is preferred over setting this attribute. The number of remaining rooms that can be booked for the date range in `<StatusApplicationControl>`. If `BookingLimit` is specified, `<StatusApplicationControl>` must specify `InvTypeCode`, and the `<AvailStatusMessage>` cannot contain `<LengthOfStay>` or `<RestrictionStatus>`. Must be equal to or greater than 0. Defaults to 0 if negative or not provided. **Note:** To establish room availability for a given `<StatusApplicationControl>` setting, the `BookingLimit` attribute must be set at least once. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl | 1 | StatusApplicationControl | Defines the date range, as well as the identifiers for the room type ---`InvTypeCode` and rate plan ---`RatePlanCode`. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Start | 1 | [Date](https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date) | The starting date based on the property's time zone that is inclusive of the date range. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @End | 1 | [Date](https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#Date) | The ending date (based on the property's time zone), inclusive of the date range. Must be equal or greater than the `start` value. If `start` and `end` are equal, the update applies to that date. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Mon | 0..1 | boolean | Set to `true` or `1` to explicitly include Mondays. If set to `true`, other days of the week that aren't explicitly set to \`true\` are excluded (in effect, they are filtered out from the dates within the ``` Start`` and `End`).`` ``` |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Tue | 0..1 | boolean | Set to `true` or `1` to explicitly include Tuesdays. If set to `true`, other days of the week that aren't explicitly set to `true` are excluded (in effect, they are filtered out from the dates within the `Start` and `End`). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Weds | 0..1 | boolean | Set to `true` or `1` to explicitly include Wednesdays. If set to `true`, other days of the week that aren't explicitly set to `true` are excluded (in effect, they are filtered out from the dates within the `Start` and `End`). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Thur | 0..1 | boolean | Set to `true` or `1` to explicitly include Thursdays. If set to `true`, other days of the week that aren't explicitly set to `true` are excluded (in effect, they are filtered out from the dates within the `Start` and `End`). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Fri | 0..1 | boolean | Set to `true` or `1` to explicitly include Fridays. If set to `true`, other days of the week that aren't explicitly set to `true` are excluded (in effect, they are filtered out from the dates within the `Start` and `End`). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Sat | 0..1 | boolean | Set to `true` or `1` to explicitly include Saturdays. If set to `true`, other days of the week that aren't explicitly set to `true` are excluded (in effect, they are filtered out from the dates within the Start and `End`). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @Sun | 0..1 | boolean | Set to `true` or `1` to explicitly include Sundays. If set to `true`, other days of the week that aren't explicitly set to `true` are excluded (in effect, they are filtered out from the dates within the `Start` and `End`). |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @InvTypeCode | 1 | string | The unique identifier for the inventory (room type). This value maps to `<RoomID>` in a [Transactions (Property Data)](https://developers.google.com/hotels/hotel-prices/xml-reference/ari-property) message. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / StatusApplicationControl / @RatePlanCode | 0..1 | string | A unique identifier for the rate plan. This identifier maps to the value of the `<PackageID>` in a Transaction (Property Data) message. The rate plan is further defined and referred to in `<StatusApplicationControl>` in both `<OTA_HotelRateAmountNotifRQ>` and `<OTA_HotelAvailNotifRQ>` messages. The `RatePlanCode` attribute is not applicable, and must not be specified, when `<AvailStatusMessage>` contains the `BookingLimit` attribute. Must be specified if `<RestrictionStatus>` or `<LengthOfStay>` is specified. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay | 0..1 | LengthsOfStay | A container for defining LOS restrictions. Must not be present if `<AvailStatusMessage>` includes the `BookingLimit` attribute. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / @FixedPatternLength | 0..1 | integer | The length of the pattern defined in `FullPatternLOS`. **Note:** This attribute must be set when using `MinMaxMessageType="FullPatternLOS"` and absent otherwise. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / LengthOfStay | 1..n | LengthOfStay | Defines restrictions on the length of stay. When using more than one `<LengthOfStay>` element, each one must specify a different `MinMaxMessageType` value. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / LengthOfStay / @Time | 0..1 | integer | Unit value of the length of stay measurement. Note that a value of zero is treated as no restriction. For example, `<LengthOfStay Time="0" MinMaxMessageType="SetMaxLOS">` means no maximum length of stay. **Note:** This attribute must be set unless using `MinMaxMessageType="FullPatternLOS"`. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / LengthOfStay / @TimeUnit | 0..1 | enum | The time unit. Defaults to `"Day"` if not provided. Valid value is: - `Day` **Note:** One `"Day"` unit is equal to 1 night stay. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / LengthOfStay / @MinMaxMessageType | 1 | enum | Various types of length of stay restrictions. `SetMaxLOS`, `SetMinLOS`, and `FullPatternLOS` are arrival based. `SetForwardMinStay` and ` SetForwardMaxStay` are stay-through based. Maximum values must be greater than or equal to minimum values. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / LengthOfStay / LOS_Pattern | 0..1 | LOS_Pattern | Defines the length of stay restriction pattern. **Note:** This element must be present when using `MinMaxMessageType="FullPatternLOS"` and absent otherwise. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / LengthsOfStay / LengthOfStay / LOS_Pattern / @FullPatternLOS | 1 | string | A sequence of `Y` and `N` characters indicating whether each length of stay is allowed, from one night to the value in `FixedPatternLength`. Any length of stay greater than ` FixedPatternLength` inherits the value at the final position. For example, with `FixedPatternLength="4"` and ` FullPatternLOS="YNYN"`, only lengths of stay 1 and 3 are allowed. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / RestrictionStatus | 0..1 | RestrictionStatus | Defines itinerary restrictions. Must not be present if `<AvailStatusMessage>` includes the `BookingLimit` attribute. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / RestrictionStatus / @Status | 0..1 | enum | Indicates whether the type of restriction specified by the `Restriction` attribute is open or closed. Valid values are: - `Open` - `Close` `Open` and `Close` values are compatible with all values of [`<Restriction>`](https://developers.google.com/hotels/hotel-prices/xml-reference/ari-avail#restriction) element. When `Open` and `Close` values are used with the `Arrival` and `Departure` values, they restrict specific dates in the itinerary for check-in and check-out respectively. - `Open` and `Close` with `Arrival`: This combination specifies which dates in the itinerary are available for check-in - `Open` and `Close` with `Departure`: This combination specifies which dates in the itinerary are available for check-out - The `Arrival` date doesn't restrict the availability for the nights of stay after the check-in date. - For example, for a stay from April 1st-4th where April 2nd-4th is closed to arrival is still bookable. - **Note:** - By default, Google assumes that the `Master` setting for all products is `Close`. You can configure this through your "Default availability" in [Hotel Center pricing settings](https://support.google.com/hotelprices/answer/9435269). The "Closed" value in Hotel Center corresponds to the `Close` value here. - Setting `Master` to `Close` is known as a "stop sell". |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / RestrictionStatus / @Restriction | 0..1 | enum | This attribute is required if `Status` is provided. Valid values are: - `Arrival:` This value prevents itineraries with a check-in date during the `Start` and `End` date range, inclusive. - `Departure:` This value prevents itineraries with a check-out date during the `Start` and `End` date range, inclusive. - `Master:` This value indicates whether the room rate is available for booking on the date. Both `Arrival` and `Departure` are required to have open availability for the given itinerary. The default value for both `Arrival` and `Departure` is `Open`, unless a previous message has been sent indicating that it was closed. Additionally, the room/package combination must be available for all dates of the itinerary, excluding the last day of the stay. This availability can be set by either the default settings in Hotel Center or through the [`<Status>`](https://developers.google.com/hotels/hotel-prices/xml-reference/ari-avail#status) or \<Restriction\> element. If the default setting is `Close`, you must send a `Status` value of `Open` and a `restriction` value of `Master` for the relevant dates to re-open availability for the itinerary dates. For example, for a three-night stay with an arrival date of April 1st, the full itinerary is April 1st-4th. The `Status` value should be set to `Open` and the `Restriction` value should be set to `Master` for the nightly stay from April 1st-3rd. The last day of the stay (April 4th) is closed, since only the nightly stay dates require an `Open` status. **Note:** If the `Restriction` isn't specified then the default value is `Master`. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / RestrictionStatus / @MinAdvancedBookingOffset | 0..1 | integer or duration | Minimum duration before the arrival date (in the property's local time) for which this room rate can be booked. Valid value types are: - `Integer:` The number of days before the arrival date. For example, a value of `1` indicates the room rate must be booked at least one day before the arrival date. A value of `0` (the default value) indicates no restriction on the latest booking time. - `ISO 8601 Duration (days, hours, and minutes):` The number of days (and optionally hours/minutes) before the arrival date. For example, a value of `P1D` indicates the room rate must be booked one day before the arrival date. A value of `P0DT6H` indicates that booking must occur six hours before the end of the arrival date (i.e. 18:00) or earlier. |
| OTA_HotelAvailNotifRQ / AvailStatusMessages / AvailStatusMessage / RestrictionStatus / @MaxAdvancedBookingOffset | 0..1 | integer or duration | Maximum duration before the arrival date (in the property's local time) for which this room rate can be booked. Valid value types are: - `Integer:` The number of days before the arrival date. For example, a value of `30` indicates the room rate cannot be booked earlier than 30 days before the arrival date. A value of `0` (the default value) indicates no restriction on the earliest booking time. - `ISO 8601 Duration (days, hours, and minutes):` The number of days (and optionally hours/mintes) before the arrival date. For example, a value of `P30D` indicates the room rate cannot be booked earlier than 30 days before the arrival date. A value of `P30DT6H` indicates that booking cannot occur earlier than 18:00, 30 days before the arrival date. |

### Examples

### LoS arrival date

Set minimum and maximum lengths of stay (based on arrival date).

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <LengthsOfStay>
            <LengthOfStay Time="5" MinMaxMessageType="SetMaxLOS"/>
            <LengthOfStay Time="2" MinMaxMessageType="SetMinLOS"/>
          </LengthsOfStay>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### LoS duration

Set minimum and maximum lengths of stay (based on stay-through).

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <LengthsOfStay>
            <LengthOfStay Time="5" MinMaxMessageType="SetForwardMaxStay"/>
            <LengthOfStay Time="2" MinMaxMessageType="SetForwardMinStay"/>
          </LengthsOfStay>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Remove LoS restrictions

Setting Time="0" on `<LengthOfStay>` indicates that there are no
restrictions for the specified length of stay. For example,
`<LengthOfStay Time="0" MinMaxMessageType="SetMaxLOS"/>` means there is no
maximum length of stay restriction.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2024-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2024-07-26"
                                    End="2024-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <LengthsOfStay>
            <LengthOfStay Time="0" MinMaxMessageType="SetMaxLOS"/>
          </LengthsOfStay>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Departure restriction

Set a closed-to-departure restriction. (This prevents itineraries with
check-out on specified dates.)

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Close" Restriction="Departure"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Arrival Restriction

Set a closed-to-arrival restriction. (This prevents itineraries with
check-in on specified dates.)

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Close" Restriction="Arrival"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

<br />

### Open availability dates

Open availability for a room type and rate plan on specified dates.

**Note:** nightly rates are also needed, along with an inventory count
greater than 0 for the room type, before prices are completely available.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Open" Restriction="Master"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Close availability dates

Close availability for a room type and rate plan on specified dates. (This
is also known as a "stop sell.")

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Close" Restriction="Master"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Advance booking restrictions

Set minimum and maximum advanced booking window restrictions, applied only
on weekends.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-01-01"
                                    End="2023-06-30"
                                    Mon="false"
                                    Tue="false"
                                    Weds="false"
                                    Thur="false"
                                    Fri="false"
                                    Sat="true"
                                    Sun="true"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus MaxAdvancedBookingOffset="30"
                             MinAdvancedBookingOffset="2"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Cutoff booking

Apply a cutoff for booking on the arrival date at 18:00 in the hotel's local
time.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-01-01"
                                    End="2023-06-30"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus MinAdvancedBookingOffset="P0DT6H0M"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### Multiple restrictions

Set multiple restrictions over the same dates for a room type and rate plan.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Open" Restriction="Master"/>
        </AvailStatusMessage>
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Close" Restriction="Arrival"/>
        </AvailStatusMessage>
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <RestrictionStatus Status="Close" Restriction="Departure"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

> [!NOTE]
> **Note:** If the `Restriction` isn't specified then the default value is `Master`.

<br />

### Booking limit

Set inventory counts for a room type over specified dates.

**Note:** The [OTA_HotelInvCountNotifRQ](https://developers.google.com/hotels/hotel-prices/xml-reference/ari-inv)
message is preferred over setting this attribute.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage BookingLimit="5">
          <!-- Note: RatePlanCode must not be specified here when setting inventory counts. -->
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-31"
                                    InvTypeCode="RoomID_1"/>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>

### FullPatternLoS

Set a full pattern length-of-stay restriction.

For a check-in on July 26, 2023, only lengths-of-stay of 2, 4, and 6 are
allowed. Lengths of stay 1, 3, 5, and 7+ are unavailable.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                           EchoToken="12345678"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <AvailStatusMessages HotelCode="Property_1">
        <AvailStatusMessage>
          <StatusApplicationControl Start="2023-07-26"
                                    End="2023-07-26"
                                    InvTypeCode="RoomID_1"
                                    RatePlanCode="PackageID_1"/>
          <LengthsOfStay FixedPatternLength="7">
            <LengthOfStay MinMaxMessageType="FullPatternLOS">
              <LOS_Pattern FullPatternLOS="NYNYNYN"/>
            </LengthOfStay>
          </LengthsOfStay>
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>


## Responses

### Syntax

The `OTA_HotelAvailNotifRS` message uses the following syntax:

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
                           TimeStamp="timestamp"
                           EchoToken="echo_token"
                           Version="3.0">
      <!-- Either Success or Errors will be populated. -->
      <Success/>
      <Errors>
        <Error Type="12" Status="NotProcessed" ShortText="issue_code">issue_description</Error>
      </Errors>
    </OTA_HotelAvailNotifRS>

### Elements and Attributes

The `OTA_HotelAvailNotifRS` message has the following elements and attributes:

| Element / @Attribute | Occurrences | Type | Description |
|---|---|---|---|
| OTA_HotelAvailNotifRS | 1 | Complex element | The root element for a response to an availability message. |
| OTA_HotelAvailNotifRS / @TimeStamp | 1 | [DateTime](https://developers.google.com/hotels/hotel-prices/xml-reference/datetime#DateTime) | The creation date and time of this message. |
| OTA_HotelAvailNotifRS / @EchoToken | 1 | string | The unique identifier from the associated `OTA_HotelAvailNotifRQ` message. |
| OTA_HotelAvailNotifRS / Success | 0..1 | Success | Indicates that the `OTA_HotelAvailNotifRQ` message was processed successfully. Either `<Success>` or `<Errors>` is present in each message. |
| OTA_HotelAvailNotifRS / Errors | 0..1 | Errors | A container for one or more issues encountered while processing the `OTA_HotelAvailNotifRQ` message. Either `<Success>` or `<Errors>` is present in each message. |
| OTA_HotelAvailNotifRS / Errors / Error | 1..n | Error | The description of an error encountered while processing the `OTA_HotelAvailNotifRQ` message. Details on these errors can be found in [Feed Status Error Messages](https://developers.google.com/hotels/hotel-prices/dev-guide/feed-status-errors). |
| OTA_HotelAvailNotifRS / Errors / Error / @Type | 1 | integer | The OpenTravel Alliance EWT (Error Warning Type) associated with the error. Only the value `12 (Processing exception)` is used. |
| OTA_HotelAvailNotifRS / Errors / Error / @Code | 1 | integer | The OpenTravel Alliance ERR (Error Code) associated with the error. Only the value `450 (Unable to process)` is used. |
| OTA_HotelAvailNotifRS / Errors / Error / @Code | 1 | enum | The status of the original request. Only the value `NotProcessed` is used. |
| OTA_HotelAvailNotifRS / Errors / Error / @ShortText | 1 | string | The Google identifier for the issue. Details on these errors can be found in [Feed Status Error Messages](https://developers.google.com/hotels/hotel-prices/dev-guide/feed-status-errors). |

### Examples

### Success

The following is a response to a successfully processed
OTA_HotelAvailNotifRQ message.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <Success/>
    </OTA_HotelAvailNotifRS>

### Errors

The following is a response to a OTA_HotelAvailNotifRQ message not processed
due to errors.

    <?xml version="1.0" encoding="UTF-8"?>
    <OTA_HotelAvailNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
                           TimeStamp="2023-07-21T20:50:37-05:00"
                           Version="3.0">
      <Errors>
        <Error Type="12" Code="450" Status="NotProcessed" ShortText="8001">Example</Error>
      </Errors>
    </OTA_HotelAvailNotifRS>