Asset service#

An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised of some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API endpoints allow for CRUD operations on asset objects.

OpenAPI file: AssetService.json

Endpoints#

Create asset#

POST /scout/v1/asset

Body

title string required

​

datasetRid string (RID)

Dataset to back this asset. Must be readable and in the asset’s workspace. Composition datasets attach directly and must not already back another asset. Raw datasets are wrapped in a new composition dataset; the source remains unchanged. The response datasetRid identifies the backing dataset, which may differ from this RID. Mutually exclusive with nonempty dataScopes. Omit to use legacy scope-based creation.

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

​

links array of Link

​

Fields of Link
title string

​

url string required

​

dataScopes array of CreateAssetDataScope

The data scopes associated with the asset.

Fields of CreateAssetDataScope
dataScopeName string required

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource required

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

attachments array of string (RID)

​

types array of string (RID)

Types to attach to the asset. Empty attaches none. At most 10 types.

workspace string (RID)

The workspace in which to create the asset. If not provided, the asset will be created in the default workspace for the user’s organization, if the default workspace for the organization is configured. All data scopes, attachments, and asset types must be in the same workspace.

Response

rid string (RID)

​

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

Fields of Link
title string

​

url string

​

dataScopes array of DataScope

The data scopes associated with the asset.

Fields of DataScope
dataScopeName string

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64)

​

nanos integer (int64)

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean

Auto created assets are considered staged by default.

isArchived boolean

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "title": "<title>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset",
    headers={"Authorization": "Bearer <api key>"},
    json={"title": "<title>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset",
    headers={"Authorization": "Bearer <api key>"},
    json={"title": "<title>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset",
            headers={"Authorization": "Bearer <api key>"},
            json={"title": "<title>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<asset rid>",
  "title": "<title>",
  "description": "<description>",
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "dataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "createdBy": "<created by>",
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "attachments": [
    "<attachment rid>"
  ],
  "types": [
    "<type rid>"
  ],
  "isStaged": true,
  "isArchived": true,
  "datasetRid": "<dataset rid>"
}

Update asset#

PUT /scout/v1/asset/{rid}

Path parameters

rid string (RID) required

​

Body

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

​

links array of Link

​

Fields of Link
title string

​

url string required

​

dataScopes array of CreateAssetDataScope

The data scopes for the asset. This will replace all existing data scopes with the scopes specified.

Fields of CreateAssetDataScope
dataScopeName string required

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource required

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

types array of string (RID)

Types attached to the asset. Absent leaves memberships unchanged. Present, including empty, replaces them. At most 10 types.

isStaged boolean

​

Response

rid string (RID)

​

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

Fields of Link
title string

​

url string

​

dataScopes array of DataScope

The data scopes associated with the asset.

Fields of DataScope
dataScopeName string

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64)

​

nanos integer (int64)

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean

Auto created assets are considered staged by default.

isArchived boolean

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

Request

curl -X PUT "https://api.gov.nominal.io/api/scout/v1/asset/<rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "title": "<title>",
  "description": "<description>",
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "url": "<url>"
    }
  ],
  "dataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      }
    }
  ],
  "types": [
    "<type rid>"
  ],
  "isStaged": true
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/scout/v1/asset/<rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "properties": {"<key>": "<property value>"},
        "typedProperties": {
            "<key>": {"type": "stringValue", "stringValue": "<property value>"},
        },
        "labels": ["<label>"],
        "links": [{"url": "<url>"}],
        "dataScopes": [
            {
                "dataScopeName": "<data source ref name>",
                "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
            },
        ],
        "types": ["<type rid>"],
        "isStaged": True,
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v1/asset/<rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "properties": {"<key>": "<property value>"},
        "typedProperties": {
            "<key>": {"type": "stringValue", "stringValue": "<property value>"},
        },
        "labels": ["<label>"],
        "links": [{"url": "<url>"}],
        "dataScopes": [
            {
                "dataScopeName": "<data source ref name>",
                "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
            },
        ],
        "types": ["<type rid>"],
        "isStaged": True,
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.put(
            "https://api.gov.nominal.io/api/scout/v1/asset/<rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "title": "<title>",
                "description": "<description>",
                "properties": {"<key>": "<property value>"},
                "typedProperties": {
                    "<key>": {"type": "stringValue", "stringValue": "<property value>"},
                },
                "labels": ["<label>"],
                "links": [{"url": "<url>"}],
                "dataScopes": [
                    {
                        "dataScopeName": "<data source ref name>",
                        "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
                    },
                ],
                "types": ["<type rid>"],
                "isStaged": True,
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<asset rid>",
  "title": "<title>",
  "description": "<description>",
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "dataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "createdBy": "<created by>",
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "attachments": [
    "<attachment rid>"
  ],
  "types": [
    "<type rid>"
  ],
  "isStaged": true,
  "isArchived": true,
  "datasetRid": "<dataset rid>"
}

Add data scopes to asset#

POST /scout/v1/asset/{assetRid}/data-sources

Adds data scopes to an asset.

Throws if the asset already has data scopes with data scope names matching those in the request.

Path parameters

assetRid string (RID) required

​

Body

dataScopes array of CreateAssetDataScope

The data scopes to add to the asset. Throws if any existing data scopes have data scope names that conflict with the data scope names in the request.

Fields of CreateAssetDataScope
dataScopeName string required

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource required

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

Response

rid string (RID)

​

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

Fields of Link
title string

​

url string

​

dataScopes array of DataScope

The data scopes associated with the asset.

Fields of DataScope
dataScopeName string

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64)

