Run service#

Runs are collections of channels and metadata from one or more data sources, synchronized over a range of real time, which represents a test event or simulation. These API endpoints let you manage runs in the Nominal app.

OpenAPI file: RunService.json

Endpoints#

Create run#

POST /scout/v1/run

Create a new run in Nominal.

Throws if start is equal to or after end.

Body

title string required

​

description string required

​

startTime UtcTimestamp required

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

runPrefix string

​

dataSources map of DataSourceRefName to CreateRunDataSource

​

Fields of CreateRunDataSource
dataSource DataSource deprecated

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence. Deprecated: Use dataSourceRid instead.

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)

​

dataSourceRid string (RID)

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence.

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

workspace string (RID)

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

Response

rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

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

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

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/run",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "startTime": {"secondsSinceEpoch": 1},
    },
)
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/run",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "title": "<title>",
                "description": "<description>",
                "startTime": {"secondsSinceEpoch": 1},
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<run rid>",
  "runNumber": 1,
  "runPrefix": "<run prefix>",
  "title": "<title>",
  "description": "<description>",
  "authorRid": "<user rid>",
  "startTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "assetDataScopesMap": {
    "<key>": {
      "dataScopes": {
        "<key>": {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      }
    }
  },
  "assetDataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "refName": "<data source ref name>",
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "isArchived": true,
  "lockStatus": "LOCKED"
}

Update run#

PUT /scout/v1/run/{rid}

Updates an existing run based on its RID.

Throws if start is equal to or after end.

Path parameters

rid string (RID) required

​

Body

title string

​

description string

​

startTime UtcTimestamp

If strictOverwrite is false, will only update the startTime if it is before the existing startTime.

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

If strictOverwrite is false, will only update the endTime if it is after the existing endTime.

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

​

runPrefix string

Pass in an empty string to remove the run prefix.

dataSources map of DataSourceRefName to CreateRunDataSource

​

Fields of CreateRunDataSource
dataSource DataSource deprecated

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence. Deprecated: Use dataSourceRid instead.

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)

​

dataSourceRid string (RID)

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence.

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

strictOverwrite boolean

If true, will blindly overwrite the existing fields with the new values in the request. If false, will only update the fields if application constraints are maintained. See individual field docs for more details. Defaults to true for backwards compatibility.

Response

rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

curl -X PUT "https://api.gov.nominal.io/api/scout/v1/run/<rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "title": "<title>",
  "description": "<description>",
  "startTime": {
    "secondsSinceEpoch": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "url": "<url>"
    }
  ],
  "runPrefix": "<run prefix>",
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "dataSourceRid": "<data source rid>",
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "strictOverwrite": true
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/scout/v1/run/<rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "startTime": {"secondsSinceEpoch": 1},
        "endTime": {"secondsSinceEpoch": 1},
        "properties": {"<key>": "<property value>"},
        "typedProperties": {
            "<key>": {"type": "stringValue", "stringValue": "<property value>"},
        },
        "labels": ["<label>"],
        "links": [{"url": "<url>"}],
        "runPrefix": "<run prefix>",
        "dataSources": {
            "<key>": {
                "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
                "dataSourceRid": "<data source rid>",
                "offset": {"seconds": 1, "nanos": 1},
                "seriesTags": {"<key>": "<tag value>"},
            },
        },
        "attachments": ["<attachment rid>"],
        "asset": "<asset rid>",
        "assets": ["<asset rid>"],
        "strictOverwrite": True,
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v1/run/<rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "startTime": {"secondsSinceEpoch": 1},
        "endTime": {"secondsSinceEpoch": 1},
        "properties": {"<key>": "<property value>"},
        "typedProperties": {
            "<key>": {"type": "stringValue", "stringValue": "<property value>"},
        },
        "labels": ["<label>"],
        "links": [{"url": "<url>"}],
        "runPrefix": "<run prefix>",
        "dataSources": {
            "<key>": {
                "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
                "dataSourceRid": "<data source rid>",
                "offset": {"seconds": 1, "nanos": 1},
                "seriesTags": {"<key>": "<tag value>"},
            },
        },
        "attachments": ["<attachment rid>"],
        "asset": "<asset rid>",
        "assets": ["<asset rid>"],
        "strictOverwrite": 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/run/<rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "title": "<title>",
                "description": "<description>",
                "startTime": {"secondsSinceEpoch": 1},
                "endTime": {"secondsSinceEpoch": 1},
                "properties": {"<key>": "<property value>"},
                "typedProperties": {
                    "<key>": {"type": "stringValue", "stringValue": "<property value>"},
                },
                "labels": ["<label>"],
                "links": [{"url": "<url>"}],
                "runPrefix": "<run prefix>",
                "dataSources": {
                    "<key>": {
                        "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
                        "dataSourceRid": "<data source rid>",
                        "offset": {"seconds": 1, "nanos": 1},
                        "seriesTags": {"<key>": "<tag value>"},
                    },
                },
                "attachments": ["<attachment rid>"],
                "asset": "<asset rid>",
                "assets": ["<asset rid>"],
                "strictOverwrite": True,
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<run rid>",
  "runNumber": 1,
  "runPrefix": "<run prefix>",
  "title": "<title>",
  "description": "<description>",
  "authorRid": "<user rid>",
  "startTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "assetDataScopesMap": {
    "<key>": {
      "dataScopes": {
        "<key>": {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      }
    }
  },
  "assetDataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "refName": "<data source ref name>",
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "isArchived": true,
  "lockStatus": "LOCKED"
}

Get run#

GET /scout/v1/run/{rid}

Fetches details about the run in question based on its RID.

Path parameters

rid string (RID) required

​

Response

rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

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

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

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v1/run/<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.get(
            "https://api.gov.nominal.io/api/scout/v1/run/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<run rid>",
  "runNumber": 1,
  "runPrefix": "<run prefix>",
  "title": "<title>",
  "description": "<description>",
  "authorRid": "<user rid>",
  "startTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "assetDataScopesMap": {
    "<key>": {
      "dataScopes": {
        "<key>": {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      }
    }
  },
  "assetDataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "refName": "<data source ref name>",
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "isArchived": true,
  "lockStatus": "LOCKED"
}

Batch edit run metadata#

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

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

Body

runSearchQuery SearchQuery

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

Set type to "startTimeInclusive".

startTimeInclusive UtcTimestamp deprecated

Deprecated: Use startTime instead

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

Set type to "startTime".

startTime TimeframeFilter

​

Set type to "custom".

custom CustomTimeframeFilter

​

Fields of CustomTimeframeFilter
startTime UtcTimestamp

​

endTime UtcTimestamp

​

Set type to "preset".

preset PresetTimeframeFilter

​

Fields of PresetTimeframeFilter
duration PresetTimeframeDuration required

​

Values of PresetTimeframeDuration
ALL_TIME

​

LAST_DAY

​

LAST_WEEK

​

LAST_MONTH

​

LAST_YEAR

​

Set type to "endTimeInclusive".

endTimeInclusive UtcTimestamp deprecated

Deprecated: Use endTime instead

Set type to "endTime".

endTime TimeframeFilter

​

Set type to "timeRange".

timeRange TimeRangeFilter

​

Fields of TimeRangeFilter
start UtcTimestamp

​

end UtcTimestamp

​

Set type to "createdAt".

createdAt TimeframeFilter

​

Set type to "exactMatch".

exactMatch string

Performs case insensitive exact substring match search on the title.

Set type to "searchText".

searchText string

​

Set type to "asset".

asset string (RID) deprecated

Deprecated: Use getRunsByAsset rather than text-based search

Set type to "assets".

assets AssetsFilter

​

Fields of AssetsFilter
assets array of string (RID)

​

Set type to "isSingleAsset".

isSingleAsset boolean

Search for either only single-asset runs (true), or only multi-asset runs (false).

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 runs 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 runs 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 runs 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 "dataSourceSeriesTag".

dataSourceSeriesTag DataSourceSeriesTag

​

Fields of DataSourceSeriesTag
name string required

​

value string required

​

Set type to "dataSourceRefName".

dataSourceRefName string

​

Set type to "dataSource".

dataSource DataSource deprecated

Deprecated: Use dataSourceRefName, rather than searching directly by 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)

