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

# air_sdk.types

## Attributes

| Name                                                                                          |
| --------------------------------------------------------------------------------------------- |
| [`T`](#air_sdktypest)                                                                         |
| [`DEMO_SIMULATION_STATE`](#air_sdktypesdemo_simulation_state)                                 |
| [`PAR_STATUS`](#air_sdktypespar_status)                                                       |
| [`UserConfigType`](#air_sdktypesuserconfigtype)                                               |
| [`_FORWARD_REF_EVALUATE_HAS_TYPE_PARAMS`](#air_sdktypes_forward_ref_evaluate_has_type_params) |

## Classes

| Name                                                                        | Description                                                         |
| --------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [`SimState`](#air_sdktypessimstate)                                         | Simulation state constants.                                         |
| [`InstructionExportChoice`](#air_sdktypesinstructionexportchoice)           | Which instructions to include when exporting a simulation.          |
| [`DockerRunTmpfsParameter`](#air_sdktypesdockerruntmpfsparameter)           | Docker tmpfs mount configuration.                                   |
| [`DockerRunParameters`](#air_sdktypesdockerrunparameters)                   | Docker run parameters for simulator containers.                     |
| [`Resources`](#air_sdktypesresources)                                       | Resource overhead for a simulator/platform.                         |
| [`Platform`](#air_sdktypesplatform)                                         | Emulated platform configuration.                                    |
| [`EmulationParams`](#air_sdktypesemulationparams)                           | Emulation parameters for a simulator/platform.                      |
| [`PluginManifestSecret`](#air_sdktypespluginmanifestsecret)                 | A named secret a simulator may request.                             |
| [`NodeAssignmentDataV2`](#air_sdktypesnodeassignmentdatav2)                 | v2 bulk assignment payload format.                                  |
| [`NodeAssignmentDataV3`](#air_sdktypesnodeassignmentdatav3)                 | v3 bulk assignment payload format.                                  |
| [`NodeResetPayload`](#air_sdktypesnoderesetpayload)                         | Payload for resetting a node.                                       |
| [`NodeRebuildPayload`](#air_sdktypesnoderebuildpayload)                     | Payload for rebuilding a node.                                      |
| [`NodeManagementInterfaceInfo`](#air_sdktypesnodemanagementinterfaceinfo)   | Per-interface management address info returned by the Node API.     |
| [`ResourceBudgetUsage`](#air_sdktypesresourcebudgetusage)                   | Current resource usage within an organization's budget.             |
| [`OSImageManifestPlatform`](#air_sdktypesosimagemanifestplatform)           | Per-model platform information and OS template pins.                |
| [`OSImageCapabilities`](#air_sdktypesosimagecapabilities)                   | OS image capability flags; key presence means supported.            |
| [`_OSImageManifestSpecRequired`](#air_sdktypes_osimagemanifestspecrequired) | Required fields for OSImageManifestSpec.                            |
| [`OSImageManifestSpec`](#air_sdktypesosimagemanifestspec)                   | OS image manifest payload for `api.images.upload()` (no `image`).   |
| [`HistoryEntry`](#air_sdktypeshistoryentry)                                 | A single history entry from a resource's nested `history` endpoint. |
| [`HistoryFilters`](#air_sdktypeshistoryfilters)                             | Distinct history filter values available for a single resource.     |
| [`SimRequiredResources`](#air_sdktypessimrequiredresources)                 | Required resources for a simulation.                                |

## Functions

| Name                                                                      | Description                                                               |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| [`is_typeddict`](#air_sdktypesis_typeddict)(→ bool)                       | None                                                                      |
| [`union_args_are_optional`](#air_sdktypesunion_args_are_optional)(→ bool) | None                                                                      |
| [`is_union`](#air_sdktypesis_union)(→ bool)                               | None                                                                      |
| [`is_optional_union`](#air_sdktypesis_optional_union)(→ bool)             | None                                                                      |
| [`get_optional_arg`](#air_sdktypesget_optional_arg)(→ Type\[T])           | None                                                                      |
| [`get_list_arg`](#air_sdktypesget_list_arg)(→ Type\[T])                   | None                                                                      |
| [`is_typed_dict`](#air_sdktypesis_typed_dict)(→ bool)                     | Determine if the `expected_type` provided is a subclass of TypedDict.     |
| [`type_check_typed_dict`](#air_sdktypestype_check_typed_dict)(→ bool)     | Perform type checking when the expected\_type is a subclass of TypedDict. |
| [`_evaluate_forward_ref`](#air_sdktypes_evaluate_forward_ref)(→ Any)      | Resolve a `ForwardRef` in a way that works across Python versions.        |
| [`type_check`](#air_sdktypestype_check)(→ bool)                           | Recursively check if the value matches the expected type.                 |

## Module Contents

```python
T = TypeVar(...)
```

```python
class air_sdk.types.SimState
```

**Bases**: `str`, `enum.Enum`

Simulation state constants.

Use these instead of raw strings for type safety and IDE autocomplete.

**Example:**

```python
>>> from air_sdk import SimState
>>> while sim.state != SimState.ACTIVE:
...     sleep(5)
...     sim.refresh()
```

```python
CLONING = CLONING
```

```python
CREATING = CREATING
```

```python
IMPORTING = IMPORTING
```

```python
INVALID = INVALID
```

```python
INACTIVE = INACTIVE
```

```python
REQUESTING = REQUESTING
```

```python
PROVISIONING = PROVISIONING
```

```python
PREPARE_BOOT = PREPARE_BOOT
```

```python
BOOTING = BOOTING
```

```python
ACTIVE = ACTIVE
```

```python
PREPARE_SHUTDOWN = PREPARE_SHUTDOWN
```

```python
SHUTTING_DOWN = SHUTTING_DOWN
```

```python
SAVING = SAVING
```

```python
PREPARE_TEARDOWN = PREPARE_TEARDOWN
```

```python
TEARING_DOWN = TEARING_DOWN
```

```python
DELETING = DELETING
```

```python
PREPARE_PURGE = PREPARE_PURGE
```

```python
PURGING = PURGING
```

```python
DEMO = DEMO
```

```python
TRAINING = TRAINING
```

```python
PREPARE_REBUILD = PREPARE_REBUILD
```

```python
REBUILDING = REBUILDING
```

```python
class air_sdk.types.InstructionExportChoice
```

**Bases**: `str`, `enum.Enum`

Which instructions to include when exporting a simulation.

Passed as the `include_instructions` parameter to
`export`. Use these instead of raw strings for type
safety and IDE autocomplete. The name matches the air-api
`InstructionExportChoice` constant.

**Example:**

```python
>>> from air_sdk import InstructionExportChoice
>>> choice = InstructionExportChoice.REPEATABLE
>>> export_data = sim.export(include_instructions=choice)
```

```python
NONE = NONE
```

```python
REPEATABLE = REPEATABLE
```

```python
REPEATABLE_OR_NOT_READY = REPEATABLE_OR_NOT_READY
```

```python
DEMO_SIMULATION_STATE: TypeAlias
```

```python
PAR_STATUS: TypeAlias
```

```python
class air_sdk.types.DockerRunTmpfsParameter
```

**Bases**: `typing.TypedDict`

Docker tmpfs mount configuration.

```python
path: str
```

```python
size_gb: int
```

```python
class air_sdk.types.DockerRunParameters
```

**Bases**: `typing.TypedDict`

Docker run parameters for simulator containers.

```python
tmpfs: list[DockerRunTmpfsParameter]
```

```python
cap_add: list[str]
```

```python
devices: list[str]
```

```python
volumes: list[str]
```

```python
environment: dict[str, str]
```

```python
class air_sdk.types.Resources
```

**Bases**: `typing.TypedDict`

Resource overhead for a simulator/platform.

```python
cpu: int
```

```python
memory: int
```

```python
class air_sdk.types.Platform
```

**Bases**: `typing.TypedDict`

Emulated platform configuration.

```python
cpu: int
```

```python
memory: int
```

```python
default_port_type: str
```

```python
default_port_count: int
```

```python
port_count_options: list[int]
```

```python
class air_sdk.types.EmulationParams
```

**Bases**: `typing.TypedDict`

Emulation parameters for a simulator/platform.

```python
direct_link_emulation: bool
```

```python
max_network_pci: int
```

```python
class air_sdk.types.PluginManifestSecret
```

**Bases**: `typing.TypedDict`

A named secret a simulator may request.

```python
name: str
```

```python
path: str
```

```python
UserConfigType
```

```python
class air_sdk.types.NodeAssignmentDataV2
```

**Bases**: `typing.TypedDict`

v2 bulk assignment payload format.

```python
simulation_node: Union[Node, PrimaryKey]
```

```python
user_data: UserConfigType
```

```python
meta_data: UserConfigType
```

```python
class air_sdk.types.NodeAssignmentDataV3
```

**Bases**: `typing.TypedDict`

v3 bulk assignment payload format.

```python
node: Node | PrimaryKey
```

```python
user_data: UserConfig | PrimaryKey | None
```

```python
meta_data: UserConfig | PrimaryKey | None
```

```python
class air_sdk.types.NodeResetPayload
```

**Bases**: `typing.TypedDict`

Payload for resetting a node.

```python
id: Node | PrimaryKey
```

```python
class air_sdk.types.NodeRebuildPayload
```

**Bases**: `typing.TypedDict`

Payload for rebuilding a node.

```python
id: Node | PrimaryKey
```

```python
class air_sdk.types.NodeManagementInterfaceInfo
```

**Bases**: `typing.TypedDict`

Per-interface management address info returned by the Node API.

`ip` may be `None` when the interface opts out of OOB-managed DHCP
while remaining wired to the leaf switch.

```python
ip: str | None
```

```python
mac_address: str | None
```

```python
class air_sdk.types.ResourceBudgetUsage
```

**Bases**: `typing.TypedDict`

Current resource usage within an organization's budget.

```python
cpu: float
```

Number of CPU cores currently in use

```python
memory: float
```

Memory currently in use, in MiB

```python
disk_storage: float
```

Disk storage currently in use, in GB

```python
image_storage: int
```

Image storage currently in use, in GB

```python
userconfigs: int
```

User configs content currently in use, in bytes

```python
class air_sdk.types.OSImageManifestPlatform
```

**Bases**: `typing.TypedDict`

Per-model platform information and OS template pins.

```python
platform_information_version: str | None
```

```python
os_template_version: str | None
```

```python
class air_sdk.types.OSImageCapabilities
```

**Bases**: `typing.TypedDict`

OS image capability flags; key presence means supported.

```python
vsock: dict[str, Any]
```

```python
class air_sdk.types._OSImageManifestSpecRequired
```

**Bases**: `typing.TypedDict`

Required fields for OSImageManifestSpec.

```python
os_type: str
```

```python
class air_sdk.types.OSImageManifestSpec
```

**Bases**: `air_sdk.types._OSImageManifestSpecRequired`

OS image manifest payload for `api.images.upload()` (no `image`).

```python
platforms: dict[str, OSImageManifestPlatform]
```

```python
capabilities: OSImageCapabilities
```

```python
os_template_partition: str | None
```

```python
class air_sdk.types.HistoryEntry
```

**Bases**: `typing.TypedDict`

A single history entry from a resource's nested `history` endpoint.

Read-only and immutable - returned by `list_history()` on simulations,
images, and marketplace demos. This is distinct from the legacy `History`
model returned by the deprecated flat `histories` endpoint.

```python
object_id: str
```

ID of the entity this entry is about (e.g. a simulation ID)

```python
model: str
```

Type of entity being tracked (e.g. 'simulation')

```python
created: datetime.datetime
```

When the entry was recorded

```python
actor: str
```

Email or identifier of the user who performed the action

```python
description: str
```

Human-readable description of what happened

```python
severity: str
```

Event severity. Values: 'INFO', 'ERROR'

```python
labels: list[str]
```

Backend-assigned labels (e.g. 'publishing'), used for filtering

```python
class air_sdk.types.HistoryFilters
```

**Bases**: `typing.TypedDict`

Distinct history filter values available for a single resource.

Returned by the nested `history-filters` endpoint on a resource (e.g. a
simulation, image, or marketplace demo). The values span all of that
resource's history and are intended to populate filter dropdowns.

```python
actors: list[str]
```

Distinct actor values present on the resource's history entries

```python
severities: list[str]
```

Distinct severity values (e.g. 'INFO', 'ERROR')

```python
labels: list[str]
```

Distinct label values (e.g. 'publishing')

```python
class air_sdk.types.SimRequiredResources
```

**Bases**: `typing.TypedDict`

Required resources for a simulation.

```python
cpu: int | float
```

```python
memory: int | float
```

```python
storage: int | float
```

```python
compute_hours: float
```

```python
air_sdk.types.is_typeddict(type_: Type[Any]) -> bool
```

```python
air_sdk.types.union_args_are_optional(args: Tuple[Union[Any, Any], ...]) -> bool
```

```python
air_sdk.types.is_union(type_: Type[Any]) -> bool
```

```python
air_sdk.types.is_optional_union(type_: Type[Any]) -> bool
```

```python
air_sdk.types.get_optional_arg(optional_type: Type[T | None]) -> Type[T]
```

```python
air_sdk.types.get_list_arg(list_type: Type[List[T]]) -> Type[T]
```

```python
air_sdk.types.is_typed_dict(expected_type: Type[Any]) -> bool
```

Determine if the `expected_type` provided is a subclass of TypedDict.

```python
air_sdk.types.type_check_typed_dict(
    value: Any,
    expected_type: Type[Any]
) -> bool
```

Perform type checking when the expected\_type is a subclass of TypedDict.

This currently does not work if the expected\_type is also a dataclass.

```python
_FORWARD_REF_EVALUATE_HAS_TYPE_PARAMS
```

```python
air_sdk.types._evaluate_forward_ref(ref: ForwardRef) -> Any
```

Resolve a `ForwardRef` in a way that works across Python versions.

Passing `recursive_guard` positionally (as older code did) raises
`TypeError` on Python 3.13, which surfaces to users as a spurious
`UserWarning` and silently skips type validation. Pass it by keyword
(valid on 3.10-3.13) and supply `type_params` only when the running
interpreter expects it (see `_FORWARD_REF_EVALUATE_HAS_TYPE_PARAMS`).

```python
air_sdk.types.type_check(
    value: Any,
    expected_type: Type[Any]
) -> bool
```

Recursively check if the value matches the expected type.