​

nanos integer (int64)

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean

Auto created assets are considered staged by default.

isArchived boolean

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset/<asset rid>/data-sources" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "dataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      }
    }
  ]
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/<asset rid>/data-sources",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "dataScopes": [
            {
                "dataScopeName": "<data source ref name>",
                "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
            },
        ],
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/<asset rid>/data-sources",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "dataScopes": [
            {
                "dataScopeName": "<data source ref name>",
                "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
            },
        ],
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset/<asset rid>/data-sources",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "dataScopes": [
                    {
                        "dataScopeName": "<data source ref name>",
                        "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
                    },
                ],
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<asset rid>",
  "title": "<title>",
  "description": "<description>",
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "dataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "createdBy": "<created by>",
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "attachments": [
    "<attachment rid>"
  ],
  "types": [
    "<type rid>"
  ],
  "isStaged": true,
  "isArchived": true,
  "datasetRid": "<dataset rid>"
}

Get assets#

POST /scout/v1/asset/multiple

Body

The body is an array of string (RID).

Response

The body is a map of AssetRid to Asset.

Fields of Asset
rid string (RID)

​

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

Fields of Link
title string

​

url string

​

dataScopes array of DataScope

The data scopes associated with the asset.

Fields of DataScope
dataScopeName string

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64)

​

nanos integer (int64)

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean

Auto created assets are considered staged by default.

isArchived boolean

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset/multiple" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '[
  "<asset rid>"
]'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/multiple",
    headers={"Authorization": "Bearer <api key>"},
    json=["<asset rid>"],
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/multiple",
    headers={"Authorization": "Bearer <api key>"},
    json=["<asset rid>"],
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset/multiple",
            headers={"Authorization": "Bearer <api key>"},
            json=["<asset rid>"],
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "<key>": {
    "rid": "<asset rid>",
    "title": "<title>",
    "description": "<description>",
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "links": [
      {
        "title": "<title>",
        "url": "<url>"
      }
    ],
    "dataScopes": [
      {
        "dataScopeName": "<data source ref name>",
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    ],
    "createdBy": "<created by>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "attachments": [
      "<attachment rid>"
    ],
    "types": [
      "<type rid>"
    ],
    "isStaged": true,
    "isArchived": true,
    "datasetRid": "<dataset rid>"
  }
}

Get assets by data source#

POST /scout/v1/asset/by-data-source/{dataSourceRid}

Returns all assets with given data source as a data scope.

Path parameters

dataSourceRid string (RID) required

​

Response

The body is an array of Asset.

Fields of Asset
rid string (RID)

​

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

Fields of Link
title string

​

url string

​

dataScopes array of DataScope

The data scopes associated with the asset.

Fields of DataScope
dataScopeName string

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64)

​

nanos integer (int64)

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean

Auto created assets are considered staged by default.

isArchived boolean

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset/by-data-source/<data source rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/by-data-source/<data source rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/by-data-source/<data source rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset/by-data-source/<data source rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

[
  {
    "rid": "<asset rid>",
    "title": "<title>",
    "description": "<description>",
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "links": [
      {
        "title": "<title>",
        "url": "<url>"
      }
    ],
    "dataScopes": [
      {
        "dataScopeName": "<data source ref name>",
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    ],
    "createdBy": "<created by>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "attachments": [
      "<attachment rid>"
    ],
    "types": [
      "<type rid>"
    ],
    "isStaged": true,
    "isArchived": true,
    "datasetRid": "<dataset rid>"
  }
]

Archive#

POST /scout/v1/archive/{rid}

Path parameters

rid string (RID) required

​

Query parameters

includeLinkedWorkbooks boolean

If true, all workbooks that are linked to the asset and associated runs will be archived as well. Defaults to false.

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/archive/<rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/archive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/archive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/archive/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Unarchive#

POST /scout/v1/unarchive/{rid}

Path parameters

rid string (RID) required

​

Query parameters

includeLinkedWorkbooks boolean

If true, all auto-archived workbooks that are linked to the asset and associated runs will be unarchived as well. Defaults to false.

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/unarchive/<rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/unarchive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/unarchive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/unarchive/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Search assets#

POST /scout/v1/search-assets

Body

sort AssetSortOptions required

​

Fields of AssetSortOptions
isDescending boolean required

​

field AssetSortField deprecated

Deprecated: use SortKey with SortField union type instead

Values of AssetSortField
NAME

​

CREATED_AT

​

MOST_RECENT_RUN_START

​

sortKey SortKey

Field to sort by. Includes both field and property-based sorting. Must be supplied if field is not provided separately.

Set type to "field".

field AssetSortField

​

Set type to "property".

property SortProperty

​

Fields of SortProperty
name string required

​

Set type to "numericProperty".

numericProperty SortProperty

Sort by a numeric property value. String-valued and missing properties are null and always sort last.

pageSize integer

Page sizes greater than 10_000 will be rejected. Default pageSize is 100.

nextPageToken string

​

query SearchAssetsQuery required

​

Set type to "searchText".

searchText string

​

Set type to "exactSubstring".

exactSubstring string

An case-insensitive substring match of the title or description of the asset.

Set type to "label".

label string deprecated

Deprecated: use labels instead

Set type to "labels".

labels LabelsFilter

​

Fields of LabelsFilter
operator SetOperator required

​

Values of SetOperator
AND

​

OR

​

labels array of string

​

Set type to "property".

property Property deprecated

Deprecated: use properties

Fields of Property
name string required

​

value string required

​

Set type to "propertyKey".