​

Set type to "runNumber".

runNumber integer (int64)

​

Set type to "runPrefix".

runPrefix string

​

Set type to "checkAlertStatesFilter".

checkAlertStatesFilter CheckAlertStatesFilter

Search for runs where its aggregated check alert satisfy a given operator and threshold.

Fields of CheckAlertStatesFilter
checkAlertState CheckAlertState required

​

Set type to "pendingReview".

pendingReview PendingReviewAlertState

​

Set type to "closedWithFurtherAction".

closedWithFurtherAction ClosedWithFurtherActionAlertState

​

Fields of ClosedWithFurtherActionAlertState
comment string required

​

closedBy string (RID) required

​

Set type to "closedWithIgnore".

closedWithIgnore ClosedWithIgnoreAlertState

​

Fields of ClosedWithIgnoreAlertState
comment string required

​

closedBy string (RID) required

​

operator Operator required

​

Values of Operator
LEQ

​

LT

​

GEQ

​

GT

​

EQ

​

threshold integer (int64) required

​

Set type to "archived".

archived boolean

​

Set type to "and".

and array of SearchQuery

​

Set type to "or".

or array of SearchQuery

​

Set type to "not".

not SearchQuery

​

Set type to "workspace".

workspace string (RID)

​

Set type to "lockStatus".

lockStatus LockStatus

​

Values of LockStatus
LOCKED

​

UNLOCKED

​

Set type to "datasetRids".

datasetRids array of string (RID)

Applied as a post-filter to the page returned by unified search. A run matches when any requested dataset is in its data scopes. At most 10 dataset RIDs may be provided.

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

modifiedRunRids array of string (RID)

RIDs for runs that were modified by the batch edit.

conflictingRunRids array of string (RID)

RIDs for runs 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/run/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/run/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/run/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/run/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

{
  "modifiedRunRids": [
    "<run rid>"
  ],
  "conflictingRunRids": [
    "<run rid>"
  ]
}

Add data sources to run#

POST /scout/v1/run/{runRid}/data-sources

Adds datasources to the run in question.

Throws if any of the ref names conflict with existing data sources or each other.

Path parameters

runRid string (RID) required

​

Body

The body is a map of DataSourceRefName to CreateRunDataSource.

Fields of CreateRunDataSource
dataSource DataSource deprecated

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence. Deprecated: Use dataSourceRid instead.

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)

​

dataSourceRid string (RID)

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence.

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

Response

rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/run/<run rid>/data-sources" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "<key>": {
    "dataSource": {
      "type": "dataset",
      "dataset": "<dataset rid>"
    },
    "dataSourceRid": "<data source rid>",
    "offset": {
      "seconds": 1,
      "nanos": 1
    },
    "seriesTags": {
      "<key>": "<tag value>"
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/run/<run rid>/data-sources",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "<key>": {
            "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
            "dataSourceRid": "<data source rid>",
            "offset": {"seconds": 1, "nanos": 1},
            "seriesTags": {"<key>": "<tag value>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/run/<run rid>/data-sources",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "<key>": {
            "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
            "dataSourceRid": "<data source rid>",
            "offset": {"seconds": 1, "nanos": 1},
            "seriesTags": {"<key>": "<tag value>"},
        },
    },
)
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/run/<run rid>/data-sources",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "<key>": {
                    "dataSource": {"type": "dataset", "dataset": "<dataset rid>"},
                    "dataSourceRid": "<data source rid>",
                    "offset": {"seconds": 1, "nanos": 1},
                    "seriesTags": {"<key>": "<tag value>"},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<run rid>",
  "runNumber": 1,
  "runPrefix": "<run prefix>",
  "title": "<title>",
  "description": "<description>",
  "authorRid": "<user rid>",
  "startTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "assetDataScopesMap": {
    "<key>": {
      "dataScopes": {
        "<key>": {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      }
    }
  },
  "assetDataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "refName": "<data source ref name>",
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "isArchived": true,
  "lockStatus": "LOCKED"
}

Create or update run#

POST /scout/v1/run/create-or-update

Updates a run if it exists, otherwise it’s created from scratch. Will throw if the workspace of an existing run is different from the workspace of the request.

Body

runRid string (RID)

If a run with the same rid already exists, it will be updated. Otherwise, a new run will be created.

createRunRequest CreateRunRequest required

​

Fields of CreateRunRequest
title string required

​

description string required

​

startTime UtcTimestamp required

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

runPrefix string

​

dataSources map of DataSourceRefName to CreateRunDataSource

​

Fields of CreateRunDataSource
dataSource DataSource deprecated

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence. Deprecated: Use dataSourceRid instead.

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)

​

dataSourceRid string (RID)

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence.

offset Duration

​

Fields of Duration
seconds integer (int64) required

​

nanos integer (int64) required

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

workspace string (RID)

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

Response

rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/run/create-or-update" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "createRunRequest": {
    "title": "<title>",
    "description": "<description>",
    "startTime": {
      "secondsSinceEpoch": 1
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/run/create-or-update",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "createRunRequest": {
            "title": "<title>",
            "description": "<description>",
            "startTime": {"secondsSinceEpoch": 1},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/run/create-or-update",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "createRunRequest": {
            "title": "<title>",
            "description": "<description>",
            "startTime": {"secondsSinceEpoch": 1},
        },
    },
)
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/run/create-or-update",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "createRunRequest": {
                    "title": "<title>",
                    "description": "<description>",
                    "startTime": {"secondsSinceEpoch": 1},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<run rid>",
  "runNumber": 1,
  "runPrefix": "<run prefix>",
  "title": "<title>",
  "description": "<description>",
  "authorRid": "<user rid>",
  "startTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "assetDataScopesMap": {
    "<key>": {
      "dataScopes": {
        "<key>": {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      }
    }
  },
  "assetDataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "refName": "<data source ref name>",
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "isArchived": true,
  "lockStatus": "LOCKED"
}

Get run with data review metrics#

GET /scout/v1/run/{rid}/with-data-review-metrics

Fetches details about the run in question based on its RID, including metrics for check and violation review status.

Path parameters

rid string (RID) required

​

Response

run Run

​

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

dataReviewMetrics DataReviewMetrics

​

Fields of DataReviewMetrics
checks DataReviewCheckMetrics

​

Fields of DataReviewCheckMetrics
pendingExecution integer

​

executing integer

​

passingAutomatic integer

​

pendingReview integer

​

closedWithIgnore integer

​

closedWithFurtherAction integer

​

failedToExecutePendingReview integer

​

failedToExecuteClosedWithIgnore integer

​

failedToExecuteClosedWithFurtherAction integer

​

alerts DataReviewAlertMetrics

​

Fields of DataReviewAlertMetrics
pendingReview integer

​

closedWithIgnore integer

​

closedWithFurtherAction integer

​

Request

