> ## 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_GroundAvailRS

The `OTA_GroundAvailRS` (Ground Availability **Response**) returns available ground transfer services in response to an `OTA_GroundAvailRQ`. Use it to read priced service options, conditions, and any applicable fees or penalties.

## Structure – Root Element

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

**Key children:** `Success` | `Errors` | `GroundServices` | `Warnings` (if products are **OnRequest**).

### Success & Errors

* On success, the message **may** include an empty `<Success/>` and populated `<GroundServices>`.
* If no suitable services are found, the response returns `<Errors>` with `Code="14"` and `ShortText="calculation error"`. [Error Scenarios](../glossary/errors).

```xml theme={null}
<OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="1912GBEZGBQ9" Version="2016.2">
  <GroundServices/>
  <Errors>
    <Error ShortText="calculation error" Code="14">No suitable services found</Error>
    <Error ShortText="calculation error" Code="14">No suitable services found</Error>
  </Errors>
</OTA_GroundAvailRS>
```

## Structure - Core Elements

GroundServices is a container of one or more `GroundService` items, each representing a priced transfer option and its rules.

### GroundService

#### ServiceInfo

High‑level details for the service.

* Attributes: `DisabilityVehicleInd` (boolean), `ServiceType` (e.g., `AirportTransfer`), `MaximumPassengers` (integer), `ShortDescription` (string).
* Children: `ServiceLevel` (vehicle/contract code), `VehicleType` (OTA vehicle descriptor).

```xml theme={null}
<ServiceInfo DisabilityVehicleInd="false" ServiceType="AirportTransfer" MaximumPassengers="99" ShortDescription="Airport PMI to Resorts PMI/Shared">
  <ServiceLevel Code="S0000"/>
  <VehicleType Code="3" Description="Bus"/>
</ServiceInfo>
```

#### RateQualifier

Shows the transfer stock code and the promotion (IN, OT or both).

```xml theme={null}
<RateQualifier RateQualifier="TRESPMIPMI" PromotionCode="IN/OT"/>
```

#### Restrictions

Operational/financial flags at search time.

* `CalculationPenaltyInd="true"` indicates cancellations may incur a penalty, specified under `PaymentRules`.

```xml theme={null}
<Restrictions CalculationPenaltyInd="true"/>
```

#### TotalCharge

Total price (currency and amount) for the service option in the search response.

```xml theme={null}
<TotalCharge CurrencyCode="EUR" Amount="45.00"/>
```

#### Extras

Optional or mandatory extras available. Use `RequiredInd` to distinguish if they are mandatory or not:

```xml theme={null}
<Fees>
  <Fee RequiredInd="false" Description="Golf Clubs/IN" IncludedInRate="false" CurrencyCode="EUR" Amount="12.50"/>
</Fees>
```

#### PaymentRules

Cancellation rules (`RuleType="1"` = **Cancel**). When multiple rules apply, the one **nearest** to the service start date is used.

```xml theme={null}
<PaymentRules>
  <PaymentRule RuleType="1" Amount="10.00" CurrencyCode="EUR" AbsoluteDeadline="2025-07-06T00:00:00"/>
  <PaymentRule RuleType="1" Amount="20.00" CurrencyCode="EUR" AbsoluteDeadline="2025-07-09T00:00:00"/>
</PaymentRules>
```

### Shuttle (GeoCode Searches)

When the request used GeoCodes, services may include `Shuttle/ServiceLocation` entries. `PickupInd` marks direction membership; hotel candidates are sorted by distance from the provided GeoCode. If the distributor is Giata‑licensed, `ResourceName` can carry the Giata code.

```xml theme={null}
<Shuttle>
  <ServiceLocation PickupInd="true" Sequence="1">
    <Address Latitude="3.12345" Longitude="6.12345" Distance="8">
      <LocationType Code="11" UniqueId="AMTSES1234" ResourceName="54123" DescriptionDetail="Hotel Happy 1"/>
    </Address>
  </ServiceLocation>
  <ServiceLocation PickupInd="true" Sequence="2">
    <Address Latitude="3.12366" Longitude="6.565" Distance="34">
      <LocationType Code="11" UniqueId="AMTSES1235" ResourceName="54163" DescriptionDetail="Hotel Happy 2"/>
    </Address>
  </ServiceLocation>
</Shuttle>
```