propertyKey string

Matches assets that have a property with this key, regardless of value.

Set type to "properties".

properties PropertiesFilter

​

Fields of PropertiesFilter
name string required

​

values array of string

​

Set type to "numericProperty".

numericProperty NumericPropertyPredicate

Matches assets using a numeric property comparison.

Fields of NumericPropertyPredicate
name string required

​

value number required

​

operator PropertyComparisonOperator required

​

Values of PropertyComparisonOperator
EQ

​

NEQ

​

GT

​

GTE

​

LT

​

LTE

​

Set type to "numericPropertyRange".

numericPropertyRange NumericPropertyRangePredicate

Matches assets using an inclusive numeric property range.

Fields of NumericPropertyRangePredicate
name string required

​

min number

​

max number

​

operator NumericPropertyRangeOperator required

​

Values of NumericPropertyRangeOperator
BETWEEN

​

NOT_BETWEEN

​

Set type to "typeRid".

typeRid string (RID) deprecated

Deprecated: use assetTypes

Set type to "assetTypes".

assetTypes AssetTypesFilter

​

Fields of AssetTypesFilter
assetTypes array of string (RID)

​

Set type to "isStaged".

isStaged boolean deprecated

Deprecated: staged assets are no longer returned in the search endpoint

Set type to "archived".

archived boolean

​

Set type to "and".

and array of SearchAssetsQuery

​

Set type to "or".

or array of SearchAssetsQuery

​

Set type to "not".

not SearchAssetsQuery

​

Set type to "workspace".

workspace string (RID)

​

archivedStatuses array of ArchivedStatus

Default search status is NOT_ARCHIVED if none are provided. Allows for including archived assets in search.

Values of ArchivedStatus
NOT_ARCHIVED

​

ARCHIVED

​

includeMatchCount boolean

When true, the response populates totalCount with the number of assets matching the query. Defaults to false. Computing the count is an additional query whose cost grows with the size of the matching set, so only set this when the count is needed.

Response

results array of Asset

​

Fields of Asset
rid string (RID)

​

title string

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

Fields of Link
title string

​

url string

​

dataScopes array of DataScope

The data scopes associated with the asset.

Fields of DataScope
dataScopeName string

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource

​

Set type to "dataset".

dataset string (RID)

​

Set type to "connection".

connection string (RID)

​

Set type to "logSet".

logSet string (RID)

​

Set type to "video".

video string (RID)

​

Set type to "spatial".

spatial string (RID)

​

offset Duration

​

Fields of Duration
seconds integer (int64)

​

nanos integer (int64)

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean

Auto created assets are considered staged by default.

isArchived boolean

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

nextPageToken string

​

totalCount integer

The number of assets matching the query, workspace, and archived filters. Present only when includeMatchCount was set to true on the request.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/search-assets" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "sort": {
    "isDescending": true
  },
  "query": {
    "type": "searchText",
    "searchText": "<search text>"
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/search-assets",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "query": {"type": "searchText", "searchText": "<search text>"},
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/search-assets",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "query": {"type": "searchText", "searchText": "<search text>"},
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/search-assets",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "sort": {"isDescending": True},
                "query": {"type": "searchText", "searchText": "<search text>"},
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "rid": "<asset rid>",
      "title": "<title>",
      "description": "<description>",
      "properties": {
        "<key>": "<property value>"
      },
      "typedProperties": {
        "<key>": {
          "type": "stringValue",
          "stringValue": "<property value>"
        }
      },
      "labels": [
        "<label>"
      ],
      "links": [
        {
          "title": "<title>",
          "url": "<url>"
        }
      ],
      "dataScopes": [
        {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      ],
      "createdBy": "<created by>",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "attachments": [
        "<attachment rid>"
      ],
      "types": [
        "<type rid>"
      ],
      "isStaged": true,
      "isArchived": true,
      "datasetRid": "<dataset rid>"
    }
  ],
  "nextPageToken": "<token>",
  "totalCount": 1
}

Batch edit asset metadata#

POST /scout/v1/asset/metadata/batch-edit

Batch edits metadata across multiple assets. Supports rename/merge for labels and properties. If more than 1000 assets are targeted, this endpoint will throw a 400.

Body

assetSearchQuery SearchAssetsQuery

Additional search query to filter which assets are targeted by the edit. Source labels/properties from the metadata change are automatically included as filters.

Set type to "searchText".

searchText string

​

Set type to "exactSubstring".

exactSubstring string

An case-insensitive substring match of the title or description of the asset.

Set type to "label".

label string deprecated

Deprecated: use labels instead

Set type to "labels".

labels LabelsFilter

​

Fields of LabelsFilter
operator SetOperator required

​

Values of SetOperator
AND

​

OR

​

labels array of string

​

Set type to "property".

property Property deprecated

Deprecated: use properties

Fields of Property
name string required

​

value string required

​

Set type to "propertyKey".

propertyKey string

Matches assets that have a property with this key, regardless of value.

Set type to "properties".

properties PropertiesFilter

​

Fields of PropertiesFilter
name string required

​

values array of string

​

Set type to "numericProperty".

numericProperty NumericPropertyPredicate

Matches assets using a numeric property comparison.

Fields of NumericPropertyPredicate
name string required

​

value number required

​

operator PropertyComparisonOperator required

​

Values of PropertyComparisonOperator
EQ

​

NEQ

​

GT

​

GTE

​

LT

​

LTE

​

Set type to "numericPropertyRange".

numericPropertyRange NumericPropertyRangePredicate