curl "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-metrics" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-metrics",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-metrics",
    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.get(
            "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-metrics",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "run": {
    "rid": "<run rid>",
    "runNumber": 1,
    "runPrefix": "<run prefix>",
    "title": "<title>",
    "description": "<description>",
    "authorRid": "<user rid>",
    "startTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "endTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "links": [
      {
        "title": "<title>",
        "url": "<url>"
      }
    ],
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "assetDataScopesMap": {
      "<key>": {
        "dataScopes": {
          "<key>": {
            "dataScopeName": "<data source ref name>",
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        }
      }
    },
    "assetDataScopes": [
      {
        "dataScopeName": "<data source ref name>",
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    ],
    "dataSources": {
      "<key>": {
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "refName": "<data source ref name>",
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    },
    "attachments": [
      "<attachment rid>"
    ],
    "asset": "<asset rid>",
    "assets": [
      "<asset rid>"
    ],
    "isArchived": true,
    "lockStatus": "LOCKED"
  },
  "dataReviewMetrics": {
    "checks": {
      "pendingExecution": 1,
      "executing": 1,
      "passingAutomatic": 1,
      "pendingReview": 1,
      "closedWithIgnore": 1,
      "closedWithFurtherAction": 1,
      "failedToExecutePendingReview": 1,
      "failedToExecuteClosedWithIgnore": 1,
      "failedToExecuteClosedWithFurtherAction": 1
    },
    "alerts": {
      "pendingReview": 1,
      "closedWithIgnore": 1,
      "closedWithFurtherAction": 1
    }
  }
}

Get run with data review summary#

GET /scout/v1/run/{rid}/with-data-review-summary

Fetches details about the run in question based on its RID, including a summary of the data review status.

Path parameters

rid string (RID) required

​

Response

run Run

​

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

dataReviewSummary RunDataReviewSummary

​

Fields of RunDataReviewSummary
evaluationStatus RunDataReviewEvaluationStatus

​

Values of RunDataReviewEvaluationStatus
NO_CHECKS_APPLIED

​

FAILED_TO_EXECUTE

​

EXECUTING

​

PENDING_EXECUTION

​

CLOSED_WITH_FURTHER_ACTION

​

GENERATED_ALERTS

​

CLOSED_WITH_IGNORE

​

PASSING

​

totalIssueCount integer

​

reviewedIssueCount integer

​

issuesWithFurtherActionCount integer

​

executionErrorCount integer

​

Request

curl "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-summary" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-summary",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-summary",
    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.get(
            "https://api.gov.nominal.io/api/scout/v1/run/<rid>/with-data-review-summary",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "run": {
    "rid": "<run rid>",
    "runNumber": 1,
    "runPrefix": "<run prefix>",
    "title": "<title>",
    "description": "<description>",
    "authorRid": "<user rid>",
    "startTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "endTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "links": [
      {
        "title": "<title>",
        "url": "<url>"
      }
    ],
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "assetDataScopesMap": {
      "<key>": {
        "dataScopes": {
          "<key>": {
            "dataScopeName": "<data source ref name>",
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        }
      }
    },
    "assetDataScopes": [
      {
        "dataScopeName": "<data source ref name>",
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    ],
    "dataSources": {
      "<key>": {
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "refName": "<data source ref name>",
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    },
    "attachments": [
      "<attachment rid>"
    ],
    "asset": "<asset rid>",
    "assets": [
      "<asset rid>"
    ],
    "isArchived": true,
    "lockStatus": "LOCKED"
  },
  "dataReviewSummary": {
    "evaluationStatus": "NO_CHECKS_APPLIED",
    "totalIssueCount": 1,
    "reviewedIssueCount": 1,
    "issuesWithFurtherActionCount": 1,
    "executionErrorCount": 1
  }
}

Get run by ID#

POST /scout/v1/run/by-id

Fetches a run based on the run number, rather than RID.

Body

runNumber integer (int64) required

​

runPrefix string

​

workspace string (RID)

The workspace in which to query for the run. If not provided, the run will be queried in the default workspace for the user’s organization, if the default workspace for the organization is configured and the user has access to it.

Response

rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

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

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

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/run/by-id",
    headers={"Authorization": "Bearer <api key>"},
    json={"runNumber": 1},
)
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/run/by-id",
            headers={"Authorization": "Bearer <api key>"},
            json={"runNumber": 1},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<run rid>",
  "runNumber": 1,
  "runPrefix": "<run prefix>",
  "title": "<title>",
  "description": "<description>",
  "authorRid": "<user rid>",
  "startTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "endTime": {
    "secondsSinceEpoch": 1,
    "offsetNanoseconds": 1
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "links": [
    {
      "title": "<title>",
      "url": "<url>"
    }
  ],
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "assetDataScopesMap": {
    "<key>": {
      "dataScopes": {
        "<key>": {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      }
    }
  },
  "assetDataScopes": [
    {
      "dataScopeName": "<data source ref name>",
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  ],
  "dataSources": {
    "<key>": {
      "dataSource": {
        "type": "dataset",
        "dataset": "<dataset rid>"
      },
      "offset": {
        "seconds": 1,
        "nanos": 1
      },
      "refName": "<data source ref name>",
      "timestampType": "ABSOLUTE",
      "seriesTags": {
        "<key>": "<tag value>"
      }
    }
  },
  "attachments": [
    "<attachment rid>"
  ],
  "asset": "<asset rid>",
  "assets": [
    "<asset rid>"
  ],
  "isArchived": true,
  "lockStatus": "LOCKED"
}

Get runs#

POST /scout/v1/run/multiple

Fetches a list of run details based on a list of RIDs.

Body

The body is an array of string (RID).

Response

The body is a map of RunRid to Run.

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

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

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

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/run/multiple",
    headers={"Authorization": "Bearer <api key>"},
    json=["<run 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/run/multiple",
            headers={"Authorization": "Bearer <api key>"},
            json=["<run rid>"],
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "<key>": {
    "rid": "<run rid>",
    "runNumber": 1,
    "runPrefix": "<run prefix>",
    "title": "<title>",
    "description": "<description>",
    "authorRid": "<user rid>",
    "startTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "endTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "links": [
      {
        "title": "<title>",
        "url": "<url>"
      }
    ],
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "assetDataScopesMap": {
      "<key>": {
        "dataScopes": {
          "<key>": {
            "dataScopeName": "<data source ref name>",
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        }
      }
    },
    "assetDataScopes": [
      {
        "dataScopeName": "<data source ref name>",
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    ],
    "dataSources": {
      "<key>": {
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "refName": "<data source ref name>",
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    },
    "attachments": [
      "<attachment rid>"
    ],
    "asset": "<asset rid>",
    "assets": [
      "<asset rid>"
    ],
    "isArchived": true,
    "lockStatus": "LOCKED"
  }
}

Get runs by asset#

POST /scout/v1/run/by-asset

Fetches the runs with the given asset.

Body

asset string (RID) required

​

nextPageToken string (UUID)

​

Response

results array of Run

​

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

nextPageToken string (UUID)

​

Request

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

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

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/run/by-asset",
    headers={"Authorization": "Bearer <api key>"},
    json={"asset": "<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/run/by-asset",
            headers={"Authorization": "Bearer <api key>"},
            json={"asset": "<asset rid>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "rid": "<run rid>",
      "runNumber": 1,
      "runPrefix": "<run prefix>",
      "title": "<title>",
      "description": "<description>",
      "authorRid": "<user rid>",
      "startTime": {
        "secondsSinceEpoch": 1,
        "offsetNanoseconds": 1
      },
      "endTime": {
        "secondsSinceEpoch": 1,
        "offsetNanoseconds": 1
      },
      "properties": {
        "<key>": "<property value>"
      },
      "typedProperties": {
        "<key>": {
          "type": "stringValue",
          "stringValue": "<property value>"
        }
      },
      "labels": [
        "<label>"
      ],
      "links": [
        {
          "title": "<title>",
          "url": "<url>"
        }
      ],
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "assetDataScopesMap": {
        "<key>": {
          "dataScopes": {
            "<key>": {
              "dataScopeName": "<data source ref name>",
              "dataSource": {
                "type": "dataset",
                "dataset": "<dataset rid>"
              },
              "offset": {
                "seconds": 1,
                "nanos": 1
              },
              "timestampType": "ABSOLUTE",
              "seriesTags": {
                "<key>": "<tag value>"
              }
            }
          }
        }
      },
      "assetDataScopes": [
        {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      ],
      "dataSources": {
        "<key>": {
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "refName": "<data source ref name>",
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      },
      "attachments": [
        "<attachment rid>"
      ],
      "asset": "<asset rid>",
      "assets": [
        "<asset rid>"
      ],
      "isArchived": true,
      "lockStatus": "LOCKED"
    }
  ],
  "nextPageToken": "<next page token>"
}

Get latest run for assets#

POST /scout/v1/run/by-assets/latest

Fetches the latest run for each requested asset. Assets without associated runs will not be included in response.

Body

The body is an array of string (RID).

Response

The body is a map of AssetRid to Run.

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/run/by-assets/latest" \
  -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/run/by-assets/latest",
    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/run/by-assets/latest",
    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/run/by-assets/latest",
            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": "<run rid>",
    "runNumber": 1,
    "runPrefix": "<run prefix>",
    "title": "<title>",
    "description": "<description>",
    "authorRid": "<user rid>",
    "startTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "endTime": {
      "secondsSinceEpoch": 1,
      "offsetNanoseconds": 1
    },
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "links": [
      {
        "title": "<title>",
        "url": "<url>"
      }
    ],
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "assetDataScopesMap": {
      "<key>": {
        "dataScopes": {
          "<key>": {
            "dataScopeName": "<data source ref name>",
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        }
      }
    },
    "assetDataScopes": [
      {
        "dataScopeName": "<data source ref name>",
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    ],
    "dataSources": {
      "<key>": {
        "dataSource": {
          "type": "dataset",
          "dataset": "<dataset rid>"
        },
        "offset": {
          "seconds": 1,
          "nanos": 1
        },
        "refName": "<data source ref name>",
        "timestampType": "ABSOLUTE",
        "seriesTags": {
          "<key>": "<tag value>"
        }
      }
    },
    "attachments": [
      "<attachment rid>"
    ],
    "asset": "<asset rid>",
    "assets": [
      "<asset rid>"
    ],
    "isArchived": true,
    "lockStatus": "LOCKED"
  }
}

Get all runs properties and labels#

GET /scout/v1/all-runs-properties-labels

Deprecated: Deprecated in favor of MetadataService#listPropertiesAndLabels

This legacy bulk-list surface returns string property values only.

Query parameters

workspaces array of string (RID)

If supplied, will return only the properties and labels that are associated with the supplied workspaces. If empty will return all properties and labels for workspaces that the user is permitted to see.

Response

properties map of PropertyName to array of string

​

labels array of string

​

Request

curl "https://api.gov.nominal.io/api/scout/v1/all-runs-properties-labels" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v1/all-runs-properties-labels",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v1/all-runs-properties-labels",
    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.get(
            "https://api.gov.nominal.io/api/scout/v1/all-runs-properties-labels",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "properties": {
    "<key>": [
      "<property value>"
    ]
  },
  "labels": [
    "<label>"
  ]
}

Search runs#

POST /scout/v1/search-runs

Searches for runs that match the given filters. Defaults to returning un-archived runs, absent an archive filter.

Body

sort SortOptions required

​

Fields of SortOptions
isDescending boolean required

​

field SortField deprecated

Deprecated: use SortKey with SortField union type instead

Values of SortField
NAME

​

ID

​

CREATED_AT

​

START_TIME

​

END_TIME

​

PENDING_CHECK_ALERTS

​

sortKey SortKey

Field to sort by. Includes both field and property-based sorting.

Set type to "field".

field SortField

​

Set type to "property".

property SortProperty

Sort by a property value. Requires a property name, and will always sort null values last.

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.

additionalSortKeys array of SortKeyWithDirection

Optional secondary sort keys for tiebreaking. Applied in order after the primary sortKey. Each entry specifies its own sort key and direction. If empty or absent, ties are broken by UUID only.

Fields of SortKeyWithDirection
sortKey SortKey required

​

isDescending boolean required

​

pageSize integer required

Maximum page size is 10000 for searchRuns, and 1000 for searchRunsWithDataReviewMetrics and searchRunsWithDataReviewSummary. Larger page sizes are rejected.

nextPageToken string

​

query SearchQuery required

​

Set type to "startTimeInclusive".

startTimeInclusive UtcTimestamp deprecated

Deprecated: Use startTime instead

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

Set type to "startTime".

startTime TimeframeFilter

​

Set type to "custom".

custom CustomTimeframeFilter

​

Fields of CustomTimeframeFilter
startTime UtcTimestamp

​

endTime UtcTimestamp

​

Set type to "preset".

preset PresetTimeframeFilter

​

Fields of PresetTimeframeFilter
duration PresetTimeframeDuration required

​

Values of PresetTimeframeDuration
ALL_TIME

​

LAST_DAY

​

LAST_WEEK

​

LAST_MONTH

​

LAST_YEAR

​

Set type to "endTimeInclusive".

endTimeInclusive UtcTimestamp deprecated

Deprecated: Use endTime instead

Set type to "endTime".

endTime TimeframeFilter

​

Set type to "timeRange".

timeRange TimeRangeFilter

​

Fields of TimeRangeFilter
start UtcTimestamp

​

end UtcTimestamp

​

Set type to "createdAt".

createdAt TimeframeFilter

​

Set type to "exactMatch".

exactMatch string

Performs case insensitive exact substring match search on the title.

Set type to "searchText".

searchText string

​

Set type to "asset".

asset string (RID) deprecated

Deprecated: Use getRunsByAsset rather than text-based search

Set type to "assets".

assets AssetsFilter

​

Fields of AssetsFilter
assets array of string (RID)

​

Set type to "isSingleAsset".

isSingleAsset boolean

Search for either only single-asset runs (true), or only multi-asset runs (false).

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 runs 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 runs 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 runs 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 "dataSourceSeriesTag".

dataSourceSeriesTag DataSourceSeriesTag

​

Fields of DataSourceSeriesTag
name string required

​

value string required

​

Set type to "dataSourceRefName".

dataSourceRefName string

​

Set type to "dataSource".

dataSource DataSource deprecated

Deprecated: Use dataSourceRefName, rather than searching directly by 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)

​

Set type to "runNumber".

runNumber integer (int64)

​

Set type to "runPrefix".

runPrefix string

​

Set type to "checkAlertStatesFilter".

checkAlertStatesFilter CheckAlertStatesFilter

Search for runs where its aggregated check alert satisfy a given operator and threshold.

Fields of CheckAlertStatesFilter
checkAlertState CheckAlertState required

​

Set type to "pendingReview".

pendingReview PendingReviewAlertState

​

Set type to "closedWithFurtherAction".

closedWithFurtherAction ClosedWithFurtherActionAlertState

​

Fields of ClosedWithFurtherActionAlertState
comment string required

​

closedBy string (RID) required

​

Set type to "closedWithIgnore".

closedWithIgnore ClosedWithIgnoreAlertState

​

Fields of ClosedWithIgnoreAlertState
comment string required

​

closedBy string (RID) required

​

operator Operator required

​

Values of Operator
LEQ

​

LT

​

GEQ

​

GT

​

EQ

​

threshold integer (int64) required

​

Set type to "archived".

archived boolean

​

Set type to "and".

and array of SearchQuery

​

Set type to "or".

or array of SearchQuery

​

Set type to "not".

not SearchQuery

​

Set type to "workspace".

workspace string (RID)

​

Set type to "lockStatus".

lockStatus LockStatus

​

Values of LockStatus
LOCKED

​

UNLOCKED

​

Set type to "datasetRids".

datasetRids array of string (RID)

Applied as a post-filter to the page returned by unified search. A run matches when any requested dataset is in its data scopes. At most 10 dataset RIDs may be provided.

archivedStatuses array of ArchivedStatus deprecated

Default search status is NOT_ARCHIVED if none are provided. Allows for including archived runs in search. Deprecated: use archived filter in search query instead.

Values of ArchivedStatus
NOT_ARCHIVED

​

ARCHIVED

​

includeMatchCount boolean

When true, the response populates totalCount with the number of runs 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 Run

​

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

nextPageToken string

​

totalCount integer

The number of runs 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-runs" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "sort": {
    "isDescending": true
  },
  "pageSize": 1,
  "query": {
    "type": "startTimeInclusive",
    "startTimeInclusive": {
      "secondsSinceEpoch": 1
    }
  }
}'
import requests

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

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/search-runs",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "pageSize": 1,
        "query": {
            "type": "startTimeInclusive",
            "startTimeInclusive": {"secondsSinceEpoch": 1},
        },
    },
)
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-runs",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "sort": {"isDescending": True},
                "pageSize": 1,
                "query": {
                    "type": "startTimeInclusive",
                    "startTimeInclusive": {"secondsSinceEpoch": 1},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "rid": "<run rid>",
      "runNumber": 1,
      "runPrefix": "<run prefix>",
      "title": "<title>",
      "description": "<description>",
      "authorRid": "<user rid>",
      "startTime": {
        "secondsSinceEpoch": 1,
        "offsetNanoseconds": 1
      },
      "endTime": {
        "secondsSinceEpoch": 1,
        "offsetNanoseconds": 1
      },
      "properties": {
        "<key>": "<property value>"
      },
      "typedProperties": {
        "<key>": {
          "type": "stringValue",
          "stringValue": "<property value>"
        }
      },
      "labels": [
        "<label>"
      ],
      "links": [
        {
          "title": "<title>",
          "url": "<url>"
        }
      ],
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "assetDataScopesMap": {
        "<key>": {
          "dataScopes": {
            "<key>": {
              "dataScopeName": "<data source ref name>",
              "dataSource": {
                "type": "dataset",
                "dataset": "<dataset rid>"
              },
              "offset": {
                "seconds": 1,
                "nanos": 1
              },
              "timestampType": "ABSOLUTE",
              "seriesTags": {
                "<key>": "<tag value>"
              }
            }
          }
        }
      },
      "assetDataScopes": [
        {
          "dataScopeName": "<data source ref name>",
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      ],
      "dataSources": {
        "<key>": {
          "dataSource": {
            "type": "dataset",
            "dataset": "<dataset rid>"
          },
          "offset": {
            "seconds": 1,
            "nanos": 1
          },
          "refName": "<data source ref name>",
          "timestampType": "ABSOLUTE",
          "seriesTags": {
            "<key>": "<tag value>"
          }
        }
      },
      "attachments": [
        "<attachment rid>"
      ],
      "asset": "<asset rid>",
      "assets": [
        "<asset rid>"
      ],
      "isArchived": true,
      "lockStatus": "LOCKED"
    }
  ],
  "nextPageToken": "<token>",
  "totalCount": 1
}

Search runs with data review metrics#

POST /scout/v1/search-runs-with-data-review-metrics

Searches for runs that match the given filters and includes metrics for check and violation review status. Defaults to returning un-archived runs, absent an archive filter.

Body

sort SortOptions required

​

Fields of SortOptions
isDescending boolean required

​

field SortField deprecated

Deprecated: use SortKey with SortField union type instead

Values of SortField
NAME

​

ID

​

CREATED_AT

​

START_TIME

​

END_TIME

​

PENDING_CHECK_ALERTS

​

sortKey SortKey

Field to sort by. Includes both field and property-based sorting.

Set type to "field".

field SortField

​

Set type to "property".

property SortProperty

Sort by a property value. Requires a property name, and will always sort null values last.

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.

additionalSortKeys array of SortKeyWithDirection

Optional secondary sort keys for tiebreaking. Applied in order after the primary sortKey. Each entry specifies its own sort key and direction. If empty or absent, ties are broken by UUID only.

Fields of SortKeyWithDirection
sortKey SortKey required

​

isDescending boolean required

​

pageSize integer required

Maximum page size is 10000 for searchRuns, and 1000 for searchRunsWithDataReviewMetrics and searchRunsWithDataReviewSummary. Larger page sizes are rejected.

nextPageToken string

​

query SearchQuery required

​

Set type to "startTimeInclusive".

startTimeInclusive UtcTimestamp deprecated

Deprecated: Use startTime instead

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

Set type to "startTime".

startTime TimeframeFilter

​

Set type to "custom".

custom CustomTimeframeFilter

​

Fields of CustomTimeframeFilter
startTime UtcTimestamp

​

endTime UtcTimestamp

​

Set type to "preset".

preset PresetTimeframeFilter

​

Fields of PresetTimeframeFilter
duration PresetTimeframeDuration required

​

Values of PresetTimeframeDuration
ALL_TIME

​

LAST_DAY

​

LAST_WEEK

​

LAST_MONTH

​

LAST_YEAR

​

Set type to "endTimeInclusive".

endTimeInclusive UtcTimestamp deprecated

Deprecated: Use endTime instead

Set type to "endTime".

endTime TimeframeFilter

​

Set type to "timeRange".

timeRange TimeRangeFilter

​

Fields of TimeRangeFilter
start UtcTimestamp

​

end UtcTimestamp

​

Set type to "createdAt".

createdAt TimeframeFilter

​

Set type to "exactMatch".

exactMatch string

Performs case insensitive exact substring match search on the title.

Set type to "searchText".

searchText string

​

Set type to "asset".

asset string (RID) deprecated

Deprecated: Use getRunsByAsset rather than text-based search

Set type to "assets".

assets AssetsFilter

​

Fields of AssetsFilter
assets array of string (RID)

​

Set type to "isSingleAsset".

isSingleAsset boolean

Search for either only single-asset runs (true), or only multi-asset runs (false).

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 runs 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 runs 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 runs 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 "dataSourceSeriesTag".

dataSourceSeriesTag DataSourceSeriesTag

​

Fields of DataSourceSeriesTag
name string required

​

value string required

​

Set type to "dataSourceRefName".

dataSourceRefName string

​

Set type to "dataSource".

dataSource DataSource deprecated

Deprecated: Use dataSourceRefName, rather than searching directly by 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)

​

Set type to "runNumber".

runNumber integer (int64)

​

Set type to "runPrefix".

runPrefix string

​

Set type to "checkAlertStatesFilter".

checkAlertStatesFilter CheckAlertStatesFilter

Search for runs where its aggregated check alert satisfy a given operator and threshold.

Fields of CheckAlertStatesFilter
checkAlertState CheckAlertState required

​

Set type to "pendingReview".

pendingReview PendingReviewAlertState

​

Set type to "closedWithFurtherAction".

closedWithFurtherAction ClosedWithFurtherActionAlertState

​

Fields of ClosedWithFurtherActionAlertState
comment string required

​

closedBy string (RID) required

​

Set type to "closedWithIgnore".

closedWithIgnore ClosedWithIgnoreAlertState

​

Fields of ClosedWithIgnoreAlertState
comment string required

​

closedBy string (RID) required

​

operator Operator required

​

Values of Operator
LEQ

​

LT

​

GEQ

​

GT

​

EQ

​

threshold integer (int64) required

​

Set type to "archived".

archived boolean

​

Set type to "and".

and array of SearchQuery

​

Set type to "or".

or array of SearchQuery

​

Set type to "not".

not SearchQuery

​

Set type to "workspace".

workspace string (RID)

​

Set type to "lockStatus".

lockStatus LockStatus

​

Values of LockStatus
LOCKED

​

UNLOCKED

​

Set type to "datasetRids".

datasetRids array of string (RID)

Applied as a post-filter to the page returned by unified search. A run matches when any requested dataset is in its data scopes. At most 10 dataset RIDs may be provided.

archivedStatuses array of ArchivedStatus deprecated

Default search status is NOT_ARCHIVED if none are provided. Allows for including archived runs in search. Deprecated: use archived filter in search query instead.

Values of ArchivedStatus
NOT_ARCHIVED

​

ARCHIVED

​

includeMatchCount boolean

When true, the response populates totalCount with the number of runs 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 RunWithDataReviewMetrics

​

Fields of RunWithDataReviewMetrics
run Run

​

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

dataReviewMetrics DataReviewMetrics

​

Fields of DataReviewMetrics
checks DataReviewCheckMetrics

​

Fields of DataReviewCheckMetrics
pendingExecution integer

​

executing integer

​

passingAutomatic integer

​

pendingReview integer

​

closedWithIgnore integer

​

closedWithFurtherAction integer

​

failedToExecutePendingReview integer

​

failedToExecuteClosedWithIgnore integer

​

failedToExecuteClosedWithFurtherAction integer

​

alerts DataReviewAlertMetrics

​

Fields of DataReviewAlertMetrics
pendingReview integer

​

closedWithIgnore integer

​

closedWithFurtherAction integer

​

nextPageToken string

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/search-runs-with-data-review-metrics" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "sort": {
    "isDescending": true
  },
  "pageSize": 1,
  "query": {
    "type": "startTimeInclusive",
    "startTimeInclusive": {
      "secondsSinceEpoch": 1
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/search-runs-with-data-review-metrics",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "pageSize": 1,
        "query": {
            "type": "startTimeInclusive",
            "startTimeInclusive": {"secondsSinceEpoch": 1},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/search-runs-with-data-review-metrics",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "pageSize": 1,
        "query": {
            "type": "startTimeInclusive",
            "startTimeInclusive": {"secondsSinceEpoch": 1},
        },
    },
)
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-runs-with-data-review-metrics",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "sort": {"isDescending": True},
                "pageSize": 1,
                "query": {
                    "type": "startTimeInclusive",
                    "startTimeInclusive": {"secondsSinceEpoch": 1},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "run": {
        "rid": "<run rid>",
        "runNumber": 1,
        "runPrefix": "<run prefix>",
        "title": "<title>",
        "description": "<description>",
        "authorRid": "<user rid>",
        "startTime": {
          "secondsSinceEpoch": 1,
          "offsetNanoseconds": 1
        },
        "endTime": {
          "secondsSinceEpoch": 1,
          "offsetNanoseconds": 1
        },
        "properties": {
          "<key>": "<property value>"
        },
        "typedProperties": {
          "<key>": {
            "type": "stringValue",
            "stringValue": "<property value>"
          }
        },
        "labels": [
          "<label>"
        ],
        "links": [
          {
            "title": "<title>",
            "url": "<url>"
          }
        ],
        "createdAt": "2026-01-01T00:00:00Z",
        "updatedAt": "2026-01-01T00:00:00Z",
        "assetDataScopesMap": {
          "<key>": {
            "dataScopes": {
              "<key>": {
                "dataScopeName": "<data source ref name>",
                "dataSource": {
                  "type": "dataset",
                  "dataset": "<dataset rid>"
                },
                "offset": {
                  "seconds": 1,
                  "nanos": 1
                },
                "timestampType": "ABSOLUTE",
                "seriesTags": {
                  "<key>": "<tag value>"
                }
              }
            }
          }
        },
        "assetDataScopes": [
          {
            "dataScopeName": "<data source ref name>",
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        ],
        "dataSources": {
          "<key>": {
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "refName": "<data source ref name>",
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        },
        "attachments": [
          "<attachment rid>"
        ],
        "asset": "<asset rid>",
        "assets": [
          "<asset rid>"
        ],
        "isArchived": true,
        "lockStatus": "LOCKED"
      },
      "dataReviewMetrics": {
        "checks": {
          "pendingExecution": 1,
          "executing": 1,
          "passingAutomatic": 1,
          "pendingReview": 1,
          "closedWithIgnore": 1,
          "closedWithFurtherAction": 1,
          "failedToExecutePendingReview": 1,
          "failedToExecuteClosedWithIgnore": 1,
          "failedToExecuteClosedWithFurtherAction": 1
        },
        "alerts": {
          "pendingReview": 1,
          "closedWithIgnore": 1,
          "closedWithFurtherAction": 1
        }
      }
    }
  ],
  "nextPageToken": "<token>"
}

Search runs with data review summary#

POST /scout/v1/search-runs-with-data-review-summary

Deprecated: Deprecated in favor of searchRunsWithDataReviewMetrics

Searches for runs that match the given filters and includes a summary of the data review status. Defaults to returning un-archived runs, absent an archive filter.

Body

sort SortOptions required

​

Fields of SortOptions
isDescending boolean required

​

field SortField deprecated

Deprecated: use SortKey with SortField union type instead

Values of SortField
NAME

​

ID

​

CREATED_AT

​

START_TIME

​

END_TIME

​

PENDING_CHECK_ALERTS

​

sortKey SortKey

Field to sort by. Includes both field and property-based sorting.

Set type to "field".

field SortField

​

Set type to "property".

property SortProperty

Sort by a property value. Requires a property name, and will always sort null values last.

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.

additionalSortKeys array of SortKeyWithDirection

Optional secondary sort keys for tiebreaking. Applied in order after the primary sortKey. Each entry specifies its own sort key and direction. If empty or absent, ties are broken by UUID only.

Fields of SortKeyWithDirection
sortKey SortKey required

​

isDescending boolean required

​

pageSize integer required

Maximum page size is 10000 for searchRuns, and 1000 for searchRunsWithDataReviewMetrics and searchRunsWithDataReviewSummary. Larger page sizes are rejected.

nextPageToken string

​

query SearchQuery required

​

Set type to "startTimeInclusive".

startTimeInclusive UtcTimestamp deprecated

Deprecated: Use startTime instead

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

Set type to "startTime".

startTime TimeframeFilter

​

Set type to "custom".

custom CustomTimeframeFilter

​

Fields of CustomTimeframeFilter
startTime UtcTimestamp

​

endTime UtcTimestamp

​

Set type to "preset".

preset PresetTimeframeFilter

​

Fields of PresetTimeframeFilter
duration PresetTimeframeDuration required

​

Values of PresetTimeframeDuration
ALL_TIME

​

LAST_DAY

​

LAST_WEEK

​

LAST_MONTH

​

LAST_YEAR

​

Set type to "endTimeInclusive".

endTimeInclusive UtcTimestamp deprecated

Deprecated: Use endTime instead

Set type to "endTime".

endTime TimeframeFilter

​

Set type to "timeRange".

timeRange TimeRangeFilter

​

Fields of TimeRangeFilter
start UtcTimestamp

​

end UtcTimestamp

​

Set type to "createdAt".

createdAt TimeframeFilter

​

Set type to "exactMatch".

exactMatch string

Performs case insensitive exact substring match search on the title.

Set type to "searchText".

searchText string

​

Set type to "asset".

asset string (RID) deprecated

Deprecated: Use getRunsByAsset rather than text-based search

Set type to "assets".

assets AssetsFilter

​

Fields of AssetsFilter
assets array of string (RID)

​

Set type to "isSingleAsset".

isSingleAsset boolean

Search for either only single-asset runs (true), or only multi-asset runs (false).

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 runs 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 runs 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 runs 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 "dataSourceSeriesTag".

dataSourceSeriesTag DataSourceSeriesTag

​

Fields of DataSourceSeriesTag
name string required

​

value string required

​

Set type to "dataSourceRefName".

dataSourceRefName string

​

Set type to "dataSource".

dataSource DataSource deprecated

Deprecated: Use dataSourceRefName, rather than searching directly by 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)

​

Set type to "runNumber".

runNumber integer (int64)

​

Set type to "runPrefix".

runPrefix string

​

Set type to "checkAlertStatesFilter".

checkAlertStatesFilter CheckAlertStatesFilter

Search for runs where its aggregated check alert satisfy a given operator and threshold.

Fields of CheckAlertStatesFilter
checkAlertState CheckAlertState required

​

Set type to "pendingReview".

pendingReview PendingReviewAlertState

​

Set type to "closedWithFurtherAction".

closedWithFurtherAction ClosedWithFurtherActionAlertState

​

Fields of ClosedWithFurtherActionAlertState
comment string required

​

closedBy string (RID) required

​

Set type to "closedWithIgnore".

closedWithIgnore ClosedWithIgnoreAlertState

​

Fields of ClosedWithIgnoreAlertState
comment string required

​

closedBy string (RID) required

​

operator Operator required

​

Values of Operator
LEQ

​

LT

​

GEQ

​

GT

​

EQ

​

threshold integer (int64) required

​

Set type to "archived".

archived boolean

​

Set type to "and".

and array of SearchQuery

​

Set type to "or".

or array of SearchQuery

​

Set type to "not".

not SearchQuery

​

Set type to "workspace".

workspace string (RID)

​

Set type to "lockStatus".

lockStatus LockStatus

​

Values of LockStatus
LOCKED

​

UNLOCKED

​

Set type to "datasetRids".

datasetRids array of string (RID)

Applied as a post-filter to the page returned by unified search. A run matches when any requested dataset is in its data scopes. At most 10 dataset RIDs may be provided.

archivedStatuses array of ArchivedStatus deprecated

Default search status is NOT_ARCHIVED if none are provided. Allows for including archived runs in search. Deprecated: use archived filter in search query instead.

Values of ArchivedStatus
NOT_ARCHIVED

​

ARCHIVED

​

includeMatchCount boolean

When true, the response populates totalCount with the number of runs 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 RunWithDataReviewSummary

​

Fields of RunWithDataReviewSummary
run Run

​

Fields of Run
rid string (RID)

​

runNumber integer (int64)

​

runPrefix string

​

title string

​

description string

​

authorRid string (RID)

​

startTime UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64)

