> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axisdata.net/llms.txt
> Use this file to discover all available pages before exploring further.

# OTA_HotelAvailRS

The OTA\_HotelAvailRS (Hotel Availability Response) returns bookable options and related context for one or more properties in reply to an `OTA_HotelAvailRQ`. It is compatible with enrichment switches and multi-room behavior defined for the availability workflow.

## Purpose

* Confirm successful processing (`<Success/>`) or return error diagnostics (`<Errors/>`). [Error Scenarios](../glossary/errors).
* Deliver one or more `<RoomStay>` items with pricing, guest counts, and property references.
* Optionally include contextual blocks (`HotelStays`, `Areas`, amenities/descriptions) controlled by `InfoSource`.

## Structure – Root Element

```xml theme={null}
<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2016.2" EchoToken="1">
  <Success/>
  ...
</OTA_HotelAvailRS>
```

<Tip> The EchoToken is useful to identify transactions. </Tip>

**Success**
Indicates the request was processed without fatal errors. When absent, see `Errors`.

**Errors**
Container for one or more `Error` items describing non-recoverable issues in the request. [Error Scenarios](../glossary/errors).

**Warnings**
Used for non-fatal guidance. Example: when a multi-room search cannot satisfy every candidate, a warning like `Code="14"` with text `Not all rooms in the request do have a suitable candidate` may be present.

## Structure - Core Elements

### HotelStays

Portfolio-level hotel facts that can accompany availability (e.g., `BasicPropertyInfo` with `HotelCode`, `HotelName`, `AreaID`, optional `VendorMessages`, `Award`).

**Example**

```xml theme={null}
    <HotelStays>
        <HotelStay>
            <BasicPropertyInfo HotelCode="AESPMI5L46" HotelName="Caserio de Lanzarote" HotelCodeContext="11111" AreaID="1012SA">
                <Award Rating="2 Stars"/>
            </BasicPropertyInfo>
        </HotelStay>
    </HotelStays>
```

<Note> HotelCodeContext returns the GIATA code if the client is licensed </Note>

### Areas

Geographical labels corresponding to the `AreaID` linkage.

**Example**

```xml theme={null}
<Areas>
	<Area AreaID="1012SA">
		<AreaDescription Name="Country">
			<Text>Spain</Text>
		</AreaDescription>
		<AreaDescription Name="CountryCode">
			<Text>ES</Text>
		</AreaDescription>
		<AreaDescription Name="TravelDestination">
			<Text>ACE</Text>
		</AreaDescription>
		<AreaDescription Name="Destination">
			<Text>Canarian Islands</Text>
		</AreaDescription>
		<AreaDescription Name="Region">
			<Text>Lanzarote</Text>
		</AreaDescription>
		<AreaDescription Name="Resort">
			<Text>San Bartolome</Text>
		</AreaDescription>
		<AreaDescription Name="ResortCode">
			<Text>1012SA</Text>
		</AreaDescription>
		<AreaDescription Name="Airport">
			<Text>ACE</Text>
		</AreaDescription>
	</Area>
</Areas>
```

### RoomStays

Each `RoomStay` conveys a bookable option (room/board/rateplan) for a given hotel.

* `RoomStay@RoomStayCandidateRPH` echoes the corresponding room candidate index from the request.
* **Grouping Semantics**
  * **Standard searches:** multiple room/board combinations for the **same hotel** may share the same `RPH` for grouping purposes.
  * **Multi-room mode**: each `RoomStay` carries a **unique** `RPH` (one per returned option) to help client-side combination logic.

```xml theme={null}
<RoomStay RoomStayCandidateRPH="0" RPH="0" ResponseType="PropertyList">
```

#### RoomType

Specifies the room code of the returned product.

```xml theme={null}
<RoomTypes>
	<RoomType RoomTypeCode="RM00CRMV00"/>
</RoomTypes>
```