Matches assets using an inclusive numeric property range.

Fields of NumericPropertyRangePredicate
name string required

​

min number

​

max number

​

operator NumericPropertyRangeOperator required

​

Values of NumericPropertyRangeOperator
BETWEEN

​

NOT_BETWEEN

​

Set type to "typeRid".

typeRid string (RID) deprecated

Deprecated: use assetTypes

Set type to "assetTypes".

assetTypes AssetTypesFilter

​

Fields of AssetTypesFilter
assetTypes array of string (RID)

​

Set type to "isStaged".

isStaged boolean deprecated

Deprecated: staged assets are no longer returned in the search endpoint

Set type to "archived".

archived boolean

​

Set type to "and".

and array of SearchAssetsQuery

​

Set type to "or".

or array of SearchAssetsQuery

​

Set type to "not".

not SearchAssetsQuery

​

Set type to "workspace".

workspace string (RID)

​

operation MetadataChange required

​

Set type to "renameLabel".

renameLabel RenameLabel

​

Fields of RenameLabel
source array of string

​

target string required

​

Set type to "renamePropertyKey".

renamePropertyKey RenamePropertyKey

​

Fields of RenamePropertyKey
source array of string

​

target string required

​

onConflict ConflictBehavior required

​

Set type to "skip".

skip SkipOnConflict

​

Set type to "overwrite".

overwrite OverwriteOnConflict

​

Fields of OverwriteOnConflict
priority array of string

​

Set type to "mergePropertyValuesForKey".

mergePropertyValuesForKey MergePropertyValuesForKey

​

Fields of MergePropertyValuesForKey
key string required

​

source array of string

​

target string required

​

Response

modifiedAssetRids array of string (RID)

RIDs for assets that were modified by the batch edit.

conflictingAssetRids array of string (RID)

RIDs for assets that matched the source filter but already had the target property key and were skipped (SkipOnConflict behavior). Empty for operations without conflict semantics or when using OverwriteOnConflict.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset/metadata/batch-edit" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "operation": {
    "type": "renameLabel",
    "renameLabel": {
      "target": "<label>"
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/metadata/batch-edit",
    headers={"Authorization": "Bearer <api key>"},
    json={"operation": {"type": "renameLabel", "renameLabel": {"target": "<label>"}}},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/metadata/batch-edit",
    headers={"Authorization": "Bearer <api key>"},
    json={"operation": {"type": "renameLabel", "renameLabel": {"target": "<label>"}}},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset/metadata/batch-edit",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "operation": {
                    "type": "renameLabel",
                    "renameLabel": {"target": "<label>"},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "modifiedAssetRids": [
    "<asset rid>"
  ],
  "conflictingAssetRids": [
    "<asset rid>"
  ]
}

Search types#

POST /scout/v1/search-types

Body

sort TypeSortOptions required

​

Fields of TypeSortOptions
isDescending boolean required

​

field TypeSortField required

​

Values of TypeSortField
CREATED_AT

​

pageSize integer

Page sizes greater than 10_000 will be rejected. Default pageSize is 100.

nextPageToken string

​

query SearchTypesQuery required

​

Set type to "searchText".

searchText string

​

Set type to "property".

property string

​

Set type to "and".

and array of SearchTypesQuery

​

Set type to "or".

or array of SearchTypesQuery

​

Set type to "workspace".

workspace string (RID)

​

archivedStatuses array of ArchivedStatus deprecated

Deprecated: Use the isArchived search query option instead. If no filter is applied and this field is empty, the default search status is NOT_ARCHIVED.

Values of ArchivedStatus
NOT_ARCHIVED

​

ARCHIVED

​

Response

results array of Type

​

Fields of Type
rid string (RID)

​

name string

​

description string

​

propertyConfigs map of PropertyName to PropertyConfig

​

Fields of PropertyConfig
requirement PropertyRequirement

​

Values of PropertyRequirement
REQUIRED

​

SUGGESTED

​

valueType PropertyValueType

​

Values of PropertyValueType
STRING

​

NUMBER

​

createdAt string (date-time)

​

iconName string

The name of the icon to display for the type. This name maps to a Lucide icon in the frontend.

primaryKey string

The property that identifies an asset of this type. It is a required nonempty string and is not repeated in propertyConfigs.

isArchived boolean

​

dataRequirements DataRequirements

Requirements on the data of assets of this type, absent if none were ever set. Checked when the type is attached to an asset; later data or definition changes are not rechecked.

Set type to "series".

series SeriesRequirements

​

Fields of SeriesRequirements
series array of SeriesRequirement

At most 200, with unique names.

Fields of SeriesRequirement
name string

A channel name of 1 to 200 characters, matched exactly.

type SeriesType

​

Values of SeriesType
NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

nextPageToken string

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/search-types" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "sort": {
    "isDescending": true,
    "field": "CREATED_AT"
  },
  "query": {
    "type": "searchText",
    "searchText": "<search text>"
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/search-types",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True, "field": "CREATED_AT"},
        "query": {"type": "searchText", "searchText": "<search text>"},
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/search-types",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True, "field": "CREATED_AT"},
        "query": {"type": "searchText", "searchText": "<search text>"},
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/search-types",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "sort": {"isDescending": True, "field": "CREATED_AT"},
                "query": {"type": "searchText", "searchText": "<search text>"},
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "rid": "<type rid>",
      "name": "<name>",
      "description": "<description>",
      "propertyConfigs": {
        "<key>": {
          "requirement": "REQUIRED",
          "valueType": "STRING"
        }
      },
      "createdAt": "2026-01-01T00:00:00Z",
      "iconName": "<icon name>",
      "primaryKey": "<property name>",
      "isArchived": true,
      "dataRequirements": {
        "type": "series",
        "series": {
          "series": [
            {
              "name": "<channel>",
              "type": "NUMERIC"
            }
          ]
        }
      }
    }
  ],
  "nextPageToken": "<token>"
}

