> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/labs-voice-agent/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/labs-voice-agent/_mcp/server.

# nemo_voice_agent.evaluation.tools.tau2_airline_params

Pydantic parameter models and enums for tau2\_airline tool functions.

This file holds **two** classes of models, both consumed by
`nemo_voice_agent.evaluation.tools.tau2_airline_tools`:

1. **Domain data models** — `FlightDB` / `User` / `Reservation` / `Flight` /
   `Passenger` / payment-method variants / etc. Mirror tau2's `data_model.py`
   1:1 so dicts loaded from `nemo_voice_agent/evaluation/data/tau2_airline/db.json` round-trip
   through `Model.model_validate(...)` cleanly. Used by tools that need to
   manipulate strongly-typed records (e.g., creating a new Reservation).

2. **Tool argument schemas** — one `*Params` model per LLM-exposed tool. Each
   tool's body calls `Model.model_validate(params)` at the top and catches
   `ValidationError` to produce a standard `&#123;"status": "error", ...&#125;` response
   for bad LLM-supplied inputs. Field descriptions come verbatim from tau2's
   tool docstring `Args:` blocks so the LLM sees identical instructions.

Convention:

* Enums use `StrEnum` so values JSON-serialize as plain strings and compare
  equal to their literal counterparts.
* All param models use `extra="forbid"` — required by plan §5.1 step 3 to
  match tau2's strict validation semantics.
* Data models do NOT use `extra="forbid"` because `db.json` may carry
  upstream-added fields we don't model yet; dropping them silently is safer
  than crashing on load.

## Module Contents

### Classes