​

offsetNanoseconds integer (int64)

​

endTime UtcTimestamp

​

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

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

Fields of DataScopes
dataScopes map of DataSourceRefName to DataScope

​

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.

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

Fields of RunDataSource
dataSource DataSource

​

offset Duration

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

Values of LockStatus
LOCKED

​

UNLOCKED

​

dataReviewSummary RunDataReviewSummary

​

Fields of RunDataReviewSummary
evaluationStatus RunDataReviewEvaluationStatus

​

Values of RunDataReviewEvaluationStatus
NO_CHECKS_APPLIED

​

FAILED_TO_EXECUTE

​

EXECUTING

​

PENDING_EXECUTION

​

CLOSED_WITH_FURTHER_ACTION

​

GENERATED_ALERTS

​

CLOSED_WITH_IGNORE

​

PASSING

​

totalIssueCount integer

​

reviewedIssueCount integer

​

issuesWithFurtherActionCount integer

​

executionErrorCount integer

​

nextPageToken string

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/search-runs-with-data-review-summary" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "sort": {
    "isDescending": true
  },
  "pageSize": 1,
  "query": {
    "type": "startTimeInclusive",
    "startTimeInclusive": {
      "secondsSinceEpoch": 1
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/search-runs-with-data-review-summary",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "pageSize": 1,
        "query": {
            "type": "startTimeInclusive",
            "startTimeInclusive": {"secondsSinceEpoch": 1},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/search-runs-with-data-review-summary",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "sort": {"isDescending": True},
        "pageSize": 1,
        "query": {
            "type": "startTimeInclusive",
            "startTimeInclusive": {"secondsSinceEpoch": 1},
        },
    },
)
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-runs-with-data-review-summary",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "sort": {"isDescending": True},
                "pageSize": 1,
                "query": {
                    "type": "startTimeInclusive",
                    "startTimeInclusive": {"secondsSinceEpoch": 1},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "run": {
        "rid": "<run rid>",
        "runNumber": 1,
        "runPrefix": "<run prefix>",
        "title": "<title>",
        "description": "<description>",
        "authorRid": "<user rid>",
        "startTime": {
          "secondsSinceEpoch": 1,
          "offsetNanoseconds": 1
        },
        "endTime": {
          "secondsSinceEpoch": 1,
          "offsetNanoseconds": 1
        },
        "properties": {
          "<key>": "<property value>"
        },
        "typedProperties": {
          "<key>": {
            "type": "stringValue",
            "stringValue": "<property value>"
          }
        },
        "labels": [
          "<label>"
        ],
        "links": [
          {
            "title": "<title>",
            "url": "<url>"
          }
        ],
        "createdAt": "2026-01-01T00:00:00Z",
        "updatedAt": "2026-01-01T00:00:00Z",
        "assetDataScopesMap": {
          "<key>": {
            "dataScopes": {
              "<key>": {
                "dataScopeName": "<data source ref name>",
                "dataSource": {
                  "type": "dataset",
                  "dataset": "<dataset rid>"
                },
                "offset": {
                  "seconds": 1,
                  "nanos": 1
                },
                "timestampType": "ABSOLUTE",
                "seriesTags": {
                  "<key>": "<tag value>"
                }
              }
            }
          }
        },
        "assetDataScopes": [
          {
            "dataScopeName": "<data source ref name>",
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        ],
        "dataSources": {
          "<key>": {
            "dataSource": {
              "type": "dataset",
              "dataset": "<dataset rid>"
            },
            "offset": {
              "seconds": 1,
              "nanos": 1
            },
            "refName": "<data source ref name>",
            "timestampType": "ABSOLUTE",
            "seriesTags": {
              "<key>": "<tag value>"
            }
          }
        },
        "attachments": [
          "<attachment rid>"
        ],
        "asset": "<asset rid>",
        "assets": [
          "<asset rid>"
        ],
        "isArchived": true,
        "lockStatus": "LOCKED"
      },
      "dataReviewSummary": {
        "evaluationStatus": "NO_CHECKS_APPLIED",
        "totalIssueCount": 1,
        "reviewedIssueCount": 1,
        "issuesWithFurtherActionCount": 1,
        "executionErrorCount": 1
      }
    }
  ],
  "nextPageToken": "<token>"
}