Update asset attachments#

POST /scout/v1/asset/{rid}/attachments

Update the attachments associated with an asset.

Path parameters

rid string (RID) required

​

Body

attachmentsToAdd array of string (RID)

​

attachmentsToRemove array of string (RID)

​

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/attachments" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "attachmentsToAdd": [
    "<attachment rid>"
  ],
  "attachmentsToRemove": [
    "<attachment rid>"
  ]
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/attachments",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "attachmentsToAdd": ["<attachment rid>"],
        "attachmentsToRemove": ["<attachment rid>"],
    },
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/attachments",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "attachmentsToAdd": ["<attachment rid>"],
        "attachmentsToRemove": ["<attachment rid>"],
    },
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/attachments",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "attachmentsToAdd": ["<attachment rid>"],
                "attachmentsToRemove": ["<attachment rid>"],
            },
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Update asset ref names#

POST /scout/v1/asset/{rid}/ref-names

Update the ref names for the data scopes on the asset. This update will also be applied on all associated workbooks.

Path parameters

rid string (RID) required

​

Body

dataScopeRefNameUpdates map of DataSourceRefName to string

​

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/ref-names" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "dataScopeRefNameUpdates": {
    "<key>": "<data source ref name>"
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/ref-names",
    headers={"Authorization": "Bearer <api key>"},
    json={"dataScopeRefNameUpdates": {"<key>": "<data source ref name>"}},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/ref-names",
    headers={"Authorization": "Bearer <api key>"},
    json={"dataScopeRefNameUpdates": {"<key>": "<data source ref name>"}},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/asset/<rid>/ref-names",
            headers={"Authorization": "Bearer <api key>"},
            json={"dataScopeRefNameUpdates": {"<key>": "<data source ref name>"}},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Create type#

POST /scout/v1/type

Creates a new type.

Body

name string required

​

primaryKey string required

​

propertyConfigs map of PropertyName to PropertyConfig

​

Fields of PropertyConfig
requirement PropertyRequirement required

​

Values of PropertyRequirement
REQUIRED

​

SUGGESTED

​

valueType PropertyValueType required

​

Values of PropertyValueType
STRING

​

NUMBER

​

description string

​

iconName string

​

workspace string (RID)

The workspace in which to create the asset type. If not provided, the asset type will be created in the default workspace for the user’s organization, if the default workspace for the organization is configured.

dataRequirements DataRequirements

Requirements on the data of assets of this type.

Set type to "series".

series SeriesRequirements

​

Fields of SeriesRequirements
series array of SeriesRequirement

At most 200, with unique names.

Fields of SeriesRequirement
name string required

A channel name of 1 to 200 characters, matched exactly.

type SeriesType required

​

Values of SeriesType
NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

Response

rid string (RID)

​

name string

​

description string

​

propertyConfigs map of PropertyName to PropertyConfig

​

Fields of PropertyConfig
requirement PropertyRequirement

​

Values of PropertyRequirement
REQUIRED

​

SUGGESTED

​

valueType PropertyValueType

​

Values of PropertyValueType
STRING

​

NUMBER

​

createdAt string (date-time)

​

iconName string

The name of the icon to display for the type. This name maps to a Lucide icon in the frontend.

primaryKey string

The property that identifies an asset of this type. It is a required nonempty string and is not repeated in propertyConfigs.

isArchived boolean

​

dataRequirements DataRequirements

Requirements on the data of assets of this type, absent if none were ever set. Checked when the type is attached to an asset; later data or definition changes are not rechecked.

Set type to "series".

series SeriesRequirements

​

Fields of SeriesRequirements
series array of SeriesRequirement

At most 200, with unique names.

Fields of SeriesRequirement
name string

A channel name of 1 to 200 characters, matched exactly.

type SeriesType

​