### Per‑Resort Searches

If the search is per‑resort, the response may list available hotels under `TPA_Extensions/Properties`.

```xml theme={null}
<TPA_Extensions>
  <Properties>
    <Property HotelCode="AMTSES0M1C" HotelName="Central Park" HotelCodeContext="35252"/>
    <Property HotelCode="AMTSES2EWO" HotelName="Anibal Hostal" HotelCodeContext="47988"/>
  </Properties>
</TPA_Extensions>
```

### Warnings

When the request asks to include **OnRequest** products, the response includes warnings noting the service status.

```xml theme={null}
<Warnings>
  <Warning Type="3" Code="507">Service S0000/S0000 is OnRequest</Warning>
  <Warning Type="3" Code="507">Service P0000/P0000 is OnRequest</Warning>
</Warnings>
```

## Complete Examples

<CodeGroup>
  ```xml Basic expandable theme={null}
  <?xml version="1.0" encoding="UTF-8"?>
  <OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2016.2">
    <Success/>
    <GroundServices>
      <GroundService>
        <ServiceInfo DisabilityVehicleInd="false" ServiceType="AirportTransfer" MaximumPassengers="99" ShortDescription="Airport PMI to Resorts PMI/Shared">
          <ServiceLevel Code="S0000"/>
          <VehicleType Code="3" Description="Bus"/>
        </ServiceInfo>
        <TotalCharge Amount="45.00" CurrencyCode="EUR"/>
        <Restrictions CalculationPenaltyInd="true"/>
        <PaymentRules>
          <PaymentRule RuleType="1" Amount="10.00" CurrencyCode="EUR" AbsoluteDeadline="2025-10-16T00:00:00"/>
          <PaymentRule RuleType="1" Amount="20.00" CurrencyCode="EUR" AbsoluteDeadline="2025-10-17T00:00:00"/>
        </PaymentRules>
        <Fees>
          <Fee RequiredInd="false" Description="Golf Clubs/IN" IncludedInRate="false" CurrencyCode="EUR" Amount="12.50"/>
          <Fee RequiredInd="false" Description="Surf Board/OT" IncludedInRate="false" CurrencyCode="EUR" Amount="12.50"/>
        </Fees>
      </GroundService>
    </GroundServices>
  </OTA_GroundAvailRS>
  ```

  ```xml GeoCode search (shuttle + candidates) expandable theme={null}
  <OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="geocode-xyz" Version="2016.2">
    <Success/>
    <GroundServices>
      <GroundService>
        <ServiceInfo DisabilityVehicleInd="false" ServiceType="AirportTransfer" MaximumPassengers="99" ShortDescription="Airport PMI to Resorts PMI/Shared">
          <ServiceLevel Code="S0000"/>
          <VehicleType Code="3" Description="Bus"/>
        </ServiceInfo>
        <Shuttle>
          <ServiceLocation PickupInd="true" Sequence="1">
            <Address Latitude="3.12345" Longitude="6.12345" Distance="8">
              <LocationType Code="11" UniqueId="AMTSES1234" ResourceName="54123" DescriptionDetail="Hotel Happy 1"/>
            </Address>
          </ServiceLocation>
          <ServiceLocation PickupInd="true" Sequence="2">
            <Address Latitude="3.12366" Longitude="6.565" Distance="34">
              <LocationType Code="11" UniqueId="AMTSES1235" ResourceName="54163" DescriptionDetail="Hotel Happy 2"/>
            </Address>
          </ServiceLocation>
        </Shuttle>
        <TotalCharge CurrencyCode="EUR" Amount="45.00"/>
      </GroundService>
    </GroundServices>
    <Warnings>
      <Warning Type="3" Code="507">Service S0000/S0000 is OnRequest</Warning>
    </Warnings>
  </OTA_GroundAvailRS>
  ```
</CodeGroup>

## Best Practices

1. **Always echo** the request token in `EchoToken`.
2. **Validate totals** before booking—`TotalCharge` is authoritative at search time.
3. **Cancellations**: apply the rule with the deadline closest to the service start date.
4. **Extras**: treat `RequiredInd="true"` as mandatory and auto‑include in pricing.