Archive run#

PUT /scout/v1/archive-run/{rid}

Soft-deletes a run. Runs still exist in the database but are no longer visible.

Path parameters

rid string (RID) required

​

Query parameters

includeLinkedWorkbooks boolean

If true, all workbooks that are linked to the run will be archived as well. Defaults to false.

Response

The body is a boolean.

Request

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

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

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v1/archive-run/<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.put(
            "https://api.gov.nominal.io/api/scout/v1/archive-run/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

true

Unarchive run#

PUT /scout/v1/unarchive-run/{rid}

Path parameters

rid string (RID) required

​

Query parameters

includeLinkedWorkbooks boolean

If true, all auto-archived workbooks that are linked to run will be unarchived as well. Defaults to false.

Response

The body is a boolean.

Request

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

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

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v1/unarchive-run/<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.put(
            "https://api.gov.nominal.io/api/scout/v1/unarchive-run/<rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

true

Archive runs#

POST /scout/v1/archive-run

Body

rids array of string (RID)

​

includeLinkedWorkbooks boolean

If true, all auto-archived workbooks that are linked to run 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/archive-run" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "rids": [
    "<run rid>"
  ],
  "includeLinkedWorkbooks": true
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/archive-run",
    headers={"Authorization": "Bearer <api key>"},
    json={"rids": ["<run rid>"], "includeLinkedWorkbooks": True},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/archive-run",
    headers={"Authorization": "Bearer <api key>"},
    json={"rids": ["<run rid>"], "includeLinkedWorkbooks": True},
)
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-run",
            headers={"Authorization": "Bearer <api key>"},
            json={"rids": ["<run rid>"], "includeLinkedWorkbooks": True},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Unarchive runs#