Values of SeriesType
NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/type" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "primaryKey": "<property name>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/type",
    headers={"Authorization": "Bearer <api key>"},
    json={"name": "<name>", "primaryKey": "<property name>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/type",
    headers={"Authorization": "Bearer <api key>"},
    json={"name": "<name>", "primaryKey": "<property name>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/type",
            headers={"Authorization": "Bearer <api key>"},
            json={"name": "<name>", "primaryKey": "<property name>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<type rid>",
  "name": "<name>",
  "description": "<description>",
  "propertyConfigs": {
    "<key>": {
      "requirement": "REQUIRED",
      "valueType": "STRING"
    }
  },
  "createdAt": "2026-01-01T00:00:00Z",
  "iconName": "<icon name>",
  "primaryKey": "<property name>",
  "isArchived": true,
  "dataRequirements": {
    "type": "series",
    "series": {
      "series": [
        {
          "name": "<channel>",
          "type": "NUMERIC"
        }
      ]
    }
  }
}

Update type#

PUT /scout/v1/type/{typeRid}

Updates a type. Will throw unless all assets that reference the type pass the updated type check. A property or primary-key change throws TooManyActiveTypeMembers when the type has more active members than that check can scan.

Path parameters

typeRid string (RID) required

​

Body

name string

​

primaryKey string

​

propertyConfigs map of PropertyName to PropertyConfig

​

Fields of PropertyConfig
requirement PropertyRequirement required

​

Values of PropertyRequirement
REQUIRED

​

SUGGESTED

​

valueType PropertyValueType required

​

Values of PropertyValueType
STRING

​

NUMBER

​

dataRequirements DataRequirements

Absent leaves the requirements unchanged. Present replaces them; requiring no series clears them. Assets that already have the type are not rechecked, unlike propertyConfigs, which every such asset must still satisfy.

Set type to "series".

series SeriesRequirements

​

Fields of SeriesRequirements
series array of SeriesRequirement

At most 200, with unique names.

Fields of SeriesRequirement
name string required

A channel name of 1 to 200 characters, matched exactly.

type SeriesType required

​

Values of SeriesType
NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

description string

​

iconName string

​

Response

rid string (RID)

​

name string

​

description string

​

propertyConfigs map of PropertyName to PropertyConfig

​

Fields of PropertyConfig
requirement PropertyRequirement

​

Values of PropertyRequirement
REQUIRED

​

SUGGESTED

​

valueType PropertyValueType

​

Values of PropertyValueType
STRING

​

NUMBER

​

createdAt string (date-time)

​

iconName string

The name of the icon to display for the type. This name maps to a Lucide icon in the frontend.

primaryKey string

The property that identifies an asset of this type. It is a required nonempty string and is not repeated in propertyConfigs.

isArchived boolean

​

dataRequirements DataRequirements

Requirements on the data of assets of this type, absent if none were ever set. Checked when the type is attached to an asset; later data or definition changes are not rechecked.

Set type to "series".

series SeriesRequirements

​

Fields of SeriesRequirements
series array of SeriesRequirement

At most 200, with unique names.

Fields of SeriesRequirement
name string

A channel name of 1 to 200 characters, matched exactly.

type SeriesType

​

Values of SeriesType
NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

Request

curl -X PUT "https://api.gov.nominal.io/api/scout/v1/type/<type rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "primaryKey": "<property name>",
  "propertyConfigs": {
    "<key>": {
      "requirement": "REQUIRED",
      "valueType": "STRING"
    }
  },
  "dataRequirements": {
    "type": "series",
    "series": {
      "series": [
        {
          "name": "<channel>",
          "type": "NUMERIC"
        }
      ]
    }
  },
  "description": "<description>",
  "iconName": "<icon name>"
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/scout/v1/type/<type rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "primaryKey": "<property name>",
        "propertyConfigs": {"<key>": {"requirement": "REQUIRED", "valueType": "STRING"}},
        "dataRequirements": {
            "type": "series",
            "series": {"series": [{"name": "<channel>", "type": "NUMERIC"}]},
        },
        "description": "<description>",
        "iconName": "<icon name>",
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v1/type/<type rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "primaryKey": "<property name>",
        "propertyConfigs": {"<key>": {"requirement": "REQUIRED", "valueType": "STRING"}},
        "dataRequirements": {
            "type": "series",
            "series": {"series": [{"name": "<channel>", "type": "NUMERIC"}]},
        },
        "description": "<description>",
        "iconName": "<icon name>",
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.put(
            "https://api.gov.nominal.io/api/scout/v1/type/<type rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "name": "<name>",
                "primaryKey": "<property name>",
                "propertyConfigs": {
                    "<key>": {"requirement": "REQUIRED", "valueType": "STRING"},
                },
                "dataRequirements": {
                    "type": "series",
                    "series": {"series": [{"name": "<channel>", "type": "NUMERIC"}]},
                },
                "description": "<description>",
                "iconName": "<icon name>",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<type rid>",
  "name": "<name>",
  "description": "<description>",
  "propertyConfigs": {
    "<key>": {
      "requirement": "REQUIRED",
      "valueType": "STRING"
    }
  },
  "createdAt": "2026-01-01T00:00:00Z",
  "iconName": "<icon name>",
  "primaryKey": "<property name>",
  "isArchived": true,
  "dataRequirements": {
    "type": "series",
    "series": {
      "series": [
        {
          "name": "<channel>",
          "type": "NUMERIC"
        }
      ]
    }
  }
}

Get types#

POST /scout/v1/type/multiple

Body

The body is an array of string (RID).

Response

The body is a map of TypeRid to Type.

Fields of Type
rid string (RID)

​

name string

​

description string

​

propertyConfigs map of PropertyName to PropertyConfig

​

Fields of PropertyConfig
requirement PropertyRequirement

​

Values of PropertyRequirement
REQUIRED

​

SUGGESTED

​

valueType PropertyValueType

​

Values of PropertyValueType
STRING

​

NUMBER

​

createdAt string (date-time)

​

iconName string

The name of the icon to display for the type. This name maps to a Lucide icon in the frontend.

primaryKey string

The property that identifies an asset of this type. It is a required nonempty string and is not repeated in propertyConfigs.

isArchived boolean

​

dataRequirements DataRequirements

Requirements on the data of assets of this type, absent if none were ever set. Checked when the type is attached to an asset; later data or definition changes are not rechecked.

Set type to "series".

series SeriesRequirements

​

Fields of SeriesRequirements
series array of SeriesRequirement

At most 200, with unique names.

Fields of SeriesRequirement
name string

A channel name of 1 to 200 characters, matched exactly.

type SeriesType

​

Values of SeriesType
NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/type/multiple" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '[
  "<type rid>"
]'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/type/multiple",
    headers={"Authorization": "Bearer <api key>"},
    json=["<type rid>"],
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/type/multiple",
    headers={"Authorization": "Bearer <api key>"},
    json=["<type rid>"],
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/type/multiple",
            headers={"Authorization": "Bearer <api key>"},
            json=["<type rid>"],
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "<key>": {
    "rid": "<type rid>",
    "name": "<name>",
    "description": "<description>",
    "propertyConfigs": {
      "<key>": {
        "requirement": "REQUIRED",
        "valueType": "STRING"
      }
    },
    "createdAt": "2026-01-01T00:00:00Z",
    "iconName": "<icon name>",
    "primaryKey": "<property name>",
    "isArchived": true,
    "dataRequirements": {
      "type": "series",
      "series": {
        "series": [
          {
            "name": "<channel>",
            "type": "NUMERIC"
          }
        ]
      }
    }
  }
}