| Name                                                                                                                            | Description                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [`Address`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Address)                                                     | -                                                                           |
| [`AirportCode`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-AirportCode)                                             | -                                                                           |
| [`BookReservationParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-BookReservationParams)                         | -                                                                           |
| [`CabinClass`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-CabinClass)                                               | -                                                                           |
| [`CalculateParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-CalculateParams)                                     | -                                                                           |
| [`CancelReservationParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-CancelReservationParams)                     | -                                                                           |
| [`Certificate`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Certificate)                                             | -                                                                           |
| [`CreditCard`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-CreditCard)                                               | -                                                                           |
| [`DirectFlight`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-DirectFlight)                                           | -                                                                           |
| [`Flight`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Flight)                                                       | -                                                                           |
| [`FlightBase`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightBase)                                               | -                                                                           |
| [`FlightDB`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDB)                                                   | Top-level shape of `nemo_voice_agent/evaluation/data/tau2_airline/db.json`. |
| [`FlightDataStatusFlying`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDataStatusFlying)                       | -                                                                           |
| [`FlightDataStatusOnTime`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDataStatusOnTime)                       | -                                                                           |
| [`FlightDateStatusAvailable`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDateStatusAvailable)                 | -                                                                           |
| [`FlightDateStatusCancelled`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDateStatusCancelled)                 | -                                                                           |
| [`FlightDateStatusDelayed`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDateStatusDelayed)                     | -                                                                           |
| [`FlightDateStatusLanded`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDateStatusLanded)                       | -                                                                           |
| [`FlightInfo`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightInfo)                                               | One element of the `flights` argument to book\_reservation /                |
| [`FlightType`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightType)                                               | -                                                                           |
| [`GetFlightStatusParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-GetFlightStatusParams)                         | -                                                                           |
| [`GetReservationDetailsParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-GetReservationDetailsParams)             | -                                                                           |
| [`GetUserDetailsParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-GetUserDetailsParams)                           | -                                                                           |
| [`GiftCard`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-GiftCard)                                                   | -                                                                           |
| [`Insurance`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Insurance)                                                 | -                                                                           |
| [`ListAllAirportsParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-ListAllAirportsParams)                         | No arguments — LLM still passes an empty dict `&#123;&#125;`.               |
| [`MembershipLevel`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-MembershipLevel)                                     | -                                                                           |
| [`Name`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Name)                                                           | -                                                                           |
| [`Passenger`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Passenger)                                                 | -                                                                           |
| [`Payment`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Payment)                                                     | A payment record (line item) attached to a reservation.                     |
| [`PaymentMethodBase`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-PaymentMethodBase)                                 | -                                                                           |
| [`Reservation`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-Reservation)                                             | -                                                                           |
| [`ReservationFlight`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-ReservationFlight)                                 | -                                                                           |
| [`SearchDirectFlightParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-SearchDirectFlightParams)                   | -                                                                           |
| [`SearchOnestopFlightParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-SearchOnestopFlightParams)                 | -                                                                           |
| [`SendCertificateParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-SendCertificateParams)                         | -                                                                           |
| [`TransferToHumanAgentsParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-TransferToHumanAgentsParams)             | -                                                                           |
| [`UpdateReservationBaggagesParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-UpdateReservationBaggagesParams)     | -                                                                           |
| [`UpdateReservationFlightsParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-UpdateReservationFlightsParams)       | -                                                                           |
| [`UpdateReservationPassengersParams`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-UpdateReservationPassengersParams) | -                                                                           |
| [`User`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-User)                                                           | -                                                                           |
| [`_ToolParamsBase`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)                                     | Strict base: reject unknown args, freeze types after validation.            |

### Functions

| Name                                                                                                            | Description                                                             |
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [`validation_error_response`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-validation_error_response) | Translate a pydantic `ValidationError` into a standard tool-error dict. |

### Data

[`AirportInfo`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-AirportInfo)

[`AvailableSeats`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-AvailableSeats)

[`FlightDateStatus`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightDateStatus)

[`PaymentMethod`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-PaymentMethod)

[`SeatPrices`](#nemo_voice_agent-evaluation-tools-tau2_airline_params-SeatPrices)

### API

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Address()
```

**Bases:** `BaseModel`

**`address1`**

---

**`address2`**

---

**`city`**

---

**`country`**

---

**`state`**

---

**`zip`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.AirportCode()
```

**Bases:** `BaseModel`

**`city`**

---

**`iata`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.BookReservationParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`cabin`**

---

**`destination`**

---

**`flight_type`**

---

**`flights`**

---

**`insurance`**

---

**`nonfree_baggages`**

---

**`origin`**

---

**`passengers`**

---

**`payment_methods`**

---

**`total_baggages`**

---

**`user_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CabinClass
```

**Bases:** `enum.Enum`

**`basic_economy`**

---

**`business`**

---

**`economy`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CalculateParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`expression`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CancelReservationParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`reservation_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Certificate()
```

**Bases:** [PaymentMethodBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-PaymentMethodBase)

**`amount`**

---

**`source`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CreditCard()
```

**Bases:** [PaymentMethodBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-PaymentMethodBase)

**`brand`**

---

**`last_four`**

---

**`source`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.DirectFlight()
```

**Bases:** [FlightBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightBase)

**`available_seats`**

---

**`date`**

---

**`prices`**

---

**`scheduled_arrival_time_est`**

---

**`scheduled_departure_time_est`**

---

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Flight()
```

**Bases:** [FlightBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightBase)

**`dates`**

---

**`scheduled_arrival_time_est`**

---

**`scheduled_departure_time_est`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightBase()
```

**Bases:** `BaseModel`

**`destination`**

---

**`flight_number`**

---

**`origin`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDB()
```

**Bases:** `BaseModel`

Top-level shape of `nemo_voice_agent/evaluation/data/tau2_airline/db.json`.

**`flights`**

---

**`reservations`**

---

**`users`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDataStatusFlying()
```

**Bases:** `BaseModel`

**`actual_departure_time_est`**

---

**`estimated_arrival_time_est`**

---

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDataStatusOnTime()
```

**Bases:** `BaseModel`

**`estimated_arrival_time_est`**

---

**`estimated_departure_time_est`**

---

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusAvailable()
```

**Bases:** `BaseModel`

**`available_seats`**

---

**`prices`**

---

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusCancelled()
```

**Bases:** `BaseModel`

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusDelayed()
```

**Bases:** `BaseModel`

**`estimated_arrival_time_est`**

---

**`estimated_departure_time_est`**

---

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusLanded()
```

**Bases:** `BaseModel`

**`actual_arrival_time_est`**

---

**`actual_departure_time_est`**

---

**`status`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightInfo()
```

**Bases:** `BaseModel`

One element of the `flights` argument to book\_reservation /
update\_reservation\_flights — just a flight-number + date pair.

**`date`**

---

**`flight_number`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightType
```

**Bases:** `enum.Enum`

**`one_way`**

---

**`round_trip`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GetFlightStatusParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`date`**

---

**`flight_number`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GetReservationDetailsParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`reservation_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GetUserDetailsParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`user_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GiftCard()
```

**Bases:** [PaymentMethodBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-PaymentMethodBase)

**`amount`**

---

**`id`**

---

**`source`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Insurance
```

**Bases:** `enum.Enum`

**`no`**

---

**`yes`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.ListAllAirportsParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

No arguments — LLM still passes an empty dict `&#123;&#125;`.

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.MembershipLevel
```

**Bases:** `enum.Enum`

**`gold`**

---

**`regular`**

---

**`silver`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Name()
```

**Bases:** `BaseModel`

**`first_name`**

---

**`last_name`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Passenger()
```

**Bases:** `BaseModel`

**`dob`**

---

**`first_name`**

---

**`last_name`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Payment()
```

**Bases:** `BaseModel`

A payment record (line item) attached to a reservation.

**`amount`**

---

**`payment_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.PaymentMethodBase()
```

**Bases:** `BaseModel`

**`id`**

---

**`source`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Reservation()
```

**Bases:** `BaseModel`

**`cabin`**

---

**`created_at`**

---

**`destination`**

---

**`flight_type`**

---

**`flights`**

---

**`insurance`**

---

**`nonfree_baggages`**

---

**`origin`**

---

**`passengers`**

---

**`payment_history`**

---

**`reservation_id`**

---

**`status`**

---

**`total_baggages`**

---

**`user_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.ReservationFlight()
```

**Bases:** [FlightBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-FlightBase)

**`date`**

---

**`price`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.SearchDirectFlightParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`date`**

---

**`destination`**

---

**`origin`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.SearchOnestopFlightParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`date`**

---

**`destination`**

---

**`origin`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.SendCertificateParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`amount`**

---

**`user_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.TransferToHumanAgentsParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`summary`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.UpdateReservationBaggagesParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`nonfree_baggages`**

---

**`payment_id`**

---

**`reservation_id`**

---

**`total_baggages`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.UpdateReservationFlightsParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`cabin`**

---

**`flights`**

---

**`payment_id`**

---

**`reservation_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.UpdateReservationPassengersParams()
```

**Bases:** [\_ToolParamsBase](#nemo_voice_agent-evaluation-tools-tau2_airline_params-_ToolParamsBase)

**`passengers`**

---

**`reservation_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params.User()
```

**Bases:** `BaseModel`

**`address`**

---

**`dob`**

---

**`email`**

---

**`membership`**

---

**`name`**

---

**`payment_methods`**

---

**`reservations`**

---

**`saved_passengers`**

---

**`user_id`**

---

```python
class nemo_voice_agent.evaluation.tools.tau2_airline_params._ToolParamsBase()
```

**Bases:** `BaseModel`

Strict base: reject unknown args, freeze types after validation.

**`model_config`**

---

```python
nemo_voice_agent.evaluation.tools.tau2_airline_params.validation_error_response(
    error: pydantic.ValidationError
) -> typing.Dict[str, typing.Any]
```

Translate a pydantic `ValidationError` into a standard tool-error dict.

Tools should call this in their `except ValidationError` block so the LLM
sees a structured error rather than a raw Python traceback. Format mirrors
eva\_airline tools' error shape so the runner's downstream handling doesn't
need a separate code path per domain.

```python
nemo_voice_agent.evaluation.tools.tau2_airline_params.AirportInfo = Annotated[List[AirportCode], Field(description='Airport information')]
```

```python
nemo_voice_agent.evaluation.tools.tau2_airline_params.AvailableSeats = Annotated[Dict[CabinClass, int], Field(description='Available seats for differen...
```

```python
nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatus = Union[FlightDateStatusAvailable, FlightDateStatusLanded, FlightDateStatusCancell...
```

```python
nemo_voice_agent.evaluation.tools.tau2_airline_params.PaymentMethod = Union[CreditCard, GiftCard, Certificate]
```

```python
nemo_voice_agent.evaluation.tools.tau2_airline_params.SeatPrices = Annotated[Dict[CabinClass, int], Field(description='Prices for different cabin c...
```