POST /scout/v1/unarchive-run

Body

rids array of string (RID)

​

includeLinkedWorkbooks boolean

If true, all auto-archived workbooks that are linked to run 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-run" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "rids": [
    "<run rid>"
  ],
  "includeLinkedWorkbooks": true
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/unarchive-run",
    headers={"Authorization": "Bearer <api key>"},
    json={"rids": ["<run rid>"], "includeLinkedWorkbooks": True},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/unarchive-run",
    headers={"Authorization": "Bearer <api key>"},
    json={"rids": ["<run rid>"], "includeLinkedWorkbooks": True},
)
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-run",
            headers={"Authorization": "Bearer <api key>"},
            json={"rids": ["<run rid>"], "includeLinkedWorkbooks": True},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Get data source ref name and type list#

GET /scout/v1/data-source-ref-names-and-types

Returns the list of ref names that are in use across specified and authorized workspaces.

Query parameters

workspaces array of string (RID)

If not empty, will return only the ref names that are associated with the supplied workspaces. If empty will return all ref names for workspaces that the user is permitted to see.

Response

The body is an array of RefNameAndType.

Fields of RefNameAndType
name string

​

type DataSourceType

​

Values of DataSourceType
DATASET

​

CONNECTION

​

LOGSET

​

VIDEO