Delete type#

DELETE /scout/v1/type/{rid}

Deletes a type. The type must not be referenced by any assets.

Path parameters

rid string (RID) required

​

Response

No content (HTTP 204).

Request

curl -X DELETE "https://api.gov.nominal.io/api/scout/v1/type/<rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.delete(
    "https://api.gov.nominal.io/api/scout/v1/type/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.delete(
    "https://api.gov.nominal.io/api/scout/v1/type/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.delete(
            "https://api.gov.nominal.io/api/scout/v1/type/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Archive type#

POST /scout/v1/type/archive/{rid}

Path parameters

rid string (RID) required

​

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/type/archive/<rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/type/archive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/type/archive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/type/archive/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Unarchive type#

POST /scout/v1/type/unarchive/{rid}

Path parameters

rid string (RID) required

​

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/type/unarchive/<rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/type/unarchive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/type/unarchive/<rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/type/unarchive/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Errors#

Errors shows how these errors are sent.

Each error’s errorName is Assets: followed by its name below.

Status

Name

Notes

400

DataRequirementsNotMet

The asset’s data does not satisfy the data requirements of a type being attached. missingSeries lists, by name, every required series that has no series of that name and type in the asset’s data.

400

DuplicateDataScopeNames

Multiple data scopes within the same asset share the same refname

400

InvalidTypeDefinition

400

PrimaryKeyInUse

Another active asset already uses this primary key for this type.

400

TooManyActiveTypeMembers

A property or primary-key update cannot be checked because the type has more active members than maxActiveMembers.

400

TypeArchived

400

TypeCheckFailed

The asset’s properties do not satisfy one of its types. missingProperties lists properties the type requires, including its primary key, that are absent or blank. wrongValueTypeProperties lists set values whose type does not match the type’s declared value type for that property.

400

TypeUpdateRejected

Updating the type would leave active members that do not conform. exampleAssetRids is a bounded sample.

403

TypeReferencedByAssets

The type is referenced by one or more assets and cannot be deleted.

404

AssetNotFound

404

AssetsNotFound

404

TypeNotFound

409

TypeAlreadyExists

500

DataRequirementsCheckTimedOut

Looking up the series in the asset’s data, to check the data requirements of a type being attached, took too long. Nothing was written; the request can be retried.

Types#

ArchivedStatus#

NOT_ARCHIVED

​

ARCHIVED

​

Asset#

rid string (RID) required

​

title string required

​

description string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

labels array of string

Labels associated with the asset. These labels do not have a time dimension. To associate labels with a range of time, create a time range on the asset with labels.

links array of Link

Links associated with the asset. These links do not have a time dimension. To associate links with a range of time, create a time range on the asset with links.

dataScopes array of DataScope

The data scopes associated with the asset.

createdBy string (RID)

​

createdAt string (date-time) required

​

updatedAt string (date-time) required

​

attachments array of string (RID)

​

types array of string (RID)

Types attached to the asset. At most 10.

isStaged boolean required

Auto created assets are considered staged by default.

isArchived boolean required

​

datasetRid string (RID)

The dataset that backs this asset’s data. Present when created with datasetRid. May be absent for legacy assets without representable scopes.

AssetSortField#

NAME

​

CREATED_AT

​

MOST_RECENT_RUN_START

​

AssetSortOptions#

isDescending boolean required

​

field AssetSortField deprecated

Deprecated: use SortKey with SortField union type instead

sortKey SortKey

Field to sort by. Includes both field and property-based sorting. Must be supplied if field is not provided separately.

AssetTypesFilter#

Matches an asset when any of its types is in assetTypes.

assetTypes array of string (RID)

​

ConflictBehavior#

Controls what happens when a rename target property key already exists on a document.

Set type to the name of one of the other fields, and set only that field.

skip SkipOnConflict

​

overwrite OverwriteOnConflict

​

CreateAssetDataScope#

dataScopeName string required

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource required

​

offset Duration

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

DataRequirements#

The requirements on the data of assets of a type. Clients should treat an unknown variant as requirements they cannot display: it is a kind added after the client was built.

Set type to the name of one of the other fields, and set only that field.

series SeriesRequirements

​

DataScope#

dataScopeName string required

The name of the data scope. The name is guaranteed to be be unique within the context of an asset.

dataSource DataSource required

​

offset Duration

​

timestampType WeakTimestampType required

​

seriesTags map of TagName to string

Filters the data source to series matching these tag values. The filtered set of series should be the ones that belong to the asset.

DataSource#

Set type to the name of one of the other fields, and set only that field.

dataset string (RID)

​

connection string (RID)

​

logSet string (RID)

​

video string (RID)

​

spatial string (RID)

​

Duration#

seconds integer (int64) required

​

nanos integer (int64) required

​

LabelsFilter#

operator SetOperator required

​

labels array of string

​