The room codes breakdown can be found at [Mapping codes](../glossary/codes#hotel-room-codes-large)

#### RoomRates

* Pricing appears under `RoomRates/RoomRate/Rates/Rate` as `Base` and `Total` (amounts after tax, currency).
* Availability for each option is indicated at `RoomRate@NumberOfUnits` (omitted when free sales apply).
* The `ChargeType` code on `Rate` reflects the original contract rate basis (OTA CHG codelist):
  * `19` → Per Unit
  * `21` → Per Person
* `Features/Feature/Description/Text` indicates the board for the returned rate.

```xml theme={null}
<RoomRates>
	<RoomRate RoomTypeCode="RM00CRMV00" NumberOfUnits="99">
		<Rates>
			<Rate ChargeType="21">
				<Base AmountAfterTax="900.00" CurrencyCode="EUR"/>
				<Total AmountAfterTax="900.00" CurrencyCode="EUR"/>
			</Rate>
		</Rates>
		<Features>
			<Feature>
				<Description>
					<Text>BB</Text>
				</Description>
			</Feature>
		</Features>
	</RoomRate>
</RoomRates>
```

#### GuestCounts

Shows the pax count for the returned product:

* AgeQualifyingCode values:
  * 10: Adult
  * 8: Child
  * 7: Infant

```xml theme={null}
<GuestCounts>
	<GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
</GuestCounts>
```

#### TimeSpan

Indicates the dates for which the service is available.

```xml theme={null}
<TimeSpan Start="2026-07-17" End="2026-07-24"/>
```

#### BasicPropertyInfo

Shows the hotel code for the returned room stay. Vendor Messages can also be displayed at this section. Check [Vendor Messages](../general/messaging#vendor-messages)

```xml theme={null}
<BasicPropertyInfo HotelCode="AESPMI5L46">
	<VendorMessages>
		<VendorMessage Title="Free Stay Offers" InfoType="3">
			<SubSection SubTitle="100" SubCode="Value">
				<Paragraph>
					<Text>Free Stay Offers 100</Text>
				</Paragraph>
			</SubSection>
			<SubSection SubTitle="FSO" SubCode="OTS"/>
		</VendorMessage>
		<VendorMessage Title="FreeCancellationConditions" InfoType="2">
			<SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
			<SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
		</VendorMessage>
	</VendorMessages>
</BasicPropertyInfo>
```

## Rules and Features

### Enrichment via `InfoSource`

The response can be enriched beyond `RoomStays` depending on the `InfoSource` value used in the request:

| Value     | Meaning                                       |
| --------- | --------------------------------------------- |
| (not set) | Full enrichment (equivalent to `1234`)        |
| `0`       | No enrichment – only `RoomStays` are included |
| `1`       | Include `HotelStays` only                     |
| `2`       | Include `Areas` only                          |
| `3`       | Include room `Amenities` only                 |
| `4`       | Include `RoomDescription` only                |
| `5`       | Include `BoardDescription` only               |

> Combination is supported (e.g., `InfoSource="12"` returns `HotelStays` + `Areas`).

### Multi-Room Specifics

* Up to **5** room candidates per request are supported.
* Response returns one `RoomStay` per option that fits each candidate; combine client‑side using `RoomStayCandidateRPH`, `RPH`, and `NumberOfUnits`.
* If one or more candidates cannot be satisfied, a warning is returned.

### Reccomended Retail price

As a distributor, there is an **optional** setup that can be activated so that the Hotel avail response returns the reccomended retail price from the hotelier.

In this case two rates will be received, our own selling price, and also the **the minimal price** for which this hotel can be sold to end-customers.

The Rate node containing the attribute `RateMode = "1"` defines the minimal price to sell to an end-customer. See below example:

```xml theme={null}
<RoomRates>
    <RoomRate RoomTypeCode="RMSDDB00A0;FP000" NumberOfUnits="14">
        <Rates>
            <Rate ChargeType="21" >
                <Base AmountAfterTax="510.16" CurrencyCode="EUR"/>
                <Total AmountAfterTax="510.16" CurrencyCode="EUR"/>
            </Rate>
            <Rate ChargeType="21" RateMode="1">
                <Base AmountAfterTax="520" CurrencyCode="EUR"/>
                <Total AmountAfterTax="520" CurrencyCode="EUR"/>
            </Rate>                        
        </Rates>
        <Features>
            <Feature>
                <Description>
                    <Text>RO</Text>
                </Description>
            </Feature>
        </Features>
    </RoomRate>
</RoomRates>
```

<Warning> Even when this feature is active for a distributor, not all portfolio would contain the RRP node, not all hotels would return this. </Warning>

### Offer Tags

As a distributor, there is an **optional** setup to receive Offer Tags. For more info please check [General Messaging](../general/messaging#offer-tags-and-extras)

## Complete Examples

<CodeGroup>
  ```xml Basic expandable theme={null}
  <OTA_HotelAvailRS
      xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1" TransactionIdentifier="1-1/1">
      <Success/>
      <HotelStays>
          <HotelStay>
              <BasicPropertyInfo HotelCode="AESPMI5L46" HotelName="Caserio de Lanzarote" HotelCodeContext="11111" AreaID="1012SA">
                  <Award Rating="2 Stars"/>
              </BasicPropertyInfo>
          </HotelStay>
      </HotelStays>
      <RoomStays>
          <RoomStay RoomStayCandidateRPH="0" RPH="0" ResponseType="PropertyList">
              <RoomTypes>
                  <RoomType RoomTypeCode="RM00CRMV00"/>
              </RoomTypes>
              <RoomRates>
                  <RoomRate RoomTypeCode="RM00CRMV00" NumberOfUnits="99">
                      <Rates>
                          <Rate ChargeType="21">
                              <Base AmountAfterTax="900.00" CurrencyCode="EUR"/>
                              <Total AmountAfterTax="900.00" CurrencyCode="EUR"/>
                          </Rate>
                      </Rates>
                      <Features>
                          <Feature>
                              <Description>
                                  <Text>BB</Text>
                              </Description>
                          </Feature>
                      </Features>
                  </RoomRate>
              </RoomRates>
              <GuestCounts>
                  <GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
              </GuestCounts>
              <TimeSpan Start="2026-07-17" End="2026-07-24"/>
              <BasicPropertyInfo HotelCode="AESPMI5L46">
                  <VendorMessages>
                      <VendorMessage Title="Free Stay Offers" InfoType="3">
                          <SubSection SubTitle="100" SubCode="Value">
                              <Paragraph>
                                  <Text>Free Stay Offers 100</Text>
                              </Paragraph>
                          </SubSection>
                          <SubSection SubTitle="FSO" SubCode="OTS"/>
                      </VendorMessage>
                      <VendorMessage Title="FreeCancellationConditions" InfoType="2">
                          <SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
                          <SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
                      </VendorMessage>
                  </VendorMessages>
              </BasicPropertyInfo>
              <Reference Type="22" ID="TEST" ID_Context="TEST"/>
          </RoomStay>
          <RoomStay RoomStayCandidateRPH="0" RPH="1" ResponseType="PropertyList">
              <RoomTypes>
                  <RoomType RoomTypeCode="RM00CRMV00"/>
              </RoomTypes>
              <RoomRates>
                  <RoomRate RoomTypeCode="RM00CRMV00" NumberOfUnits="99">
                      <Rates>
                          <Rate ChargeType="21">
                              <Base AmountAfterTax="1050.00" CurrencyCode="EUR"/>
                              <Total AmountAfterTax="1050.00" CurrencyCode="EUR"/>
                          </Rate>
                      </Rates>
                      <Features>
                          <Feature>
                              <Description>
                                  <Text>HB</Text>
                              </Description>
                          </Feature>
                      </Features>
                  </RoomRate>
              </RoomRates>
              <GuestCounts>
                  <GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
              </GuestCounts>
              <TimeSpan Start="2026-07-17" End="2026-07-24"/>
              <BasicPropertyInfo HotelCode="AESPMI5L46">
                  <VendorMessages>
                      <VendorMessage Title="Free Stay Offers" InfoType="3">
                          <SubSection SubTitle="100" SubCode="Value">
                              <Paragraph>
                                  <Text>Free Stay Offers 100</Text>
                              </Paragraph>
                          </SubSection>
                          <SubSection SubTitle="FSO" SubCode="OTS"/>
                      </VendorMessage>
                      <VendorMessage Title="FreeCancellationConditions" InfoType="2">
                          <SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
                          <SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
                      </VendorMessage>
                  </VendorMessages>
              </BasicPropertyInfo>
              <Reference Type="22" ID="TEST" ID_Context="TEST"/>
          </RoomStay>
          <RoomStay RoomStayCandidateRPH="0" RPH="2" ResponseType="PropertyList">
              <RoomTypes>
                  <RoomType RoomTypeCode="RM00CRMV00"/>
              </RoomTypes>
              <RoomRates>
                  <RoomRate RoomTypeCode="RM00CRMV00" NumberOfUnits="99">
                      <Rates>
                          <Rate ChargeType="21">
                              <Base AmountAfterTax="1200.00" CurrencyCode="EUR"/>
                              <Total AmountAfterTax="1200.00" CurrencyCode="EUR"/>
                          </Rate>
                      </Rates>
                      <Features>
                          <Feature>
                              <Description>
                                  <Text>AI</Text>
                              </Description>
                          </Feature>
                      </Features>
                  </RoomRate>
              </RoomRates>
              <GuestCounts>
                  <GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
              </GuestCounts>
              <TimeSpan Start="2026-07-17" End="2026-07-24"/>
              <BasicPropertyInfo HotelCode="AESPMI5L46">
                  <VendorMessages>
                      <VendorMessage Title="Free Stay Offers" InfoType="3">
                          <SubSection SubTitle="100" SubCode="Value">
                              <Paragraph>
                                  <Text>Free Stay Offers 100</Text>
                              </Paragraph>
                          </SubSection>
                          <SubSection SubTitle="FSO" SubCode="OTS"/>
                      </VendorMessage>
                      <VendorMessage Title="FreeCancellationConditions" InfoType="2">
                          <SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
                          <SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
                      </VendorMessage>
                  </VendorMessages>
              </BasicPropertyInfo>
              <Reference Type="22" ID="TEST" ID_Context="TEST"/>
          </RoomStay>
      </RoomStays>
      <Areas>
          <Area AreaID="1012SA">
              <AreaDescription Name="Country">
                  <Text>Spain</Text>
              </AreaDescription>
              <AreaDescription Name="CountryCode">
                  <Text>ES</Text>
              </AreaDescription>
              <AreaDescription Name="TravelDestination">
                  <Text>ACE</Text>
              </AreaDescription>
              <AreaDescription Name="Destination">
                  <Text>Canarian Islands</Text>
              </AreaDescription>
              <AreaDescription Name="Region">
                  <Text>Lanzarote</Text>
              </AreaDescription>
              <AreaDescription Name="Resort">
                  <Text>San Bartolome</Text>
              </AreaDescription>
              <AreaDescription Name="ResortCode">
                  <Text>1012SA</Text>
              </AreaDescription>
              <AreaDescription Name="Airport">
                  <Text>ACE</Text>
              </AreaDescription>
          </Area>
      </Areas>
  </OTA_HotelAvailRS>
  ```

  ```xml Multiroom expandable theme={null}
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <OTA_HotelAvailRS
      xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1" TransactionIdentifier="1-1/1">
      <Success/>
      <RoomStays>
          <RoomStay RoomStayCandidateRPH="111" RPH="0" ResponseType="PropertyList">
              <RoomTypes>
                  <RoomType RoomTypeCode="RMSDIN0000"/>
              </RoomTypes>
              <RoomRates>
                  <RoomRate RoomTypeCode="RMSDIN0000" NumberOfUnits="99">
                      <Rates>
                          <Rate ChargeType="21">
                              <Base AmountAfterTax="550.00" CurrencyCode="EUR"/>
                              <Total AmountAfterTax="550.00" CurrencyCode="EUR"/>
                          </Rate>
                      </Rates>
                      <Features>
                          <Feature>
                              <Description>
                                  <Text>BB</Text>
                              </Description>
                          </Feature>
                      </Features>
                  </RoomRate>
              </RoomRates>
              <GuestCounts>
                  <GuestCount AgeQualifyingCode="10" Count="1"/>
              </GuestCounts>
              <TimeSpan Start="2026-07-17" End="2026-07-24"/>
              <BasicPropertyInfo HotelCode="AESPMI5L46">
                  <VendorMessages>
                      <VendorMessage Title="Free Stay Offers" InfoType="3">
                          <SubSection SubTitle="100" SubCode="Value">
                              <Paragraph>
                                  <Text>Free Stay Offers 100</Text>
                              </Paragraph>
                          </SubSection>
                          <SubSection SubTitle="FSO" SubCode="OTS"/>
                      </VendorMessage>
                  </VendorMessages>
              </BasicPropertyInfo>
              <Reference Type="22" ID="TEST" ID_Context="TEST"/>
          </RoomStay>
          <RoomStay RoomStayCandidateRPH="222" RPH="0" ResponseType="PropertyList">
              <RoomTypes>
                  <RoomType RoomTypeCode="RM00CRMV00"/>
              </RoomTypes>
              <RoomRates>
                  <RoomRate RoomTypeCode="RM00CRMV00" NumberOfUnits="99">
                      <Rates>
                          <Rate ChargeType="21">
                              <Base AmountAfterTax="900.00" CurrencyCode="EUR"/>
                              <Total AmountAfterTax="900.00" CurrencyCode="EUR"/>
                          </Rate>
                      </Rates>
                      <Features>
                          <Feature>
                              <Description>
                                  <Text>BB</Text>
                              </Description>
                          </Feature>
                      </Features>
                  </RoomRate>
              </RoomRates>
              <GuestCounts>
                  <GuestCount AgeQualifyingCode="10" Count="2"/>
              </GuestCounts>
              <TimeSpan Start="2026-07-17" End="2026-07-24"/>
              <BasicPropertyInfo HotelCode="AESPMI5L46">
                  <VendorMessages>
                      <VendorMessage Title="Free Stay Offers" InfoType="3">
                          <SubSection SubTitle="100" SubCode="Value">
                              <Paragraph>
                                  <Text>Free Stay Offers 100</Text>
                              </Paragraph>
                          </SubSection>
                          <SubSection SubTitle="FSO" SubCode="OTS"/>
                      </VendorMessage>
                  </VendorMessages>
              </BasicPropertyInfo>
              <Reference Type="22" ID="TEST" ID_Context="TEST"/>
          </RoomStay>
      </RoomStays>
  </OTA_HotelAvailRS>
  ```
</CodeGroup>

## Best Practices

1. Include `EchoToken` in both request and response correlation.
2. Use `InfoSource=0` when you only need pricing blocks; enable specific enrichments incrementally.
3. In multi-room flows, validate combinations client‑side using `NumberOfUnits` and candidate indexes.
4. Parse `ChargeType` to correctly label price basis (per person/per unit).