​

SPATIAL

​

Request

curl "https://api.gov.nominal.io/api/scout/v1/data-source-ref-names-and-types" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v1/data-source-ref-names-and-types",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v1/data-source-ref-names-and-types",
    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.get(
            "https://api.gov.nominal.io/api/scout/v1/data-source-ref-names-and-types",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

[
  {
    "name": "<data source ref name>",
    "type": "DATASET"
  }
]

Update run attachment#

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

Updates the attachments associated with a run.

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/run/<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/run/<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/run/<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/run/<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.

Errors#

Errors shows how these errors are sent.

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

Status

Name

Notes

400

AssetNotPresentInRun

400

BothAssetAndDataSourcesSpecified

400

InvalidConnectionRid

400

InvalidDataSourceRefNameType

400

InvalidDatasetRid

400

InvalidLogSetRid

400

InvalidVideoRid

400

RunBoundsInverted

400

RunPropertiesHaveNullValues

400

UnspecifiedAssetForMultiAssetRun

404

RunNotFound

404

RunNotFoundById

409

RefNamesAlreadyUsed

409

RunsLocked

A run under a retention lock is immutable. The runs named here must be unlocked before any of their metadata, data sources, or attachments can be updated. Batch updates are rejected in full rather than partially applied, so this lists every locked run in the request.

Types#

ArchivedStatus#

NOT_ARCHIVED

​

ARCHIVED

​

AssetsFilter#

returns runs that match any of the provided assets.

assets array of string (RID)

​

CheckAlertState#

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

pendingReview PendingReviewAlertState

​

closedWithFurtherAction ClosedWithFurtherActionAlertState

​

closedWithIgnore ClosedWithIgnoreAlertState

​

CheckAlertStatesFilter#

checkAlertState CheckAlertState required

​

operator Operator required

​

threshold integer (int64) required

​

ClosedWithFurtherActionAlertState#

comment string required

​

closedBy string (RID) required

​

ClosedWithIgnoreAlertState#

comment string required

​

closedBy string (RID) required

​

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

​

CreateRunDataSource#

For write requests, we want to allow for optional fields

dataSource DataSource deprecated

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence. Deprecated: Use dataSourceRid instead.

dataSourceRid string (RID)

One of dataSource and dataSourceRid must be present. dataSourceRid takes precedence.

offset Duration

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

CreateRunRequest#

title string required

​

description string required

​

startTime UtcTimestamp required

​

endTime UtcTimestamp

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

labels array of string

​

links array of Link

​

runPrefix string

​

dataSources map of DataSourceRefName to CreateRunDataSource

​

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

workspace string (RID)

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

CustomTimeframeFilter#

startTime UtcTimestamp

​

endTime UtcTimestamp

​

DataReviewAlertMetrics#

pendingReview integer required

​

closedWithIgnore integer required

​

closedWithFurtherAction integer required

​

DataReviewCheckMetrics#

pendingExecution integer required

​

executing integer required

​

passingAutomatic integer required

​

pendingReview integer required

​

closedWithIgnore integer required

​

closedWithFurtherAction integer required

​

failedToExecutePendingReview integer required

​

failedToExecuteClosedWithIgnore integer required

​

failedToExecuteClosedWithFurtherAction integer required

​

DataReviewMetrics#

checks DataReviewCheckMetrics required

​

alerts DataReviewAlertMetrics required

​

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.

DataScopes#

dataScopes map of DataSourceRefName to DataScope

​

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)