MergePropertyValuesForKey#

Merge one or more string values of a property key into a single target value. Merge applies to categorical aliases; continuous numeric values are intentionally excluded.

key string required

​

source array of string

​

target string required

​

MetadataChange#

Set type to the name of one of the other fields, and set only that field.

renameLabel RenameLabel

​

renamePropertyKey RenamePropertyKey

​

mergePropertyValuesForKey MergePropertyValuesForKey

​

NumericPropertyPredicate#

Matches resources that have a numeric value for the named property and whose value satisfies the operator. NEQ excludes resources that lack the property or store a string value under the same name.

name string required

​

value number required

​

operator PropertyComparisonOperator required

​

NumericPropertyRangeOperator#

BETWEEN

​

NOT_BETWEEN

​

NumericPropertyRangePredicate#

Inclusive range on a numeric property. At least one bound is required. BETWEEN: min <= x <= max. An absent bound is unbounded on that side. NOT_BETWEEN: x < min OR x > max. An absent bound drops that side. Both operators require a numeric value for name. Missing properties and string values never match. Bounds are closed [min, max] to match the number chip (is between / is not between), not half-open.

name string required

​

min number

​

max number

​

operator NumericPropertyRangeOperator required

​

OverwriteOnConflict#

Documents that already have the target property key are included in the rename. The priority list determines which value wins via ordered precedence. Must contain exactly the source keys + target key.

priority array of string

​

PropertiesFilter#

name string required

​

values array of string

​

Property#

name string required

​

value string required

​

PropertyComparisonOperator#

EQ

​

NEQ

​

GT

​

GTE

​

LT

​

LTE

​

PropertyConfig#

requirement PropertyRequirement required

​

valueType PropertyValueType required

​

PropertyRequirement#

REQUIRED

​

SUGGESTED

​

PropertyValueType#

STRING

​

NUMBER

​

RenameLabel#

Rename or merge one or more source labels into a single target label.

source array of string

​

target string required

​

RenamePropertyKey#

Rename one or more source property keys to a single target key. Existing values are preserved under the new key. The rename should be skipped in the service for resources w/ conflicting keys.

source array of string

​

target string required

​

onConflict ConflictBehavior required

​

SearchAssetsQuery#

Set type to the name of one of the other fields, and set only that field.

searchText string

​

exactSubstring string

An case-insensitive substring match of the title or description of the asset.

label string deprecated

Deprecated: use labels instead

labels LabelsFilter

​

property Property deprecated

Deprecated: use properties

propertyKey string

Matches assets that have a property with this key, regardless of value.

properties PropertiesFilter

​

numericProperty NumericPropertyPredicate

Matches assets using a numeric property comparison.

numericPropertyRange NumericPropertyRangePredicate

Matches assets using an inclusive numeric property range.

typeRid string (RID) deprecated

Deprecated: use assetTypes

assetTypes AssetTypesFilter

​

isStaged boolean deprecated

Deprecated: staged assets are no longer returned in the search endpoint

archived boolean

​

and array of SearchAssetsQuery

​

or array of SearchAssetsQuery

​

not SearchAssetsQuery

​

workspace string (RID)

​

SearchTypesQuery#

Set type to the name of one of the other fields, and set only that field.

searchText string

​

property string

​

and array of SearchTypesQuery

​

or array of SearchTypesQuery

​

workspace string (RID)

​

SeriesRequirement#

name string required

A channel name of 1 to 200 characters, matched exactly.

type SeriesType required

​

SeriesRequirements#

Met when, for each required series, the asset’s data has a series with that exact name and type under the data scopes’ tag filters, at any time. No series requires nothing, which is how an update clears the requirements.

series array of SeriesRequirement

At most 200, with unique names.

SeriesType#

The kind of a required series. A series of any stored type within the kind satisfies the requirement. NUMERIC is double, int64 or uint64 points.

NUMERIC

​

STRING

​

LOG

​

NUMERIC_ARRAY

​

STRING_ARRAY

​

STRUCT

​

SetOperator#

AND

​

OR

​

SkipOnConflict#

Documents are skipped when: - The target property key already exists on the document, or - Multiple source property keys exist on the document (ambiguous merge). Conflicting document RIDs are returned in the response.

An empty JSON object, {}.

SortKey#

Set type to the name of one of the other fields, and set only that field.

field AssetSortField

​

property SortProperty

​

numericProperty SortProperty

Sort by a numeric property value. String-valued and missing properties are null and always sort last.

SortProperty#

name string required

​

Type#

rid string (RID) required

​

name string required

​

description string

​

propertyConfigs map of PropertyName to PropertyConfig

​

createdAt string (date-time) required

​

iconName string

The name of the icon to display for the type. This name maps to a Lucide icon in the frontend.

primaryKey string required

The property that identifies an asset of this type. It is a required nonempty string and is not repeated in propertyConfigs.

isArchived boolean required

​

dataRequirements DataRequirements

Requirements on the data of assets of this type, absent if none were ever set. Checked when the type is attached to an asset; later data or definition changes are not rechecked.

TypedPropertyValue#

Typed metadata value. Additional variants may be added as property types expand.

Set type to the name of one of the other fields, and set only that field.

stringValue string

​

numericValue number

​

TypeSortField#

CREATED_AT

​

TypeSortOptions#

isDescending boolean required

​

field TypeSortField required

​

WeakTimestampType#

If a CSV data source is still being split, the timestamp type is not known.

ABSOLUTE

​

RELATIVE

​

PENDING

​

Page design based on Scalar, MIT License.