# Asset

## class nominal.core.Asset(rid, name, description, properties, labels, created_at, is_archived)

Bases: `_DatasetScopeIngestMixin`, `HasRid`, `RefreshableGrpcMixin`[`Asset`]

A logical grouping of datasets, runs, events, and attachments.

Often a digital twin of a physical asset; it can also represent a shared concept.

### rid: str

### name: str

### description: str | None

### properties: NominalProperties

### labels: Sequence[str]

### created_at: IntegralNanosecondsUTC

### is_archived: bool

### property nominal_url: str

Returns a link to the page for this Asset in the Nominal app

### add_ardupilot_dataflash(data_scope_name, path, tags=None)

Add a Dataflash file to the dataset selected by `data_scope_name`.

This method behaves like [`nominal.core.Dataset.add_ardupilot_dataflash`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_ardupilot_dataflash "nominal.core.Dataset.add_ardupilot_dataflash"), except that the data scope’s
required tags are merged into `tags` before ingest (with user-provided tags taking precedence on key
collisions).

For file expectations and return value details, see
[`nominal.core.Dataset.add_ardupilot_dataflash`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_ardupilot_dataflash "nominal.core.Dataset.add_ardupilot_dataflash").

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.

Return type:
:   [*DatasetFile*](https://dev.nominal.io/python/ref/generated/nominal.core.DatasetFile.md#nominal.core.DatasetFile "nominal.core.dataset_file.DatasetFile")

### add_attachments(attachments)

Add attachments that have already been uploaded to this asset.

`attachments` can be [`Attachment`](https://dev.nominal.io/python/ref/generated/nominal.core.Attachment.md#nominal.core.Attachment "nominal.core.Attachment") instances, or attachment RIDs.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If adding the attachments fails.

### add_avro_stream(data_scope_name, path, *, timestamp_type=None, tags=None)

Upload an avro stream file to the dataset selected by `data_scope_name`.

This method behaves like [`nominal.core.Dataset.add_avro_stream`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_avro_stream "nominal.core.Dataset.add_avro_stream"), except that the data scope’s required
tags are merged into `tags` before ingest (with user-provided tags taking precedence on key collisions).
Tags in the avro records take precedence over both, so a scope tag whose key a record already sets is
not applied to that record’s data.

For schema requirements, argument semantics, and return value details, see
[`nominal.core.Dataset.add_avro_stream`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_avro_stream "nominal.core.Dataset.add_avro_stream").

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.

Return type:
:   [*DatasetFile*](https://dev.nominal.io/python/ref/generated/nominal.core.DatasetFile.md#nominal.core.DatasetFile "nominal.core.dataset_file.DatasetFile")

### add_containerized(data_scope_name, extractor, sources, *, arguments=None, tags=None, timestamp_column=None, timestamp_type=None)

Add data from proprietary formats using a pre-registered custom extractor.

This method behaves like [`nominal.core.Dataset.add_containerized`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_containerized "nominal.core.Dataset.add_containerized"), except that the data scope’s required
tags are merged into `tags` before ingest (with user-provided tags taking precedence on key collisions).

Pass both `timestamp_column` and `timestamp_type`, or neither; this wrapper enforces that before
delegating.

For extractor inputs, tagging semantics, timestamp metadata behavior, and return value details, see
[`nominal.core.Dataset.add_containerized`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_containerized "nominal.core.Dataset.add_containerized").

Raises:
:   - [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.
    - [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError "(in Python v3.15)") – If only one of `timestamp_column` and `timestamp_type` is given.

Return type:
:   [*IngestionJob*](https://dev.nominal.io/python/ref/generated/nominal.core.IngestionJob.md#nominal.core.IngestionJob "nominal.core.ingestion_job.IngestionJob")

### add_dataset(data_scope_name, dataset, *, series_tags=None)

Add a dataset to this asset.

Assets map “data_scope_name” (their name within the asset) to a Dataset (or dataset rid). The same type of
datasets should use the same data scope name across assets, since checklists and templates use data scope names
to reference datasets.

Parameters:
:   - **data_scope_name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

      logical name for the data scope within the asset
    - **dataset** ([*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset") *|* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

      dataset to add to the asset
    - **series_tags** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Key-value tags to pre-filter the dataset with before adding to the asset.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If adding the data scope fails.

### add_from_io(data_scope_name, data_stream, file_type, *, timestamp_column, timestamp_type, file_name=None, tag_columns=None, tags=None)

Append to the dataset selected by `data_scope_name` from a file-like object.

This method behaves like [`nominal.core.Dataset.add_from_io`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_from_io "nominal.core.Dataset.add_from_io"), except that the data scope’s required tags
are merged into `tags` before ingest (with user-provided tags taking precedence on key collisions).

For stream requirements, supported file types, argument semantics, and return value details, see
[`nominal.core.Dataset.add_from_io`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_from_io "nominal.core.Dataset.add_from_io").

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.

Return type:
:   [*DatasetFile*](https://dev.nominal.io/python/ref/generated/nominal.core.DatasetFile.md#nominal.core.DatasetFile "nominal.core.dataset_file.DatasetFile")

### add_journal_json(data_scope_name, path, *, channel=None, timestamp_column=None, timestamp_type=None)

Add a journald json file to the dataset selected by `data_scope_name`.

This method behaves like [`nominal.core.Dataset.add_journal_json`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_journal_json "nominal.core.Dataset.add_journal_json"), with one important difference: the
journal json ingest request has no field for tags, so a scope’s required tags cannot be applied to the
ingested logs. If the selected scope requires tags, this method raises [`RuntimeError`](https://docs.python.org/3/builtins/exceptions.html#RuntimeError "(in Python v3.15)") rather than
ingesting logs that would be missing them. The file can still be ingested on the dataset directly, if
its own contents already carry what the scope needs.

Pass both `timestamp_column` and `timestamp_type`, or neither; this wrapper enforces that before
delegating.

For file expectations, timestamp argument semantics, and return value details, see
[`nominal.core.Dataset.add_journal_json`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_journal_json "nominal.core.Dataset.add_journal_json").

Raises:
:   - [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.
    - [**RuntimeError**](https://docs.python.org/3/builtins/exceptions.html#RuntimeError "(in Python v3.15)") – If the data scope requires series tags.
    - [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError "(in Python v3.15)") – If only one of `timestamp_column` and `timestamp_type` is given.

Return type:
:   [*DatasetFile*](https://dev.nominal.io/python/ref/generated/nominal.core.DatasetFile.md#nominal.core.DatasetFile "nominal.core.dataset_file.DatasetFile")

### add_mcap(data_scope_name, path, *, include_topics=None, exclude_topics=None, tags=None, ignore_invalid_topics=None)

Add an MCAP file to the dataset selected by `data_scope_name`.

This method behaves like [`nominal.core.Dataset.add_mcap`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_mcap "nominal.core.Dataset.add_mcap"), except that the data scope’s required
tags are merged into `tags` before ingest (with user-provided tags taking precedence on key collisions).

For topic-filtering semantics and return value details, see
[`nominal.core.Dataset.add_mcap`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_mcap "nominal.core.Dataset.add_mcap").

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.

Return type:
:   [*DatasetFile*](https://dev.nominal.io/python/ref/generated/nominal.core.DatasetFile.md#nominal.core.DatasetFile "nominal.core.dataset_file.DatasetFile")

### add_tabular_data(data_scope_name, path, *, timestamp_column, timestamp_type, tag_columns=None, tags=None)

Append tabular data on-disk to the dataset selected by `data_scope_name`.

This method behaves like [`nominal.core.Dataset.add_tabular_data`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_tabular_data "nominal.core.Dataset.add_tabular_data"), except that the data scope’s required
tags are merged into `tags` before ingest (with user-provided tags taking precedence on key collisions).

For supported file types, argument semantics, and return value details, see
[`nominal.core.Dataset.add_tabular_data`](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset.add_tabular_data "nominal.core.Dataset.add_tabular_data").

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.

Return type:
:   [*DatasetFile*](https://dev.nominal.io/python/ref/generated/nominal.core.DatasetFile.md#nominal.core.DatasetFile "nominal.core.dataset_file.DatasetFile")

### add_video(data_scope_name, video)

Add a video to this asset.

Assets map “data_scope_name” (name within the asset for the data) to a Video (or a video rid). The same type of
videos (e.g., files from a given camera) should use the same data scope name across assets, since checklists and
templates use data scope names to reference videos.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If adding the data scope fails.

### archive()

Archive this asset.
Archived assets are not deleted, but are hidden from the UI.

> **Note**
>
> This does not update the instance in place; call [`refresh()`](https://dev.nominal.io/python/ref/generated/nominal.core.Asset.md#nominal.core.Asset.refresh "nominal.core.Asset.refresh") to see the change reflected.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If the archive request fails.

### create_event(name, type, start, duration=0, *, description=None, properties=None, labels=None)

Create an event associated with this Asset at a given point in time.

Parameters:
:   - **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

      Name of the event
    - **type** ([*EventType*](https://dev.nominal.io/python/ref/generated/nominal.core.EventType.md#nominal.core.EventType "nominal.core._event_types.EventType"))

      Verbosity level of the event.
    - **start** ([*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)"))

      Starting timestamp of the event
    - **duration** ([*timedelta*](https://docs.python.org/3/library/datetime.html#datetime.timedelta "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)"))

      Duration of the event, or 0 for an event without duration.
    - **description** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Optionally, a human readable description of the event to create
    - **properties** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)")*]* *|* *None*)

      String or numeric properties for the created event.
      Integers are stored as floats.
    - **labels** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Sequence of labels to use on the created event.

Returns:
:   The created event that is associated with the asset.

Raises:
:   [**TypeError**](https://docs.python.org/3/builtins/exceptions.html#TypeError "(in Python v3.15)") – If a property value is a boolean or is not a string, integer, or float.

Return type:
:   [*Event*](https://dev.nominal.io/python/ref/generated/nominal.core.Event.md#nominal.core.Event "nominal.core.event.Event")

### create_run(name, start, end, *, description=None, properties=None, labels=(), links=(), attachments=())

Create a run associated with this Asset for a given span of time.

Parameters:
:   - **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

      Name of the run.
    - **start** ([*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)"))

      Starting timestamp of the run.
    - **end** ([*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)") *|* *None*)

      Ending timestamp of the run, or None for an unbounded run.
    - **description** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Optionally, a human readable description of the run to create.
    - **properties** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)")*]* *|* *None*)

      String or numeric properties for the created run.
      Integers are stored as floats.
    - **labels** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]*)

      Sequence of labels to use on the created run.
    - **links** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* [*LinkDict*](https://dev.nominal.io/python/ref/generated/nominal.core.LinkDict.md#nominal.core.LinkDict "nominal.core._utils.api_tools.LinkDict")*]*)

      Link metadata to add to the created run.
    - **attachments** ([*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.15)")*[*[*Attachment*](https://dev.nominal.io/python/ref/generated/nominal.core.Attachment.md#nominal.core.Attachment "nominal.core.attachment.Attachment")*]* *|* [*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]*)

      Attachments to associate with the created run.

Returns:
:   Returns the created run

Raises:
:   [**TypeError**](https://docs.python.org/3/builtins/exceptions.html#TypeError "(in Python v3.15)") – If a property value is a boolean or is not a string, integer, or float.

Return type:
:   [*Run*](https://dev.nominal.io/python/ref/generated/nominal.core.Run.md#nominal.core.Run "nominal.core.run.Run")

### get_data_scope(data_scope_name)

Retrieve the dataset or video behind a data scope name.

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable data scope has this name.

Return type:
:   [*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset") | [*Video*](https://dev.nominal.io/python/ref/generated/nominal.core.Video.md#nominal.core.Video "nominal.core.video.Video")

### get_dataset(data_scope_name)

Retrieve a dataset by data scope name.

Parameters:
:   **data_scope_name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

    Name of the asset data scope to resolve.

Returns:
:   Dataset associated with the data scope name.

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable dataset has this data scope name.

Return type:
:   [*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset")

### get_or_create_dataset(data_scope_name, *, name=None, description=None, labels=(), properties=None, prefix_tree_delimiter=None, series_tags=None)

Retrieve a dataset by data scope name, or create a new one if it does not exist.

Parameters:
:   - **data_scope_name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

      Datascope name to use when looking up or adding a dataset to an asset.
    - **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Name of the dataset to create, if one is not found.
    - **description** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Human readable description of the dataset to create, if one is not found.
    - **labels** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]*)

      Labels of the dataset to create, if one is not found.
    - **properties** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)")*]* *|* *None*)

      String or numeric properties for a newly created dataset.
      Integers are stored as floats.
    - **prefix_tree_delimiter** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      The prefix tree delimiter to use with the created dataset, if one is not found.
    - **series_tags** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Tags to filter the created dataset by in the datascope, if one is not found.

Returns:
:   The retrieved or created dataset.

Raises:
:   - [**TypeError**](https://docs.python.org/3/builtins/exceptions.html#TypeError "(in Python v3.15)") – If a property value is a boolean or is not a string, integer, or float.
    - [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If a dataset data scope with this name exists but its dataset is not readable.
    - [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError "(in Python v3.15)") – If a dataset data scope with this name exists with different series tags, or a data scope
      of another type has this name.

Return type:
:   [*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset")

### get_or_create_video(data_scope_name, *, name=None, description=None, labels=(), properties=None)

Retrieve a video by data scope name, or create a new one if it does not exist.

Raises:
:   - [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If a video data scope with this name exists but its video is not readable.
    - [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError "(in Python v3.15)") – If a data scope of another type has this name.

Return type:
:   [*Video*](https://dev.nominal.io/python/ref/generated/nominal.core.Video.md#nominal.core.Video "nominal.core.video.Video")

### get_video(data_scope_name)

Retrieve a video by data scope name.

Parameters:
:   **data_scope_name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"))

    Name of the asset data scope to resolve.

Returns:
:   Video associated with the data scope name.

Raises:
:   [**NominalNotFoundError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalNotFoundError.md#nominal.exceptions.NominalNotFoundError "nominal.exceptions.NominalNotFoundError") – If no readable video has this data scope name.

Return type:
:   [*Video*](https://dev.nominal.io/python/ref/generated/nominal.core.Video.md#nominal.core.Video "nominal.core.video.Video")

### list_attachments()

List the attachments associated with this asset.

Attachments that the caller cannot access are left out.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*Attachment*](https://dev.nominal.io/python/ref/generated/nominal.core.Attachment.md#nominal.core.Attachment "nominal.core.attachment.Attachment")]

### list_data_scopes()

List scopes associated with this asset.

Returns:
:   (data_scope_name, scope) pairs, where scope can be a dataset or video. Data scopes
    whose resource is missing or not readable are left out.

    Spatials are not included: they live in [`nominal.experimental.spatial`](https://dev.nominal.io/python/ref/experimental/spatial.md#module-nominal.experimental.spatial "nominal.experimental.spatial"), whose
    `list_spatials_in_asset` lists them.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")[[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset") | [*Video*](https://dev.nominal.io/python/ref/generated/nominal.core.Video.md#nominal.core.Video "nominal.core.video.Video")]]

### list_datasets()

List the datasets associated with this asset.

Returns:
:   (data_scope_name, dataset) pairs. Data scopes whose dataset is missing or not readable are left out.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")[[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset")]]

### list_runs()

List all runs associated with this Asset.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If a run search request fails.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*Run*](https://dev.nominal.io/python/ref/generated/nominal.core.Run.md#nominal.core.Run "nominal.core.run.Run")]

### list_streaming_checklists()

List all Streaming Checklists associated with this Asset. See
nominal.core.client.list_streaming_checklists for details.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")]

### list_videos()

List the videos associated with this asset.

Returns:
:   (data_scope_name, video) pairs. Data scopes whose video is missing or not readable are left out.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")[[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)"), [*Video*](https://dev.nominal.io/python/ref/generated/nominal.core.Video.md#nominal.core.Video "nominal.core.video.Video")]]

### promote()

Promote this asset to be a standard, searchable, and displayable asset.

This method is only useful for assets that were created implicitly from creating a run directly on a dataset.
Nothing will happen from calling this method (aside from a logged warning) if called on a non-staged
asset (e.g. an asset created by create_asset, or an asset that’s already been promoted).

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If retrieving or promoting the asset fails.

Return type:
:   [*Self*](https://docs.python.org/3/library/typing.html#typing.Self "(in Python v3.15)")

### refresh()

Return type:
:   [*Self*](https://docs.python.org/3/library/typing.html#typing.Self "(in Python v3.15)")

### remove_attachments(attachments)

Remove attachments from this asset.
Does not remove the attachments from Nominal.

`attachments` can be [`Attachment`](https://dev.nominal.io/python/ref/generated/nominal.core.Attachment.md#nominal.core.Attachment "nominal.core.Attachment") instances, or attachment RIDs.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If removing the attachments fails.

### remove_data_scopes(*, names=None, scopes=None)

Remove data scopes from this asset.

Parameters:
:   - **names** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Names of datascopes to remove
    - **scopes** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*Dataset*](https://dev.nominal.io/python/ref/generated/nominal.core.Dataset.md#nominal.core.Dataset "nominal.core.dataset.Dataset") *|* [*Video*](https://dev.nominal.io/python/ref/generated/nominal.core.Video.md#nominal.core.Video "nominal.core.video.Video") *|* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Rids or instances of scope types (dataset, video) to remove.
      A spatial can be removed by passing its rid.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If retrieving or updating the asset’s data scopes fails.

### search_data_reviews(runs=None, *, archive_status=ArchiveStatusFilter.NOT_ARCHIVED)

Search for data reviews associated with this Asset. See nominal.core.client.search_data_reviews
for details.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*DataReview*](https://dev.nominal.io/python/ref/generated/nominal.core.DataReview.md#nominal.core.DataReview "nominal.core.data_review.DataReview")]

### search_events(*, search_text=None, after=None, before=None, labels=None, properties=None, created_by_rid=None, workbook_rid=None, data_review_rid=None, assignee_rid=None, event_type=None, priority=None, origin_types=None, archive_status=ArchiveStatusFilter.NOT_ARCHIVED)

Search for events associated with this Asset. See nominal.core.event._search_events for details.

Parameters:
:   - **search_text** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Searches for a string in the event’s metadata.
    - **after** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)") *|* *None*)

      Filters to end times after this time, exclusive.
    - **before** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)") *|* *None*)

      Filters to start times before this time, exclusive.
    - **labels** ([*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Labels that must all be present on an event.
    - **properties** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)")*]* *|* *None*)

      Property equalities that must all match. Strings and numbers match their
      respective types. Integer values are converted to floats.
    - **created_by_rid** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Search for events created by this author.
    - **workbook_rid** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Search for events on this workbook.
    - **data_review_rid** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Search for events from this data review.
    - **assignee_rid** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Search for events assigned to this user.
    - **event_type** ([*EventType*](https://dev.nominal.io/python/ref/generated/nominal.core.EventType.md#nominal.core.EventType "nominal.core._event_types.EventType") *|* *None*)

      Search for events of this verbosity level.
    - **priority** ([*Priority*](https://dev.nominal.io/python/ref/generated/nominal.core.Priority.md#nominal.core.Priority "nominal.core._checklist_types.Priority") *|* *None*)

      Filter events by disposition priority. None leaves priority unrestricted.
    - **origin_types** ([*Iterable*](https://docs.python.org/3/library/typing.html#typing.Iterable "(in Python v3.15)")*[*[*SearchEventOriginType*](https://dev.nominal.io/python/ref/generated/nominal.core.SearchEventOriginType.md#nominal.core.SearchEventOriginType "nominal.core._event_types.SearchEventOriginType")*]* *|* *None*)

      Search for events created by these origin types.
    - **archive_status** ([*ArchiveStatusFilter*](https://dev.nominal.io/python/ref/generated/nominal.core.ArchiveStatusFilter.md#nominal.core.ArchiveStatusFilter "nominal.core._utils.query_tools.ArchiveStatusFilter"))

      Filter by archive status. Defaults to NOT_ARCHIVED.

Raises:
:   [**TypeError**](https://docs.python.org/3/builtins/exceptions.html#TypeError "(in Python v3.15)") – If a property value is a boolean or is not a string, integer, or float.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*Event*](https://dev.nominal.io/python/ref/generated/nominal.core.Event.md#nominal.core.Event "nominal.core.event.Event")]

### search_workbooks(*, exact_match=None, search_text=None, labels=None, properties=None, created_by_rid=None, run_rid=None, include_drafts=False, archive_status=ArchiveStatusFilter.NOT_ARCHIVED)

Search for workbooks associated with this Asset.

See `nominal.core.NominalClient.search_workbooks` for details.

Return type:
:   [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")[[*Workbook*](https://dev.nominal.io/python/ref/generated/nominal.core.Workbook.md#nominal.core.Workbook "nominal.core.workbook.Workbook")]

### unarchive()

Unarchive this asset, allowing it to be viewed in the UI.

> **Note**
>
> This does not update the instance in place; call [`refresh()`](https://dev.nominal.io/python/ref/generated/nominal.core.Asset.md#nominal.core.Asset.refresh "nominal.core.Asset.refresh") to see the change reflected.

Raises:
:   [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If the unarchive request fails.

### update(*, name=None, description=None, properties=None, labels=None, links=None)

Replace asset metadata.
Updates the current instance, and returns it.
Only the metadata passed in will be replaced, the rest will remain untouched.

Links can be URLs or tuples of (URL, name).

Parameters:
:   - **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Replacement name.
    - **description** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Replacement description.
    - **properties** ([*Mapping*](https://docs.python.org/3/library/typing.html#typing.Mapping "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* [*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)")*]* *|* *None*)

      String or numeric properties. Integers are stored as floats.
      None leaves properties unchanged; an empty mapping clears them.
    - **labels** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* *None*)

      Replacement labels.
    - **links** ([*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]* *|* [*Sequence*](https://docs.python.org/3/library/typing.html#typing.Sequence "(in Python v3.15)")*[*[*tuple*](https://docs.python.org/3/builtins/stdtypes.html#tuple "(in Python v3.15)")*[*[*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*,* [*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)")*]**]* *|* *None*)

      Replacement links.

Return type:
:   [*Self*](https://docs.python.org/3/library/typing.html#typing.Self "(in Python v3.15)")

> **Note**
>
> This replaces the metadata rather than appending it. To append to labels or properties, merge them before
> calling this method. E.g.:
>
> ```python
> new_labels = ["new-label-a", "new-label-b"]
> for old_label in asset.labels:
>     new_labels.append(old_label)
> asset = asset.update(labels=new_labels)
> ```

Raises:
:   - [**TypeError**](https://docs.python.org/3/builtins/exceptions.html#TypeError "(in Python v3.15)") – If a property value is a boolean or is not a string, integer, or float.
    - [**NominalError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalError.md#nominal.exceptions.NominalError "nominal.exceptions.NominalError") – If the update request fails.

Return type:
:   [*Self*](https://docs.python.org/3/library/typing.html#typing.Self "(in Python v3.15)")
