air_sdk.endpoints.history

View as Markdown

Classes

NameDescription
HistoryRepresents a history entry in the Air API.
HistoryEndpointAPIAPI for querying history entries.

Module Contents

class air_sdk.endpoints.history.History

Bases: air_sdk.air_model.AirModel

Represents a history entry in the Air API.

History entries track actions and events for Air resources (simulations, nodes, etc.). They are immutable and read-only - history is created automatically by the Air API.

History entries cannot be created, updated, or deleted via the SDK. They are automatically generated by the Air API.

object_id: str

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

model: str

Type of entity being tracked (e.g., ‘simulation’)

Timestamp when the history entry was created

actor: str

Email or identifier of the user who performed the action

description: str

Human-readable description of what happened

category: str

Category of the event. Values: ‘INFO’, ‘ERROR’

get_model_api() -> type[HistoryEndpointAPI]

Returns the respective AirModelAPI type for this model

refresh() -> None

Refresh the history entry.

History entries are read-only and created automatically by the Air API. They cannot be modified or refreshed.

Raises:

  • NotImplementedError – History entries are immutable and cannot be refreshed
class air_sdk.endpoints.history.HistoryEndpointAPI

Bases: air_sdk.endpoints.mixins.ListApiMixin[air_sdk.endpoints.history.History], air_sdk.air_model.BaseEndpointAPI[air_sdk.endpoints.history.History]

API for querying history entries.

History entries are read-only records of actions and events for Air resources. Use this endpoint to track changes and audit activity.

This endpoint only supports list() operations. History entries cannot be created, updated, or deleted via the API.

API_PATH: str
model: type[History]
list(
*,
model: str,
object_id: str | None = ...,
actor: str | None = ...,
category: str | None = ...,
search: str | None = ...,
ordering: str | None = ...,
limit: int | None = ...,
offset: int | None = ...

List history entries with optional filtering and pagination.

Parameters:

  • model – Entity type to get history for (required). Values: ‘simulation’
  • object_id – Filter by the ID of the entity being tracked (e.g., a specific simulation’s ID)
  • actor – Filter by actor email or identifier
  • category – Filter by event category. Values: ‘INFO’, ‘ERROR’
  • search – Search for substrings in actor or description fields
  • ordering – Order by field (prefix with ’-’ for descending). Available fields: actor, category, created, model, object_id
  • limit – Maximum number of results to return per page
  • offset – Number of results to skip (for pagination)

Yields:

History instances

Example:

>>> # List all simulation history
>>> for entry in api.histories.list(model='simulation'):
... print(entry.description)
>>>
>>> # Get history for a specific simulation
>>> for entry in api.histories.list(
... model='simulation',
... object_id='3dadd54d-583c-432e-9383-a2b0b1d7f551'
... ):
... print(f'{entry.created}: {entry.description}')
>>>
>>> # Filter by category
>>> errors = list(api.histories.list(model='simulation', category='ERROR'))
>>> print(f'Found {len(errors)} errors')
>>>
>>> # Filter by actor
>>> user_actions = list(api.histories.list(
... model='simulation',
... actor='user@nvidia.com'
... ))
>>> print(f'User performed {len(user_actions)} actions')
>>>
>>> # Search descriptions
>>> for entry in api.histories.list(model='simulation', search='started'):
... print(entry.description)
>>>
>>> # Order by creation time (newest first)
>>> for entry in api.histories.list(
... model='simulation',
... ordering='-created',
... limit=5
... ):
... print(f'{entry.created}: {entry.description}')
>>>
>>> # Pagination
>>> page_1 = list(api.histories.list(model='simulation', limit=10, offset=0))
>>> page_2 = list(api.histories.list(model='simulation', limit=10, offset=10))