​

DataSourceSeriesTag#

name string required

​

value string required

​

DataSourceType#

DATASET

​

CONNECTION

​

LOGSET

​

VIDEO

​

SPATIAL

​

Duration#

seconds integer (int64) required

​

nanos integer (int64) required

​

LabelsFilter#

operator SetOperator required

​

labels array of string

​

LockStatus#

Whether the run is locked, preventing any changes from being made.

LOCKED

​

UNLOCKED

​

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

​

Operator#

LEQ

​

LT

​

GEQ

​

GT

​

EQ

​

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

​

PendingReviewAlertState#

An empty JSON object, {}.

PresetTimeframeDuration#

ALL_TIME

​

LAST_DAY

​

LAST_WEEK

​

LAST_MONTH

​

LAST_YEAR

​

PresetTimeframeFilter#

duration PresetTimeframeDuration required

​

PropertiesFilter#

name string required

​

values array of string

​

Property#

name string required

​

value string required

​

PropertyComparisonOperator#

EQ

​

NEQ

​

GT

​

GTE

​

LT

​

LTE

​

RefNameAndType#

Scoped to the org-level, intended to help the frontend prevent users from submitting invalid ref names, ex. using a dataset ref name for a connection data source

name string required

​

type DataSourceType required

​

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

​

Run#

rid string (RID) required

​

runNumber integer (int64) required

​

runPrefix string

​

title string required

​

description string required

​

authorRid string (RID)

​

startTime UtcTimestamp required

​

endTime UtcTimestamp

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

labels array of string

​

links array of Link

​

createdAt string (date-time) required

​

updatedAt string (date-time) required

​

assetDataScopesMap map of AssetRid to DataScopes

Map from asset RIDs to their data scopes

assetDataScopes array of DataScope deprecated

Deprecated: Use assetDataScopesMap instead. Will be empty for multi-asset runs.

dataSources map of DataSourceRefName to RunDataSource

Map from refnames to run data sources. Will be empty for multi-asset runs.

attachments array of string (RID)

​

asset string (RID) deprecated

Deprecated: Use assets

assets array of string (RID)

​

isArchived boolean required

​

lockStatus LockStatus

When absent, defaults to UNLOCKED for back-compat.

RunDataReviewEvaluationStatus#

NO_CHECKS_APPLIED

​

FAILED_TO_EXECUTE

​

EXECUTING

​

PENDING_EXECUTION

​

CLOSED_WITH_FURTHER_ACTION

​

GENERATED_ALERTS

​

CLOSED_WITH_IGNORE

​

PASSING

​

RunDataReviewSummary#

evaluationStatus RunDataReviewEvaluationStatus required

​

totalIssueCount integer required

​

reviewedIssueCount integer required

​

issuesWithFurtherActionCount integer required

​

executionErrorCount integer required

​

RunDataSource#

For read requests, we want to require all fields

dataSource DataSource required

​

offset Duration required

This offset is used for small time-sync corrections. Notably, it is not the offset to move a relative data source to the start of the run.

refName string required

Included for convenience, duplicated from the key of the map

timestampType WeakTimestampType required

​

seriesTags map of TagName to string

Used to resolve logical series for this data source.

RunWithDataReviewMetrics#

run Run required

​

dataReviewMetrics DataReviewMetrics required

​

RunWithDataReviewSummary#

run Run required

​

dataReviewSummary RunDataReviewSummary required

​

SearchQuery#

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

startTimeInclusive UtcTimestamp deprecated

Deprecated: Use startTime instead

startTime TimeframeFilter

​

endTimeInclusive UtcTimestamp deprecated

Deprecated: Use endTime instead

endTime TimeframeFilter

​

timeRange TimeRangeFilter

​

createdAt TimeframeFilter

​

exactMatch string

Performs case insensitive exact substring match search on the title.

searchText string

​

asset string (RID) deprecated

Deprecated: Use getRunsByAsset rather than text-based search

assets AssetsFilter

​

isSingleAsset boolean

Search for either only single-asset runs (true), or only multi-asset runs (false).

label string deprecated

Deprecated: use labels instead

labels LabelsFilter

​

property Property deprecated

Deprecated: use properties

propertyKey string

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

properties PropertiesFilter

​

numericProperty NumericPropertyPredicate

Matches runs using a numeric property comparison.

numericPropertyRange NumericPropertyRangePredicate

Matches runs using an inclusive numeric property range.

dataSourceSeriesTag DataSourceSeriesTag

​

dataSourceRefName string

​

dataSource DataSource deprecated

Deprecated: Use dataSourceRefName, rather than searching directly by DataSource.

runNumber integer (int64)

​

runPrefix string

​

checkAlertStatesFilter CheckAlertStatesFilter

Search for runs where its aggregated check alert satisfy a given operator and threshold.

archived boolean

​

and array of SearchQuery

​

or array of SearchQuery

​

not SearchQuery

​

workspace string (RID)

​

lockStatus LockStatus

​

datasetRids array of string (RID)

Applied as a post-filter to the page returned by unified search. A run matches when any requested dataset is in its data scopes. At most 10 dataset RIDs may be provided.

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, {}.

SortField#

NAME

​

ID

​

CREATED_AT

​

START_TIME

​

END_TIME

​

PENDING_CHECK_ALERTS

​

SortKey#

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

field SortField

​

property SortProperty

Sort by a property value. Requires a property name, and will always sort null values last.

numericProperty SortProperty

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

SortKeyWithDirection#

sortKey SortKey required

​

isDescending boolean required

​

SortOptions#

isDescending boolean required

​

field SortField deprecated

Deprecated: use SortKey with SortField union type instead

sortKey SortKey

Field to sort by. Includes both field and property-based sorting.

additionalSortKeys array of SortKeyWithDirection

Optional secondary sort keys for tiebreaking. Applied in order after the primary sortKey. Each entry specifies its own sort key and direction. If empty or absent, ties are broken by UUID only.

SortProperty#

name string required

​

TimeframeFilter#

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

custom CustomTimeframeFilter

​

preset PresetTimeframeFilter

​

TimeRangeFilter#

searches for runs that have at least some intersection with the specified range.

start UtcTimestamp

​

end UtcTimestamp

​

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

​

UtcTimestamp#

secondsSinceEpoch integer (int64) required

​

offsetNanoseconds integer (int64)

​

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.