Catalog service#

The Catalog Service provides the ability to query for information about Datasets that are stored in the Nominal platform. A Dataset is the Nominal representation of data that has been uploaded to Nominal via a file, primarily CSV.

OpenAPI file: CatalogService.json

Endpoints#

Get enriched dataset#

GET /catalog/v1/datasets/{datasetUuid}

Path parameters

datasetUuid string (UUID) required

​

Response

rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

Values of RetentionPolicyType
KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Set type to "influx".

influx Influx2ConnectionDetails

​

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Set type to "nominal".

nominal NominalConnectionDetails

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

connectionStatus ConnectionStatus

​

Fields of ConnectionStatus
isConnected boolean

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset uuid>" \
  -H "Authorization: Bearer <api key>"
import requests

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

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


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "uuid": "<uuid>",
  "name": "<name>",
  "description": "<description>",
  "displayName": "<display name>",
  "metadata": {
    "<key>": "<value>"
  },
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "ingestDate": "2026-01-01T00:00:00Z",
  "lastIngestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": "IN_PROGRESS",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "lastIngestStatus": {
    "type": "success",
    "success": {}
  },
  "retentionPolicy": {
    "type": "KEEP_UNTIL_EXPIRY",
    "expiryDays": 1
  },
  "source": "<source>",
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "timestampType": "ABSOLUTE",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "granularity": "NANOSECONDS",
  "allowStreaming": true,
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "migratedFromConnectionRid": "<connection rid>",
  "externalConnectionMetadata": {
    "connectionDetails": {
      "type": "timescale",
      "timescale": {
        "database": "<database>",
        "host": "<host>",
        "port": 1,
        "username": "<username>",
        "passwordSecretRid": "<secret rid>"
      }
    },
    "connectionStatus": {
      "isConnected": true
    },
    "limits": {
      "maxQueryRange": {
        "unit": "HOURS",
        "count": 1
      }
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Get enriched datasets#

POST /catalog/v1/datasets/multiple

Body

datasetRids array of string (RID)

​

Response

The body is an array of EnrichedDataset.

Fields of EnrichedDataset
rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

channelConfig ChannelConfig

​

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Set type to "inProgress".

inProgress InProgressResult

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

end Timestamp

​

type datasource.TimestampType

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

connectionStatus ConnectionStatus

​

limits LimitsConfig

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

commit Commit

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/multiple" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "datasetRids": [
    "<dataset rids>"
  ]
}'
import requests

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

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


asyncio.run(main())

Response: 200

[
  {
    "rid": "<rid>",
    "uuid": "<uuid>",
    "name": "<name>",
    "description": "<description>",
    "displayName": "<display name>",
    "metadata": {
      "<key>": "<value>"
    },
    "handle": {
      "type": "s3",
      "s3": {
        "bucket": "<bucket>",
        "key": "<key>"
      }
    },
    "ingestDate": "2026-01-01T00:00:00Z",
    "lastIngestedAt": "2026-01-01T00:00:00Z",
    "ingestStatus": "IN_PROGRESS",
    "originMetadata": {
      "path": "<path>",
      "xSeriesIsAbsolute": true,
      "schemaDirectivePath": "<schema directive path>",
      "xSeriesColumnName": "<x series column name>",
      "xSeriesTimeUnit": "DAYS",
      "timestampMetadata": {
        "seriesName": "<series name>",
        "timestampType": {
          "type": "relative",
          "relative": {
            "timeUnit": "DAYS",
            "offset": "2026-01-01T00:00:00Z"
          }
        }
      },
      "channelConfig": {
        "prefixTreeDelimiter": "<prefix tree delimiter>"
      }
    },
    "lastIngestStatus": {
      "type": "success",
      "success": {}
    },
    "retentionPolicy": {
      "type": "KEEP_UNTIL_EXPIRY",
      "expiryDays": 1
    },
    "source": "<source>",
    "bounds": {
      "start": {
        "seconds": 1,
        "nanos": 1
      },
      "end": {
        "seconds": 1,
        "nanos": 1
      },
      "type": "RELATIVE"
    },
    "timestampType": "ABSOLUTE",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "granularity": "NANOSECONDS",
    "allowStreaming": true,
    "isArchived": true,
    "defaultGroupByAndAggregationConfig": {
      "numericAggregation": {
        "type": "sum",
        "sum": {}
      }
    },
    "migratedFromConnectionRid": "<connection rid>",
    "externalConnectionMetadata": {
      "connectionDetails": {
        "type": "timescale",
        "timescale": {
          "database": "<database>",
          "host": "<host>",
          "port": 1,
          "username": "<username>",
          "passwordSecretRid": "<secret rid>"
        }
      },
      "connectionStatus": {
        "isConnected": true
      },
      "limits": {
        "maxQueryRange": {
          "unit": "HOURS",
          "count": 1
        }
      }
    },
    "derivedDefinition": {
      "spec": {
        "type": "asset",
        "asset": {
          "rid": {
            "type": "literal",
            "literal": "<literal>"
          }
        }
      },
      "commit": {
        "id": "<commit id>",
        "resourceRid": "<resource rid>",
        "parentCommit": "<commit id>",
        "mergeParentCommit": "<commit id>",
        "message": "<message>",
        "isWorkingState": true,
        "committedBy": "<user rid>",
        "committedAt": "2026-01-01T00:00:00Z"
      }
    },
    "channelSearchSplitTagKeys": [
      "<tag name>"
    ]
  }
]

Get dataset#

GET /catalog/v1/datasets-simple/{datasetUuid}

Path parameters

datasetUuid string (UUID) required

​

Response

rid string (RID)

​

name string

​

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

description string

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

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

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

allowStreaming boolean

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/<dataset uuid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/<dataset uuid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "description": "<description>",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "timestampType": "ABSOLUTE",
  "allowStreaming": true,
  "granularity": "NANOSECONDS",
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Get datasets#

POST /catalog/v1/datasets-simple/multiple

Body

datasetRids array of string (RID)

​

Response

The body is an array of catalog.Dataset.

Fields of catalog.Dataset
rid string (RID)

​

name string

​

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

description string

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

channelConfig ChannelConfig

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

end Timestamp

​

type datasource.TimestampType

​

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

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

allowStreaming boolean

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

commit Commit

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/multiple" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "datasetRids": [
    "<dataset rids>"
  ]
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/multiple",
    headers={"Authorization": "Bearer <api key>"},
    json={"datasetRids": ["<dataset rids>"]},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

[
  {
    "rid": "<rid>",
    "name": "<name>",
    "handle": {
      "type": "s3",
      "s3": {
        "bucket": "<bucket>",
        "key": "<key>"
      }
    },
    "description": "<description>",
    "originMetadata": {
      "path": "<path>",
      "xSeriesIsAbsolute": true,
      "schemaDirectivePath": "<schema directive path>",
      "xSeriesColumnName": "<x series column name>",
      "xSeriesTimeUnit": "DAYS",
      "timestampMetadata": {
        "seriesName": "<series name>",
        "timestampType": {
          "type": "relative",
          "relative": {
            "timeUnit": "DAYS",
            "offset": "2026-01-01T00:00:00Z"
          }
        }
      },
      "channelConfig": {
        "prefixTreeDelimiter": "<prefix tree delimiter>"
      }
    },
    "bounds": {
      "start": {
        "seconds": 1,
        "nanos": 1
      },
      "end": {
        "seconds": 1,
        "nanos": 1
      },
      "type": "RELATIVE"
    },
    "properties": {
      "<key>": "<property value>"
    },
    "typedProperties": {
      "<key>": {
        "type": "stringValue",
        "stringValue": "<property value>"
      }
    },
    "labels": [
      "<label>"
    ],
    "timestampType": "ABSOLUTE",
    "allowStreaming": true,
    "granularity": "NANOSECONDS",
    "isArchived": true,
    "defaultGroupByAndAggregationConfig": {
      "numericAggregation": {
        "type": "sum",
        "sum": {}
      }
    },
    "derivedDefinition": {
      "spec": {
        "type": "asset",
        "asset": {
          "rid": {
            "type": "literal",
            "literal": "<literal>"
          }
        }
      },
      "commit": {
        "id": "<commit id>",
        "resourceRid": "<resource rid>",
        "parentCommit": "<commit id>",
        "mergeParentCommit": "<commit id>",
        "message": "<message>",
        "isWorkingState": true,
        "committedBy": "<user rid>",
        "committedAt": "2026-01-01T00:00:00Z"
      }
    },
    "channelSearchSplitTagKeys": [
      "<tag name>"
    ]
  }
]

Get datasets with external connection config#

POST /catalog/v1/datasets-simple/external-config

Gets the subset of dataset RIDs that currently have external connection config attached.

Body

datasetRids array of string (RID)

​

Response

The body is an array of string (RID).

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/external-config" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "datasetRids": [
    "<dataset rids>"
  ]
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/external-config",
    headers={"Authorization": "Bearer <api key>"},
    json={"datasetRids": ["<dataset rids>"]},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets-simple/external-config",
    headers={"Authorization": "Bearer <api key>"},
    json={"datasetRids": ["<dataset rids>"]},
)
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/catalog/v1/datasets-simple/external-config",
            headers={"Authorization": "Bearer <api key>"},
            json={"datasetRids": ["<dataset rids>"]},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

[
  "<dataset rid>"
]

Register external connection config#

POST /catalog/v1/datasets/external-config

Registers or updates external connection configuration for an existing dataset.

Body

datasetRid string (RID) required

​

connectionDetails ConnectionDetails required

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Fields of TimescaleConnectionDetails
database string required

​

host string required

​

port integer required

​

username string required

This is also the reference to the secret containing the password

passwordSecretRid string (RID) required

Secret Rid of password secret stored in Secrets Service.

Set type to "influx".

influx Influx2ConnectionDetails

​

Fields of Influx2ConnectionDetails
host string required

​

port integer required

​

headers map of string to HeaderValue

A map of header name to value

Set type to "plain".

plain string

​

Set type to "secretRid".

secretRid string (RID)

​

org string required

​

tokenSecretRid string (RID) required

Secret Rid of token secret stored in Secrets Service.

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Fields of Influx1ConnectionDetails
host string required

​

port integer required

​

headers map of string to HeaderValue

A map of header name to value

credentials PasswordCredentials

​

Fields of PasswordCredentials
username string required

​

passwordSecretRid string (RID) required

Secret Rid of password secret stored in Secrets Service.

Set type to "nominal".

nominal NominalConnectionDetails

​

Fields of NominalConnectionDetails
nominalDataSourceRid string (RID) required

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Fields of TimestreamConnectionDetails
nominalRoleArn string required

The role ARN owned by Nominal that has permission to assume the externalRoleArn.

nominalRoleRegion string required

AWS region that contains the Nominal role.

externalRegion string required

AWS region that contains the Timestream instance.

externalRoleArn string required

The role ARN used to make queries to Timestream. This role is owned by the AWS account that owns the Timestream instance.

database string required

Database inside of the Timestream instance to connect to.

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Fields of VisualCrossingConnectionDetails
apiKeySecretRid string (RID) required

Secret Rid of API key stored in Secrets Service.

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

Fields of BigQueryConnectionDetails
region string required

The region of the BigQuery Project (e.g. “us-east1”)

project string required

The name of the BigQuery Project

dataset string required

The name of the dataset within the project

table string required

The name of the table within the dataset

serviceAccountKeySecretRid string (RID) required

Secret Rid of service account key stored in Secrets Service.

metadata map of string to string

Metadata information about the external connection configuration.

requiredTagNames array of string

Additional tag names that are required to construct a fully qualified series.

availableTagValues map of TagName to array of string

Optional externally supplied tag values. In most cases these are indexed by scraping.

scraping ScrapingConfig

​

Set type to "influx".

influx InfluxScrapingConfig

​

Fields of InfluxScrapingConfig
filter array of InfluxScrapingFilter

Filters are ANDed together

Set type to "not".

not InfluxScrapingFilter

​

Set type to "matchBucket".

matchBucket array of string

Match any of the specified buckets

Set type to "matchMeasurement".

matchMeasurement array of string

Match any of the specified measurements

seriesArchetypeConstruction InfluxSeriesArchetypeConstructionConfig required

​

Fields of InfluxSeriesArchetypeConstructionConfig
channelNameComponents array of InfluxChannelNameComponent

​

Set type to "bucket".

bucket Empty

​

Set type to "measurement".

measurement Empty

​

Set type to "field".

field Empty

​

separator string required

​

Set type to "nominal".

nominal NominalScrapingConfig

​

Fields of NominalScrapingConfig
channelNameComponents array of NominalChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name.

Set type to "channel".

channel Empty

​

Set type to "valueOfTagWithName".

valueOfTagWithName string

The value of the specified TagName will be used. If the tag is not present, it will be omitted.

separator string required

​

Set type to "timestream".

timestream TimestreamScrapingConfig

​

Fields of TimestreamScrapingConfig
filter array of TimestreamScrapingFilter

In order for data to be picked up by the scraper, it must match all filters in this list.

Set type to "matchTable".

matchTable array of string

Match any of the specified tables in the database.

channelNameComponents array of TimestreamChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name.

Set type to "table".

table Empty

​

Set type to "measure".

measure Empty

​

Set type to "attribute".

attribute Empty

​

Set type to "valueOfTagWithName".

valueOfTagWithName string

The value of the specified TagName will be used. If the tag is not present, it will be omitted.

separator string required

​

maxLookBackPeriodHours integer

The maximum time in hours to look back over series data to find unique measure and tag combinations. If not specified, the default look back period will be used.

Set type to "timescale".

timescale PivotedTimescaleScrapingConfig

​

Fields of PivotedTimescaleScrapingConfig
filter array of TimescaleScrapingFilter

In order for data to be picked up by the scraper, it must match all filters in this list. To exclude chunks of data, it’s possible to use a not filter.

Set type to "not".

not TimescaleScrapingFilter

​

Set type to "matchTable".

matchTable array of string

Match any of the specified tables in the database.

Set type to "matchSchema".

matchSchema array of string

Match any of the specified schemas in the database.

timeColumn string required

The name of the column that holds the timestamp.

nameColumn string required

The name of the column that holds the series name.

valueColumn string required

The name of the column that holds the series values.

dimensionColumns array of string

The names of the columns that comprise a dimension. They should have a database index for efficient filtering. We do not discover dimensions based on hypertable schema because they are not necessarily configured properly.

channelNameComponents array of PivotedTimescaleChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name.

Set type to "table".

table Empty

​

Set type to "name".

name Empty

The value of the name column.

separator string required

​

Set type to "visualCrossing".

visualCrossing VisualCrossingScrapingConfig

​

Fields of VisualCrossingScrapingConfig
availableSeries array of VisualCrossingAvailableSeries deprecated

list of available channels Deprecated: No longer used for anything

Fields of VisualCrossingAvailableSeries
channel string required

​

unit string

​

description string

​

type VisualCrossingType required

​

Values of VisualCrossingType
DOUBLE

​

STRING

​

Set type to "bigQuery".

bigQuery BigQueryScrapingConfig

​

Fields of BigQueryScrapingConfig
timeColumn string required

The name of the column that holds the timestamp.

tagColumns array of string

The name of the columns that should be interpreted as tag columns

channelNameComponents BigQueryChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name. By default, we don’t add anything to the column name.

Fields of BigQueryChannelNameComponent
includeProject boolean required

Whether to include the project name in the channel name.

includeDataset boolean required

Whether to include the dataset name in the channel name.

includeTable boolean required

Whether to include the table name in the channel name.

separator string

The separator that delimits the parts of the channel name. If ommitted, the default is a “.”.

Set type to "api".

api ApiScrapingConfig

​

Set type to "allChannels".

allChannels AllChannelsConnectionsScrapingConfig

​

Set type to "channelAllowList".

channelAllowList ChannelAllowListConnectionsScrapingConfig

​

Fields of ChannelAllowListConnectionsScrapingConfig
channelAllowList array of string

Only channels in this set will be scraped. Must not be empty.

Set type to "channelBlockList".

channelBlockList ChannelBlockListConnectionsScrapingConfig

​

Fields of ChannelBlockListConnectionsScrapingConfig
channelBlockList array of string

Only channels not in this set will be scraped. Must not be empty.

shouldScrape boolean required

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

Fields of connection.api.Duration
unit TemporalUnit required

​

Values of TemporalUnit
HOURS

​

DAYS

​

WEEKS

​

count integer required

​

Response

rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

Values of RetentionPolicyType
KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Set type to "influx".

influx Influx2ConnectionDetails

​

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Set type to "nominal".

nominal NominalConnectionDetails

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

connectionStatus ConnectionStatus

​

Fields of ConnectionStatus
isConnected boolean

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/external-config" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "datasetRid": "<dataset rid>",
  "connectionDetails": {
    "type": "timescale",
    "timescale": {
      "database": "<database>",
      "host": "<host>",
      "port": 1,
      "username": "<username>",
      "passwordSecretRid": "<secret rid>"
    }
  },
  "shouldScrape": true
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/external-config",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "datasetRid": "<dataset rid>",
        "connectionDetails": {
            "type": "timescale",
            "timescale": {
                "database": "<database>",
                "host": "<host>",
                "port": 1,
                "username": "<username>",
                "passwordSecretRid": "<secret rid>",
            },
        },
        "shouldScrape": True,
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/external-config",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "datasetRid": "<dataset rid>",
        "connectionDetails": {
            "type": "timescale",
            "timescale": {
                "database": "<database>",
                "host": "<host>",
                "port": 1,
                "username": "<username>",
                "passwordSecretRid": "<secret rid>",
            },
        },
        "shouldScrape": 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.post(
            "https://api.gov.nominal.io/api/catalog/v1/datasets/external-config",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "datasetRid": "<dataset rid>",
                "connectionDetails": {
                    "type": "timescale",
                    "timescale": {
                        "database": "<database>",
                        "host": "<host>",
                        "port": 1,
                        "username": "<username>",
                        "passwordSecretRid": "<secret rid>",
                    },
                },
                "shouldScrape": True,
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "uuid": "<uuid>",
  "name": "<name>",
  "description": "<description>",
  "displayName": "<display name>",
  "metadata": {
    "<key>": "<value>"
  },
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "ingestDate": "2026-01-01T00:00:00Z",
  "lastIngestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": "IN_PROGRESS",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "lastIngestStatus": {
    "type": "success",
    "success": {}
  },
  "retentionPolicy": {
    "type": "KEEP_UNTIL_EXPIRY",
    "expiryDays": 1
  },
  "source": "<source>",
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "timestampType": "ABSOLUTE",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "granularity": "NANOSECONDS",
  "allowStreaming": true,
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "migratedFromConnectionRid": "<connection rid>",
  "externalConnectionMetadata": {
    "connectionDetails": {
      "type": "timescale",
      "timescale": {
        "database": "<database>",
        "host": "<host>",
        "port": 1,
        "username": "<username>",
        "passwordSecretRid": "<secret rid>"
      }
    },
    "connectionStatus": {
      "isConnected": true
    },
    "limits": {
      "maxQueryRange": {
        "unit": "HOURS",
        "count": 1
      }
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Get dataset file#

GET /catalog/v1/dataset/{datasetRid}/file/{fileId}

Path parameters

datasetRid string (RID) required

​

fileId string (UUID) required

​

Response

id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

Request

curl "https://api.gov.nominal.io/api/catalog/v1/dataset/<dataset rid>/file/<file id>" \
  -H "Authorization: Bearer <api key>"
import requests

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

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


asyncio.run(main())

Response: 200

{
  "id": "<dataset file id>",
  "datasetRid": "<dataset rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "fileSizeBytes": 1,
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "uploadedAt": "2026-01-01T00:00:00Z",
  "ingestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": {
    "type": "success",
    "success": {}
  },
  "timestampMetadata": {
    "seriesName": "<series name>",
    "timestampType": {
      "type": "relative",
      "relative": {
        "timeUnit": "DAYS",
        "offset": "2026-01-01T00:00:00Z"
      }
    }
  },
  "ingestTagMetadata": {
    "tagColumns": {
      "<key>": "<column name>"
    },
    "additionalFileTags": {
      "<key>": "<tag value>"
    }
  },
  "originFilePaths": [
    "<origin file paths>"
  ],
  "ingestJobRid": "<ingest job rid>",
  "ingestTransformRid": "<ingest transform rid>",
  "deletedAt": "2026-01-01T00:00:00Z",
  "metadata": {
    "type": "video",
    "video": {
      "timestampManifest": {
        "type": "mcap",
        "mcap": {
          "mcapChannelLocator": {
            "type": "topic",
            "topic": "<mcap channel topic>"
          }
        }
      },
      "segmentMetadata": {
        "numFrames": 1,
        "numSegments": 1,
        "scaleFactor": 1,
        "mediaDurationSeconds": 1,
        "mediaFrameRate": 1
      }
    }
  }
}

Batch get dataset files#

POST /catalog/v1/dataset-files/batchGet

Returns dataset files for the given file IDs within a single dataset. Only returns files that exist and belong to the specified dataset. Useful for checking ingestion status of many files at once.

Body

datasetRid string (RID) required

​

fileIds array of string (UUID)

​

Response

The body is a map of DatasetFileId to DatasetFile.

Fields of DatasetFile
id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/dataset-files/batchGet" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "datasetRid": "<dataset rid>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/dataset-files/batchGet",
    headers={"Authorization": "Bearer <api key>"},
    json={"datasetRid": "<dataset rid>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/dataset-files/batchGet",
    headers={"Authorization": "Bearer <api key>"},
    json={"datasetRid": "<dataset rid>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


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


asyncio.run(main())

Response: 200

{
  "<key>": {
    "id": "<dataset file id>",
    "datasetRid": "<dataset rid>",
    "name": "<name>",
    "handle": {
      "type": "s3",
      "s3": {
        "bucket": "<bucket>",
        "key": "<key>"
      }
    },
    "fileSizeBytes": 1,
    "bounds": {
      "start": {
        "seconds": 1,
        "nanos": 1
      },
      "end": {
        "seconds": 1,
        "nanos": 1
      },
      "type": "RELATIVE"
    },
    "uploadedAt": "2026-01-01T00:00:00Z",
    "ingestedAt": "2026-01-01T00:00:00Z",
    "ingestStatus": {
      "type": "success",
      "success": {}
    },
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "ingestTagMetadata": {
      "tagColumns": {
        "<key>": "<column name>"
      },
      "additionalFileTags": {
        "<key>": "<tag value>"
      }
    },
    "originFilePaths": [
      "<origin file paths>"
    ],
    "ingestJobRid": "<ingest job rid>",
    "ingestTransformRid": "<ingest transform rid>",
    "deletedAt": "2026-01-01T00:00:00Z",
    "metadata": {
      "type": "video",
      "video": {
        "timestampManifest": {
          "type": "mcap",
          "mcap": {
            "mcapChannelLocator": {
              "type": "topic",
              "topic": "<mcap channel topic>"
            }
          }
        },
        "segmentMetadata": {
          "numFrames": 1,
          "numSegments": 1,
          "scaleFactor": 1,
          "mediaDurationSeconds": 1,
          "mediaFrameRate": 1
        }
      }
    }
  }
}

Get dataset files for job#

GET /catalog/v1/ingest-job/{ingestJobRid}/files

Path parameters

ingestJobRid string (RID) required

​

Query parameters

nextPageToken string

​

Response

files array of DatasetFile

​

Fields of DatasetFile
id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

nextPage string

​

Request

curl "https://api.gov.nominal.io/api/catalog/v1/ingest-job/<ingest job rid>/files" \
  -H "Authorization: Bearer <api key>"
import requests

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

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


asyncio.run(main())

Response: 200

{
  "files": [
    {
      "id": "<dataset file id>",
      "datasetRid": "<dataset rid>",
      "name": "<name>",
      "handle": {
        "type": "s3",
        "s3": {
          "bucket": "<bucket>",
          "key": "<key>"
        }
      },
      "fileSizeBytes": 1,
      "bounds": {
        "start": {
          "seconds": 1,
          "nanos": 1
        },
        "end": {
          "seconds": 1,
          "nanos": 1
        },
        "type": "RELATIVE"
      },
      "uploadedAt": "2026-01-01T00:00:00Z",
      "ingestedAt": "2026-01-01T00:00:00Z",
      "ingestStatus": {
        "type": "success",
        "success": {}
      },
      "timestampMetadata": {
        "seriesName": "<series name>",
        "timestampType": {
          "type": "relative",
          "relative": {
            "timeUnit": "DAYS",
            "offset": "2026-01-01T00:00:00Z"
          }
        }
      },
      "ingestTagMetadata": {
        "tagColumns": {
          "<key>": "<column name>"
        },
        "additionalFileTags": {
          "<key>": "<tag value>"
        }
      },
      "originFilePaths": [
        "<origin file paths>"
      ],
      "ingestJobRid": "<ingest job rid>",
      "ingestTransformRid": "<ingest transform rid>",
      "deletedAt": "2026-01-01T00:00:00Z",
      "metadata": {
        "type": "video",
        "video": {
          "timestampManifest": {
            "type": "mcap",
            "mcap": {
              "mcapChannelLocator": {
                "type": "topic",
                "topic": "<mcap channel topic>"
              }
            }
          },
          "segmentMetadata": {
            "numFrames": 1,
            "numSegments": 1,
            "scaleFactor": 1,
            "mediaDurationSeconds": 1,
            "mediaFrameRate": 1
          }
        }
      }
    }
  ],
  "nextPage": "<token>"
}

Search datasets#

POST /catalog/v1/search-datasets-v2

Body

query SearchDatasetsQuery required

​

Set type to "searchText".

searchText string

​

Set type to "exactMatch".

exactMatch string

Performs case insensitive exact match search on the name.

Set type to "label".

label string

​

Set type to "properties".

properties nominal.api.Property

​

Fields of nominal.api.Property
name string required

​

value string required

​

Set type to "numericProperty".

numericProperty NumericPropertyPredicate

Matches datasets 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 datasets 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 "ingestStatus".

ingestStatus IngestStatus

​

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

Set type to "ingestedBeforeInclusive".

ingestedBeforeInclusive string (date-time)

Inclusive upper bound on dataset creation time (ingestDate), not lastIngestedAt.

Set type to "ingestedAfterInclusive".

ingestedAfterInclusive string (date-time)

Inclusive lower bound on dataset creation time (ingestDate), not lastIngestedAt.

Set type to "archiveStatus".

archiveStatus boolean

​

Set type to "derived".

derived boolean

Filters datasets by whether they have a derived definition.

Set type to "and".

and array of SearchDatasetsQuery

​

Set type to "or".

or array of SearchDatasetsQuery

​

Set type to "workspace".

workspace string (RID)

​

pageSize integer

Defaults to 100. Will throw if larger than 1000.

token string

​

sortOptions SortOptions required

​

Fields of SortOptions
isDescending boolean required

​

field SortField required

​

Values of SortField
INGEST_DATE

Dataset creation time (created_at). The name is historical; use LAST_INGESTED_AT for when data was last added.

START_TIME

Start of the dataset’s data bounds.

END_TIME

End of the dataset’s data bounds.

LAST_INGESTED_AT

When data was last added, as the latest of a successful file ingest and streaming-session activity. Datasets that have never received either sort last.

Response

results array of EnrichedDataset

​

Fields of EnrichedDataset
rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

channelConfig ChannelConfig

​

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Set type to "inProgress".

inProgress InProgressResult

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

end Timestamp

​

type datasource.TimestampType

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

connectionStatus ConnectionStatus

​

limits LimitsConfig

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

commit Commit

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

nextPageToken string

​

Request

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

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

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/search-datasets-v2",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "query": {"type": "searchText", "searchText": "<search text>"},
        "sortOptions": {"isDescending": True, "field": "INGEST_DATE"},
    },
)
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/catalog/v1/search-datasets-v2",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "query": {"type": "searchText", "searchText": "<search text>"},
                "sortOptions": {"isDescending": True, "field": "INGEST_DATE"},
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "rid": "<rid>",
      "uuid": "<uuid>",
      "name": "<name>",
      "description": "<description>",
      "displayName": "<display name>",
      "metadata": {
        "<key>": "<value>"
      },
      "handle": {
        "type": "s3",
        "s3": {
          "bucket": "<bucket>",
          "key": "<key>"
        }
      },
      "ingestDate": "2026-01-01T00:00:00Z",
      "lastIngestedAt": "2026-01-01T00:00:00Z",
      "ingestStatus": "IN_PROGRESS",
      "originMetadata": {
        "path": "<path>",
        "xSeriesIsAbsolute": true,
        "schemaDirectivePath": "<schema directive path>",
        "xSeriesColumnName": "<x series column name>",
        "xSeriesTimeUnit": "DAYS",
        "timestampMetadata": {
          "seriesName": "<series name>",
          "timestampType": {
            "type": "relative",
            "relative": {
              "timeUnit": "DAYS",
              "offset": "2026-01-01T00:00:00Z"
            }
          }
        },
        "channelConfig": {
          "prefixTreeDelimiter": "<prefix tree delimiter>"
        }
      },
      "lastIngestStatus": {
        "type": "success",
        "success": {}
      },
      "retentionPolicy": {
        "type": "KEEP_UNTIL_EXPIRY",
        "expiryDays": 1
      },
      "source": "<source>",
      "bounds": {
        "start": {
          "seconds": 1,
          "nanos": 1
        },
        "end": {
          "seconds": 1,
          "nanos": 1
        },
        "type": "RELATIVE"
      },
      "timestampType": "ABSOLUTE",
      "labels": [
        "<label>"
      ],
      "properties": {
        "<key>": "<property value>"
      },
      "typedProperties": {
        "<key>": {
          "type": "stringValue",
          "stringValue": "<property value>"
        }
      },
      "granularity": "NANOSECONDS",
      "allowStreaming": true,
      "isArchived": true,
      "defaultGroupByAndAggregationConfig": {
        "numericAggregation": {
          "type": "sum",
          "sum": {}
        }
      },
      "migratedFromConnectionRid": "<connection rid>",
      "externalConnectionMetadata": {
        "connectionDetails": {
          "type": "timescale",
          "timescale": {
            "database": "<database>",
            "host": "<host>",
            "port": 1,
            "username": "<username>",
            "passwordSecretRid": "<secret rid>"
          }
        },
        "connectionStatus": {
          "isConnected": true
        },
        "limits": {
          "maxQueryRange": {
            "unit": "HOURS",
            "count": 1
          }
        }
      },
      "derivedDefinition": {
        "spec": {
          "type": "asset",
          "asset": {
            "rid": {
              "type": "literal",
              "literal": "<literal>"
            }
          }
        },
        "commit": {
          "id": "<commit id>",
          "resourceRid": "<resource rid>",
          "parentCommit": "<commit id>",
          "mergeParentCommit": "<commit id>",
          "message": "<message>",
          "isWorkingState": true,
          "committedBy": "<user rid>",
          "committedAt": "2026-01-01T00:00:00Z"
        }
      },
      "channelSearchSplitTagKeys": [
        "<tag name>"
      ]
    }
  ],
  "nextPageToken": "<token>"
}

Update dataset ingest status v2#

PUT /catalog/v1/datasets/ingest-status-v2

Body

status IngestStatusV2 required

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string required

​

message string required

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

datasetUuid string (UUID) required

​

Response

A IngestStatusV2 union.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Request

curl -X PUT "https://api.gov.nominal.io/api/catalog/v1/datasets/ingest-status-v2" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "status": {
    "type": "success",
    "success": {}
  },
  "datasetUuid": "<dataset uuid>"
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/ingest-status-v2",
    headers={"Authorization": "Bearer <api key>"},
    json={"status": {"type": "success", "success": {}}, "datasetUuid": "<dataset uuid>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/ingest-status-v2",
    headers={"Authorization": "Bearer <api key>"},
    json={"status": {"type": "success", "success": {}}, "datasetUuid": "<dataset uuid>"},
)
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/catalog/v1/datasets/ingest-status-v2",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "status": {"type": "success", "success": {}},
                "datasetUuid": "<dataset uuid>",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "type": "success",
  "success": {}
}

Get ingest progress v2#

GET /catalog/v1/datasets/{datasetRid}/ingest-progress-v2

Deprecated: Deprecated in favor of getDatasetFile.

Path parameters

datasetRid string (RID) required

​

Response

startTime string (date-time)

Timestamp at start of ingest

endTime string (date-time)

Timestamp at end of ingest, empty if still in progress

ingestStatus IngestStatusV2

Status of ingest, contains error if failed

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

incalculable boolean

Whether ingest duration can be reliably calculated

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/ingest-progress-v2" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/ingest-progress-v2",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

{
  "startTime": "2026-01-01T00:00:00Z",
  "endTime": "2026-01-01T00:00:00Z",
  "ingestStatus": {
    "type": "success",
    "success": {}
  },
  "incalculable": true
}

Get handle for dataset#

GET /catalog/v1/datasets/{dataset}/handle

Deprecated: Returned in Dataset

Path parameters

dataset string (UUID) required

​

Response

A Handle union.

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

When there is nothing to return, the response is HTTP 204 with no body.

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset>/handle" \
  -H "Authorization: Bearer <api key>"
import requests

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

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


asyncio.run(main())

Response: 200

{
  "type": "s3",
  "s3": {
    "bucket": "<bucket>",
    "key": "<key>"
  }
}

Create dataset#

POST /catalog/v1/datasets

Body

name string required

​

handle Handle deprecated

Deprecated: Handles should only be specified when adding files to datasets

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string required

​

key string required

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties

originMetadata DatasetOriginMetadata required

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string required

​

timestampType catalog.TimestampType required

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

labels array of string

​

properties map of PropertyName to string deprecated

User-defined dataset properties. The UTF-8 JSON serialization must not exceed 2,000 bytes. Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

description string

​

granularity Granularity

Granularity of dataset timestamps. Defaults to nanoseconds.

Values of Granularity
NANOSECONDS

​

isV2Dataset boolean deprecated

If true, the dataset should be ingested to the v2 tables and is compatible with streaming. Deprecated: Regardless of what value is specified, this flag is treated as true by the service.

workspace string (RID)

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

markingRids array of string (RID)

The markings to apply to the created dataset. If not provided, the dataset will be visible to all users in the same workspace.

derivedDefinition CreateDerivedDefinition

Definition for a derived dataset. When present, the created dataset is virtual and does not ingest or persist dataset files.

Fields of CreateDerivedDefinition
spec api.Dataset required

Initial derived dataset logic.

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

message string required

Initial commit message for the derived definition’s main branch.

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Every key must be produced by derivedDefinition; ingested tag keys, and keys supplied without a derivedDefinition, are rejected.

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

If set, the dataset’s default group-by and aggregation config.

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

Response

rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

Values of RetentionPolicyType
KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Set type to "influx".

influx Influx2ConnectionDetails

​

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Set type to "nominal".

nominal NominalConnectionDetails

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

connectionStatus ConnectionStatus

​

Fields of ConnectionStatus
isConnected boolean

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "originMetadata": {
            "path": "<path>",
            "xSeriesIsAbsolute": True,
            "schemaDirectivePath": "<schema directive path>",
            "xSeriesColumnName": "<x series column name>",
            "xSeriesTimeUnit": "DAYS",
            "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {"type": "relative", "relative": {"timeUnit": "DAYS"}},
            },
            "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "originMetadata": {
            "path": "<path>",
            "xSeriesIsAbsolute": True,
            "schemaDirectivePath": "<schema directive path>",
            "xSeriesColumnName": "<x series column name>",
            "xSeriesTimeUnit": "DAYS",
            "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {"type": "relative", "relative": {"timeUnit": "DAYS"}},
            },
            "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
        },
    },
)
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/catalog/v1/datasets",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "name": "<name>",
                "originMetadata": {
                    "path": "<path>",
                    "xSeriesIsAbsolute": True,
                    "schemaDirectivePath": "<schema directive path>",
                    "xSeriesColumnName": "<x series column name>",
                    "xSeriesTimeUnit": "DAYS",
                    "timestampMetadata": {
                        "seriesName": "<series name>",
                        "timestampType": {
                            "type": "relative",
                            "relative": {"timeUnit": "DAYS"},
                        },
                    },
                    "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "uuid": "<uuid>",
  "name": "<name>",
  "description": "<description>",
  "displayName": "<display name>",
  "metadata": {
    "<key>": "<value>"
  },
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "ingestDate": "2026-01-01T00:00:00Z",
  "lastIngestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": "IN_PROGRESS",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "lastIngestStatus": {
    "type": "success",
    "success": {}
  },
  "retentionPolicy": {
    "type": "KEEP_UNTIL_EXPIRY",
    "expiryDays": 1
  },
  "source": "<source>",
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "timestampType": "ABSOLUTE",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "granularity": "NANOSECONDS",
  "allowStreaming": true,
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "migratedFromConnectionRid": "<connection rid>",
  "externalConnectionMetadata": {
    "connectionDetails": {
      "type": "timescale",
      "timescale": {
        "database": "<database>",
        "host": "<host>",
        "port": 1,
        "username": "<username>",
        "passwordSecretRid": "<secret rid>"
      }
    },
    "connectionStatus": {
      "isConnected": true
    },
    "limits": {
      "maxQueryRange": {
        "unit": "HOURS",
        "count": 1
      }
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Create or update dataset#

POST /catalog/v1/datasets/create-or-update

Deprecated: Use createDataset instead.

Creates a dataset if the s3 path does not exist, otherwise updates the dataset

Body

name string required

​

handle Handle deprecated

Deprecated: Handles should only be specified when adding files to datasets

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string required

​

key string required

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties

originMetadata DatasetOriginMetadata required

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string required

​

timestampType catalog.TimestampType required

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

labels array of string

​

properties map of PropertyName to string deprecated

User-defined dataset properties. The UTF-8 JSON serialization must not exceed 2,000 bytes. Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

description string

​

granularity Granularity

Granularity of dataset timestamps. Defaults to nanoseconds.

Values of Granularity
NANOSECONDS

​

isV2Dataset boolean deprecated

If true, the dataset should be ingested to the v2 tables and is compatible with streaming. Deprecated: Regardless of what value is specified, this flag is treated as true by the service.

workspace string (RID)

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

markingRids array of string (RID)

The markings to apply to the created dataset. If not provided, the dataset will be visible to all users in the same workspace.

derivedDefinition CreateDerivedDefinition

Definition for a derived dataset. When present, the created dataset is virtual and does not ingest or persist dataset files.

Fields of CreateDerivedDefinition
spec api.Dataset required

Initial derived dataset logic.

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

message string required

Initial commit message for the derived definition’s main branch.

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Every key must be produced by derivedDefinition; ingested tag keys, and keys supplied without a derivedDefinition, are rejected.

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

If set, the dataset’s default group-by and aggregation config.

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

Response

rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

Values of RetentionPolicyType
KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Set type to "influx".

influx Influx2ConnectionDetails

​

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Set type to "nominal".

nominal NominalConnectionDetails

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

connectionStatus ConnectionStatus

​

Fields of ConnectionStatus
isConnected boolean

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/create-or-update" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/create-or-update",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "originMetadata": {
            "path": "<path>",
            "xSeriesIsAbsolute": True,
            "schemaDirectivePath": "<schema directive path>",
            "xSeriesColumnName": "<x series column name>",
            "xSeriesTimeUnit": "DAYS",
            "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {"type": "relative", "relative": {"timeUnit": "DAYS"}},
            },
            "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/create-or-update",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "originMetadata": {
            "path": "<path>",
            "xSeriesIsAbsolute": True,
            "schemaDirectivePath": "<schema directive path>",
            "xSeriesColumnName": "<x series column name>",
            "xSeriesTimeUnit": "DAYS",
            "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {"type": "relative", "relative": {"timeUnit": "DAYS"}},
            },
            "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
        },
    },
)
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/catalog/v1/datasets/create-or-update",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "name": "<name>",
                "originMetadata": {
                    "path": "<path>",
                    "xSeriesIsAbsolute": True,
                    "schemaDirectivePath": "<schema directive path>",
                    "xSeriesColumnName": "<x series column name>",
                    "xSeriesTimeUnit": "DAYS",
                    "timestampMetadata": {
                        "seriesName": "<series name>",
                        "timestampType": {
                            "type": "relative",
                            "relative": {"timeUnit": "DAYS"},
                        },
                    },
                    "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "uuid": "<uuid>",
  "name": "<name>",
  "description": "<description>",
  "displayName": "<display name>",
  "metadata": {
    "<key>": "<value>"
  },
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "ingestDate": "2026-01-01T00:00:00Z",
  "lastIngestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": "IN_PROGRESS",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "lastIngestStatus": {
    "type": "success",
    "success": {}
  },
  "retentionPolicy": {
    "type": "KEEP_UNTIL_EXPIRY",
    "expiryDays": 1
  },
  "source": "<source>",
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "timestampType": "ABSOLUTE",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "granularity": "NANOSECONDS",
  "allowStreaming": true,
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "migratedFromConnectionRid": "<connection rid>",
  "externalConnectionMetadata": {
    "connectionDetails": {
      "type": "timescale",
      "timescale": {
        "database": "<database>",
        "host": "<host>",
        "port": 1,
        "username": "<username>",
        "passwordSecretRid": "<secret rid>"
      }
    },
    "connectionStatus": {
      "isConnected": true
    },
    "limits": {
      "maxQueryRange": {
        "unit": "HOURS",
        "count": 1
      }
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Create dataset with uuid#

POST /catalog/v1/datasets/with-uuid

Creates a dataset with a specific UUID. This is useful for migrations and advanced use cases where the dataset UUID must be controlled by the caller. Throws a conflict error if a dataset with the specified UUID already exists. This endpoint is not intended for general use. Use /datasets instead to create a new dataset.

Body

uuid string (UUID) required

The UUID to assign to the new dataset.

createDataset CreateDataset required

​

Fields of CreateDataset
name string required

​

handle Handle deprecated

Deprecated: Handles should only be specified when adding files to datasets

Set type to "s3".

s3 S3Handle

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties

originMetadata DatasetOriginMetadata required

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

channelConfig ChannelConfig

​

labels array of string

​

properties map of PropertyName to string deprecated

User-defined dataset properties. The UTF-8 JSON serialization must not exceed 2,000 bytes. Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

description string

​

granularity Granularity

Granularity of dataset timestamps. Defaults to nanoseconds.

Values of Granularity
NANOSECONDS

​

isV2Dataset boolean deprecated

If true, the dataset should be ingested to the v2 tables and is compatible with streaming. Deprecated: Regardless of what value is specified, this flag is treated as true by the service.

workspace string (RID)

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

markingRids array of string (RID)

The markings to apply to the created dataset. If not provided, the dataset will be visible to all users in the same workspace.

derivedDefinition CreateDerivedDefinition

Definition for a derived dataset. When present, the created dataset is virtual and does not ingest or persist dataset files.

Fields of CreateDerivedDefinition
spec api.Dataset required

Initial derived dataset logic.

message string required

Initial commit message for the derived definition’s main branch.

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Every key must be produced by derivedDefinition; ingested tag keys, and keys supplied without a derivedDefinition, are rejected.

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

If set, the dataset’s default group-by and aggregation config.

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Response

rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

Values of RetentionPolicyType
KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Set type to "influx".

influx Influx2ConnectionDetails

​

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Set type to "nominal".

nominal NominalConnectionDetails

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

connectionStatus ConnectionStatus

​

Fields of ConnectionStatus
isConnected boolean

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/with-uuid" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "uuid": "<uuid>",
  "createDataset": {
    "name": "<name>",
    "originMetadata": {
      "path": "<path>",
      "xSeriesIsAbsolute": true,
      "schemaDirectivePath": "<schema directive path>",
      "xSeriesColumnName": "<x series column name>",
      "xSeriesTimeUnit": "DAYS",
      "timestampMetadata": {
        "seriesName": "<series name>",
        "timestampType": {
          "type": "relative",
          "relative": {
            "timeUnit": "DAYS"
          }
        }
      },
      "channelConfig": {
        "prefixTreeDelimiter": "<prefix tree delimiter>"
      }
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/with-uuid",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "uuid": "<uuid>",
        "createDataset": {
            "name": "<name>",
            "originMetadata": {
                "path": "<path>",
                "xSeriesIsAbsolute": True,
                "schemaDirectivePath": "<schema directive path>",
                "xSeriesColumnName": "<x series column name>",
                "xSeriesTimeUnit": "DAYS",
                "timestampMetadata": {
                    "seriesName": "<series name>",
                    "timestampType": {
                        "type": "relative",
                        "relative": {"timeUnit": "DAYS"},
                    },
                },
                "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
            },
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/with-uuid",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "uuid": "<uuid>",
        "createDataset": {
            "name": "<name>",
            "originMetadata": {
                "path": "<path>",
                "xSeriesIsAbsolute": True,
                "schemaDirectivePath": "<schema directive path>",
                "xSeriesColumnName": "<x series column name>",
                "xSeriesTimeUnit": "DAYS",
                "timestampMetadata": {
                    "seriesName": "<series name>",
                    "timestampType": {
                        "type": "relative",
                        "relative": {"timeUnit": "DAYS"},
                    },
                },
                "channelConfig": {"prefixTreeDelimiter": "<prefix tree delimiter>"},
            },
        },
    },
)
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/catalog/v1/datasets/with-uuid",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "uuid": "<uuid>",
                "createDataset": {
                    "name": "<name>",
                    "originMetadata": {
                        "path": "<path>",
                        "xSeriesIsAbsolute": True,
                        "schemaDirectivePath": "<schema directive path>",
                        "xSeriesColumnName": "<x series column name>",
                        "xSeriesTimeUnit": "DAYS",
                        "timestampMetadata": {
                            "seriesName": "<series name>",
                            "timestampType": {
                                "type": "relative",
                                "relative": {"timeUnit": "DAYS"},
                            },
                        },
                        "channelConfig": {
                            "prefixTreeDelimiter": "<prefix tree delimiter>",
                        },
                    },
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "uuid": "<uuid>",
  "name": "<name>",
  "description": "<description>",
  "displayName": "<display name>",
  "metadata": {
    "<key>": "<value>"
  },
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "ingestDate": "2026-01-01T00:00:00Z",
  "lastIngestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": "IN_PROGRESS",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "lastIngestStatus": {
    "type": "success",
    "success": {}
  },
  "retentionPolicy": {
    "type": "KEEP_UNTIL_EXPIRY",
    "expiryDays": 1
  },
  "source": "<source>",
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "timestampType": "ABSOLUTE",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "granularity": "NANOSECONDS",
  "allowStreaming": true,
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "migratedFromConnectionRid": "<connection rid>",
  "externalConnectionMetadata": {
    "connectionDetails": {
      "type": "timescale",
      "timescale": {
        "database": "<database>",
        "host": "<host>",
        "port": 1,
        "username": "<username>",
        "passwordSecretRid": "<secret rid>"
      }
    },
    "connectionStatus": {
      "isConnected": true
    },
    "limits": {
      "maxQueryRange": {
        "unit": "HOURS",
        "count": 1
      }
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Add file to dataset#

POST /catalog/v1/datasets/{datasetRid}/add-file

Adds a single file to an existing dataset.

Path parameters

datasetRid string (RID) required

​

Body

handle Handle required

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string required

​

key string required

​

fileSize integer (int64) required

The size of the file in bytes.

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string required

​

timestampType catalog.TimestampType required

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit required

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit required

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string required

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFileHandles array of S3Handle

​

ingestJobRid string (RID)

​

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest required

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator required

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp required

Specifies the original starting timestamp of the video.

Fields of Timestamp
seconds integer (int64) required

​

nanos integer (int64) required

​

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer required

Total number of frames across all segments.

numSegments integer required

Number of segments the video was split into.

scaleFactor number required

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number required

Total duration of the video in seconds.

mediaFrameRate number required

Average frame rate (FPS) calculated as total frames / duration.

Response

id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/add-file" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "fileSize": 1
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/add-file",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "handle": {"type": "s3", "s3": {"bucket": "<bucket>", "key": "<key>"}},
        "fileSize": 1,
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/add-file",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "handle": {"type": "s3", "s3": {"bucket": "<bucket>", "key": "<key>"}},
        "fileSize": 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/catalog/v1/datasets/<dataset rid>/add-file",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "handle": {"type": "s3", "s3": {"bucket": "<bucket>", "key": "<key>"}},
                "fileSize": 1,
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "id": "<dataset file id>",
  "datasetRid": "<dataset rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "fileSizeBytes": 1,
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "uploadedAt": "2026-01-01T00:00:00Z",
  "ingestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": {
    "type": "success",
    "success": {}
  },
  "timestampMetadata": {
    "seriesName": "<series name>",
    "timestampType": {
      "type": "relative",
      "relative": {
        "timeUnit": "DAYS",
        "offset": "2026-01-01T00:00:00Z"
      }
    }
  },
  "ingestTagMetadata": {
    "tagColumns": {
      "<key>": "<column name>"
    },
    "additionalFileTags": {
      "<key>": "<tag value>"
    }
  },
  "originFilePaths": [
    "<origin file paths>"
  ],
  "ingestJobRid": "<ingest job rid>",
  "ingestTransformRid": "<ingest transform rid>",
  "deletedAt": "2026-01-01T00:00:00Z",
  "metadata": {
    "type": "video",
    "video": {
      "timestampManifest": {
        "type": "mcap",
        "mcap": {
          "mcapChannelLocator": {
            "type": "topic",
            "topic": "<mcap channel topic>"
          }
        }
      },
      "segmentMetadata": {
        "numFrames": 1,
        "numSegments": 1,
        "scaleFactor": 1,
        "mediaDurationSeconds": 1,
        "mediaFrameRate": 1
      }
    }
  }
}

List dataset files#

GET /catalog/v1/datasets/{datasetRid}/files

Path parameters

datasetRid string (RID) required

​

Query parameters

nextPageToken string

​

Response

files array of DatasetFile

​

Fields of DatasetFile
id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

nextPage string

​

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/files" \
  -H "Authorization: Bearer <api key>"
import requests

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

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


asyncio.run(main())

Response: 200

{
  "files": [
    {
      "id": "<dataset file id>",
      "datasetRid": "<dataset rid>",
      "name": "<name>",
      "handle": {
        "type": "s3",
        "s3": {
          "bucket": "<bucket>",
          "key": "<key>"
        }
      },
      "fileSizeBytes": 1,
      "bounds": {
        "start": {
          "seconds": 1,
          "nanos": 1
        },
        "end": {
          "seconds": 1,
          "nanos": 1
        },
        "type": "RELATIVE"
      },
      "uploadedAt": "2026-01-01T00:00:00Z",
      "ingestedAt": "2026-01-01T00:00:00Z",
      "ingestStatus": {
        "type": "success",
        "success": {}
      },
      "timestampMetadata": {
        "seriesName": "<series name>",
        "timestampType": {
          "type": "relative",
          "relative": {
            "timeUnit": "DAYS",
            "offset": "2026-01-01T00:00:00Z"
          }
        }
      },
      "ingestTagMetadata": {
        "tagColumns": {
          "<key>": "<column name>"
        },
        "additionalFileTags": {
          "<key>": "<tag value>"
        }
      },
      "originFilePaths": [
        "<origin file paths>"
      ],
      "ingestJobRid": "<ingest job rid>",
      "ingestTransformRid": "<ingest transform rid>",
      "deletedAt": "2026-01-01T00:00:00Z",
      "metadata": {
        "type": "video",
        "video": {
          "timestampManifest": {
            "type": "mcap",
            "mcap": {
              "mcapChannelLocator": {
                "type": "topic",
                "topic": "<mcap channel topic>"
              }
            }
          },
          "segmentMetadata": {
            "numFrames": 1,
            "numSegments": 1,
            "scaleFactor": 1,
            "mediaDurationSeconds": 1,
            "mediaFrameRate": 1
          }
        }
      }
    }
  ],
  "nextPage": "<token>"
}

Search dataset files#

POST /catalog/v1/search-dataset-files

Body

datasetRid string (RID) required

​

query SearchDatasetFilesQuery required

​

Set type to "timeRange".

timeRange TimeRangeFilter

​

Fields of TimeRangeFilter
start UtcTimestamp

​

Fields of UtcTimestamp
secondsSinceEpoch integer (int64) required

​

end UtcTimestamp

​

Set type to "uploadedAtRange".

uploadedAtRange UploadedAtFilter

​

Fields of UploadedAtFilter
start UtcTimestamp

​

end UtcTimestamp

​

Set type to "fileTags".

fileTags map of TagName to string

​

Set type to "and".

and array of SearchDatasetFilesQuery

​

Set type to "or".

or array of SearchDatasetFilesQuery

​

pageSize integer

Defaults to 100. Will throw if larger than 1000.

token string

​

sortOptions DatasetFileSortOptions required

​

Fields of DatasetFileSortOptions
isDescending boolean required

​

field DatasetFileSortField required

​

Values of DatasetFileSortField
UPLOADED_AT

​

Response

results array of DatasetFile

​

Fields of DatasetFile
id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

nextPageToken string

​

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/search-dataset-files" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "datasetRid": "<dataset rid>",
  "query": {
    "type": "timeRange",
    "timeRange": {
      "start": {
        "secondsSinceEpoch": 1
      },
      "end": {
        "secondsSinceEpoch": 1
      }
    }
  },
  "sortOptions": {
    "isDescending": true,
    "field": "UPLOADED_AT"
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/search-dataset-files",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "datasetRid": "<dataset rid>",
        "query": {
            "type": "timeRange",
            "timeRange": {
                "start": {"secondsSinceEpoch": 1},
                "end": {"secondsSinceEpoch": 1},
            },
        },
        "sortOptions": {"isDescending": True, "field": "UPLOADED_AT"},
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/search-dataset-files",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "datasetRid": "<dataset rid>",
        "query": {
            "type": "timeRange",
            "timeRange": {
                "start": {"secondsSinceEpoch": 1},
                "end": {"secondsSinceEpoch": 1},
            },
        },
        "sortOptions": {"isDescending": True, "field": "UPLOADED_AT"},
    },
)
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/catalog/v1/search-dataset-files",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "datasetRid": "<dataset rid>",
                "query": {
                    "type": "timeRange",
                    "timeRange": {
                        "start": {"secondsSinceEpoch": 1},
                        "end": {"secondsSinceEpoch": 1},
                    },
                },
                "sortOptions": {"isDescending": True, "field": "UPLOADED_AT"},
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "id": "<dataset file id>",
      "datasetRid": "<dataset rid>",
      "name": "<name>",
      "handle": {
        "type": "s3",
        "s3": {
          "bucket": "<bucket>",
          "key": "<key>"
        }
      },
      "fileSizeBytes": 1,
      "bounds": {
        "start": {
          "seconds": 1,
          "nanos": 1
        },
        "end": {
          "seconds": 1,
          "nanos": 1
        },
        "type": "RELATIVE"
      },
      "uploadedAt": "2026-01-01T00:00:00Z",
      "ingestedAt": "2026-01-01T00:00:00Z",
      "ingestStatus": {
        "type": "success",
        "success": {}
      },
      "timestampMetadata": {
        "seriesName": "<series name>",
        "timestampType": {
          "type": "relative",
          "relative": {
            "timeUnit": "DAYS",
            "offset": "2026-01-01T00:00:00Z"
          }
        }
      },
      "ingestTagMetadata": {
        "tagColumns": {
          "<key>": "<column name>"
        },
        "additionalFileTags": {
          "<key>": "<tag value>"
        }
      },
      "originFilePaths": [
        "<origin file paths>"
      ],
      "ingestJobRid": "<ingest job rid>",
      "ingestTransformRid": "<ingest transform rid>",
      "deletedAt": "2026-01-01T00:00:00Z",
      "metadata": {
        "type": "video",
        "video": {
          "timestampManifest": {
            "type": "mcap",
            "mcap": {
              "mcapChannelLocator": {
                "type": "topic",
                "topic": "<mcap channel topic>"
              }
            }
          },
          "segmentMetadata": {
            "numFrames": 1,
            "numSegments": 1,
            "scaleFactor": 1,
            "mediaDurationSeconds": 1,
            "mediaFrameRate": 1
          }
        }
      }
    }
  ],
  "nextPageToken": "<token>"
}

Get dataset file uri#

GET /catalog/v1/datasets/{datasetRid}/{fileId}/uri

Path parameters

datasetRid string (RID) required

​

fileId string (UUID) required

​

Response

uri string

​

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/<file id>/uri" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/<file id>/uri",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

{
  "uri": "<uri>"
}

Get video file uri#

GET /catalog/v1/videos/{videoFileRid}/uri

Path parameters

videoFileRid string (RID) required

​

Response

uri string

​

Request

curl "https://api.gov.nominal.io/api/catalog/v1/videos/<video file rid>/uri" \
  -H "Authorization: Bearer <api key>"
import requests

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

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


asyncio.run(main())

Response: 200

{
  "uri": "<uri>"
}

Get origin file uris#

GET /catalog/v1/datasets/{datasetRid}/{fileId}/origin-uris

Path parameters

datasetRid string (RID) required

​

fileId string (UUID) required

​

Response

The body is an array of OriginFileUri.

Fields of OriginFileUri
uri string

​

path string

​

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/<file id>/origin-uris" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/<file id>/origin-uris",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

[
  {
    "uri": "<uri>",
    "path": "<path>"
  }
]

Mark file ingest successful#

PUT /catalog/v1/datasets/{datasetRid}/file/{fileId}/success

Path parameters

datasetRid string (RID) required

​

fileId string (UUID) required

​

Body

bounds Bounds required

​

Fields of Bounds
start Timestamp required

​

Fields of Timestamp
seconds integer (int64) required

​

nanos integer (int64) required

​

end Timestamp required

​

type datasource.TimestampType required

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

ingestedAt Timestamp required

The ingestion timestamp is produced by CSV splitter and stored directly in the data store table. It’s produced externally and passed here to handle retries and failures, and must be nanosecond precision. Two files cannot have the same ingested at timestamp.

Response

id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

Request

curl -X PUT "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/success" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "ingestedAt": {
    "seconds": 1,
    "nanos": 1
  }
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/success",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "bounds": {
            "start": {"seconds": 1, "nanos": 1},
            "end": {"seconds": 1, "nanos": 1},
            "type": "RELATIVE",
        },
        "ingestedAt": {"seconds": 1, "nanos": 1},
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/success",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "bounds": {
            "start": {"seconds": 1, "nanos": 1},
            "end": {"seconds": 1, "nanos": 1},
            "type": "RELATIVE",
        },
        "ingestedAt": {"seconds": 1, "nanos": 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.put(
            "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/success",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "bounds": {
                    "start": {"seconds": 1, "nanos": 1},
                    "end": {"seconds": 1, "nanos": 1},
                    "type": "RELATIVE",
                },
                "ingestedAt": {"seconds": 1, "nanos": 1},
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "id": "<dataset file id>",
  "datasetRid": "<dataset rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "fileSizeBytes": 1,
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "uploadedAt": "2026-01-01T00:00:00Z",
  "ingestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": {
    "type": "success",
    "success": {}
  },
  "timestampMetadata": {
    "seriesName": "<series name>",
    "timestampType": {
      "type": "relative",
      "relative": {
        "timeUnit": "DAYS",
        "offset": "2026-01-01T00:00:00Z"
      }
    }
  },
  "ingestTagMetadata": {
    "tagColumns": {
      "<key>": "<column name>"
    },
    "additionalFileTags": {
      "<key>": "<tag value>"
    }
  },
  "originFilePaths": [
    "<origin file paths>"
  ],
  "ingestJobRid": "<ingest job rid>",
  "ingestTransformRid": "<ingest transform rid>",
  "deletedAt": "2026-01-01T00:00:00Z",
  "metadata": {
    "type": "video",
    "video": {
      "timestampManifest": {
        "type": "mcap",
        "mcap": {
          "mcapChannelLocator": {
            "type": "topic",
            "topic": "<mcap channel topic>"
          }
        }
      },
      "segmentMetadata": {
        "numFrames": 1,
        "numSegments": 1,
        "scaleFactor": 1,
        "mediaDurationSeconds": 1,
        "mediaFrameRate": 1
      }
    }
  }
}

Mark file ingest error#

PUT /catalog/v1/datasets/{datasetRid}/file/{fileId}/error

Path parameters

datasetRid string (RID) required

​

fileId string (UUID) required

​

Body

errorResult ErrorResult required

​

Fields of ErrorResult
errorType string required

​

message string required

​

errorInstanceId string

​

Response

id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

Request

curl -X PUT "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/error" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "errorResult": {
    "errorType": "<error type>",
    "message": "<message>"
  }
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/error",
    headers={"Authorization": "Bearer <api key>"},
    json={"errorResult": {"errorType": "<error type>", "message": "<message>"}},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/error",
    headers={"Authorization": "Bearer <api key>"},
    json={"errorResult": {"errorType": "<error type>", "message": "<message>"}},
)
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/catalog/v1/datasets/<dataset rid>/file/<file id>/error",
            headers={"Authorization": "Bearer <api key>"},
            json={"errorResult": {"errorType": "<error type>", "message": "<message>"}},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "id": "<dataset file id>",
  "datasetRid": "<dataset rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "fileSizeBytes": 1,
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "uploadedAt": "2026-01-01T00:00:00Z",
  "ingestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": {
    "type": "success",
    "success": {}
  },
  "timestampMetadata": {
    "seriesName": "<series name>",
    "timestampType": {
      "type": "relative",
      "relative": {
        "timeUnit": "DAYS",
        "offset": "2026-01-01T00:00:00Z"
      }
    }
  },
  "ingestTagMetadata": {
    "tagColumns": {
      "<key>": "<column name>"
    },
    "additionalFileTags": {
      "<key>": "<tag value>"
    }
  },
  "originFilePaths": [
    "<origin file paths>"
  ],
  "ingestJobRid": "<ingest job rid>",
  "ingestTransformRid": "<ingest transform rid>",
  "deletedAt": "2026-01-01T00:00:00Z",
  "metadata": {
    "type": "video",
    "video": {
      "timestampManifest": {
        "type": "mcap",
        "mcap": {
          "mcapChannelLocator": {
            "type": "topic",
            "topic": "<mcap channel topic>"
          }
        }
      },
      "segmentMetadata": {
        "numFrames": 1,
        "numSegments": 1,
        "scaleFactor": 1,
        "mediaDurationSeconds": 1,
        "mediaFrameRate": 1
      }
    }
  }
}

Update dataset file metadata#

PUT /catalog/v1/datasets/{datasetRid}/file/{fileId}/metadata

Updates file-type-specific metadata for a dataset file. Currently used to update video segment metadata after video segmentation is complete.

Path parameters

datasetRid string (RID) required

​

fileId string (UUID) required

​

Body

A DatasetFileMetadata union.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest required

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator required

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp required

Specifies the original starting timestamp of the video.

Fields of Timestamp
seconds integer (int64) required

​

nanos integer (int64) required

​

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer required

Total number of frames across all segments.

numSegments integer required

Number of segments the video was split into.

scaleFactor number required

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number required

Total duration of the video in seconds.

mediaFrameRate number required

Average frame rate (FPS) calculated as total frames / duration.

Response

id string (UUID)

​

datasetRid string (RID)

​

name string

​

handle Handle

​

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

uploadedAt string (date-time)

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

timestampMetadata TimestampMetadata

​

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

Set type to "relative".

relative RelativeTimestamp

​

Fields of RelativeTimestamp
timeUnit TimeUnit

​

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

offset string (date-time)

​

Set type to "absolute".

absolute AbsoluteTimestamp

​

Set type to "iso8601".

iso8601 Iso8601Timestamp

​

Set type to "epochOfTimeUnit".

epochOfTimeUnit EpochTimestamp

​

Fields of EpochTimestamp
timeUnit TimeUnit

​

Set type to "customFormat".

customFormat CustomTimestamp

​

Fields of CustomTimestamp
format string

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

ingestTagMetadata IngestTagMetadata

​

Fields of IngestTagMetadata
tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

Set type to "video".

video VideoFileMetadata

​

Fields of VideoFileMetadata
timestampManifest VideoFileTimestampManifest

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

Set type to "mcap".

mcap McapTimestampManifest

​

Fields of McapTimestampManifest
mcapChannelLocator McapChannelLocator

​

Set type to "topic".

topic string

​

Set type to "id".

id integer

​

Set type to "s3path".

s3path string

​

Set type to "s3paths".

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

Set type to "noManifest".

noManifest NoTimestampManifest

​

Fields of NoTimestampManifest
startingTimestamp Timestamp

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

Set type to "trueFrameRate".

trueFrameRate number

​

Set type to "endingTimestamp".

endingTimestamp Timestamp

​

Set type to "scaleFactor".

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

Fields of VideoSegmentsMetadata
numFrames integer

Total number of frames across all segments.

numSegments integer

Number of segments the video was split into.

scaleFactor number

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number

Total duration of the video in seconds.

mediaFrameRate number

Average frame rate (FPS) calculated as total frames / duration.

Request

curl -X PUT "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/metadata" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "type": "video",
  "video": {
    "timestampManifest": {
      "type": "mcap",
      "mcap": {
        "mcapChannelLocator": {
          "type": "topic",
          "topic": "<mcap channel topic>"
        }
      }
    }
  }
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/metadata",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "type": "video",
        "video": {
            "timestampManifest": {
                "type": "mcap",
                "mcap": {
                    "mcapChannelLocator": {
                        "type": "topic",
                        "topic": "<mcap channel topic>",
                    },
                },
            },
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/file/<file id>/metadata",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "type": "video",
        "video": {
            "timestampManifest": {
                "type": "mcap",
                "mcap": {
                    "mcapChannelLocator": {
                        "type": "topic",
                        "topic": "<mcap channel topic>",
                    },
                },
            },
        },
    },
)
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/catalog/v1/datasets/<dataset rid>/file/<file id>/metadata",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "type": "video",
                "video": {
                    "timestampManifest": {
                        "type": "mcap",
                        "mcap": {
                            "mcapChannelLocator": {
                                "type": "topic",
                                "topic": "<mcap channel topic>",
                            },
                        },
                    },
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "id": "<dataset file id>",
  "datasetRid": "<dataset rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "fileSizeBytes": 1,
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "uploadedAt": "2026-01-01T00:00:00Z",
  "ingestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": {
    "type": "success",
    "success": {}
  },
  "timestampMetadata": {
    "seriesName": "<series name>",
    "timestampType": {
      "type": "relative",
      "relative": {
        "timeUnit": "DAYS",
        "offset": "2026-01-01T00:00:00Z"
      }
    }
  },
  "ingestTagMetadata": {
    "tagColumns": {
      "<key>": "<column name>"
    },
    "additionalFileTags": {
      "<key>": "<tag value>"
    }
  },
  "originFilePaths": [
    "<origin file paths>"
  ],
  "ingestJobRid": "<ingest job rid>",
  "ingestTransformRid": "<ingest transform rid>",
  "deletedAt": "2026-01-01T00:00:00Z",
  "metadata": {
    "type": "video",
    "video": {
      "timestampManifest": {
        "type": "mcap",
        "mcap": {
          "mcapChannelLocator": {
            "type": "topic",
            "topic": "<mcap channel topic>"
          }
        }
      },
      "segmentMetadata": {
        "numFrames": 1,
        "numSegments": 1,
        "scaleFactor": 1,
        "mediaDurationSeconds": 1,
        "mediaFrameRate": 1
      }
    }
  }
}

Update dataset metadata#

PUT /catalog/v1/datasets/{datasetRid}

Path parameters

datasetRid string (RID) required

​

Body

name string

​

description string

​

labels array of string

​

properties map of PropertyName to string deprecated

User-defined dataset properties. When supplied, the UTF-8 JSON serialization must not exceed 2,000 bytes. Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Absent leaves the current keys unchanged; an empty set clears them. Every key must be produced by the dataset’s derivedDefinition.

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

If set, replaces the dataset’s default group-by and aggregation config in full.

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Fields of Percentile
percentile DoubleConstant required

Percentile to compute, in range [0, 1]. E.g. 0.5 for median, 0.95 for p95.

Set type to "literal".

literal number

Create from a literal floating-point value.

Set type to "variable".

variable string

Create from a named reference name.

Set type to "builtin".

builtin BuiltinConstant

Create from a named builtin constant; the server resolves the numeric value.

Set type to "math".

math MathConstant

​

Values of MathConstant
PI

The circle constant π (dimensionless).

TAU

The circle constant τ = 2π (dimensionless).

E

Euler’s number e (dimensionless).

Set type to "physical".

physical PhysicalConstant

​

Values of PhysicalConstant
SPEED_OF_LIGHT

Speed of light in vacuum, 299792458 m/s (exact).

AVOGADRO

Avogadro constant, 6.02214076e23 mol^-1 (exact).

BOLTZMANN

Boltzmann constant, 1.380649e-23 J/K (exact).

PLANCK

Planck constant, 6.62607015e-34 J*s (exact).

ELEMENTARY_CHARGE

Elementary charge, 1.602176634e-19 C (exact).

GAS_CONSTANT

Molar gas constant, 8.31446261815324 J/(mol*K) (exact, Avogadro times Boltzmann).

STANDARD_GRAVITY

Standard acceleration of gravity, 9.80665 m/s^2 (exact by convention).

STANDARD_ATMOSPHERE

Standard atmosphere, 101325 Pa (exact by convention).

ABSOLUTE_ZERO_CELSIUS

Absolute zero expressed in degrees Celsius, -273.15 (exact).

GRAVITATIONAL_CONSTANT

Newtonian constant of gravitation, 6.67430e-11 m^3/(kg*s^2) (CODATA 2022, measured).

STEFAN_BOLTZMANN

Stefan-Boltzmann constant, 5.670374419e-8 W/(m^2*K^4) (exact derived).

Set type to "udf".

udf NumericAggregationUdf

​

Fields of NumericAggregationUdf
source UdfSource required

​

Set type to "rust".

rust RustUdfSource

​

Fields of RustUdfSource
sourceCode string required

Rust source code to transpile into WASM. The operation consuming this source defines the entrypoint signature: scalar UDFs receive one scalar per input series, while aggregation UDFs receive grouped value vectors. If several functions appear at the top level, annotate the entrypoint with #[main].

Response

rid string (RID)

​

uuid string (UUID)

​

name string

​

description string

​

displayName string

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

ingestDate string (date-time)

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

Values of IngestStatus
IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

lastIngestStatus IngestStatusV2

​

Set type to "success".

success SuccessResult

​

Set type to "error".

error ErrorResult

​

Fields of ErrorResult
errorType string

​

message string

​

errorInstanceId string

​

Set type to "inProgress".

inProgress InProgressResult

​

Fields of InProgressResult
inProgressDetails InProgressDetails

​

Set type to "deletionInProgress".

deletionInProgress DeletionInProgress

​

Set type to "deleted".

deleted Deleted

​

Set type to "queued".

queued Queued

​

Set type to "parsing".

parsing Parsing

​

Set type to "ingesting".

ingesting Ingesting

​

Fields of Ingesting
progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

retentionPolicy RetentionPolicy

​

Fields of RetentionPolicy
type RetentionPolicyType

​

Values of RetentionPolicyType
KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

expiryDays integer

​

source string

​

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

Set type to "stringValue".

stringValue string

​

Set type to "numericValue".

numericValue number

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

allowStreaming boolean

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

Fields of ExternalConnectionMetadata
connectionDetails ConnectionDetails

​

Set type to "timescale".

timescale TimescaleConnectionDetails

​

Set type to "influx".

influx Influx2ConnectionDetails

​

Set type to "influx1".

influx1 Influx1ConnectionDetails

​

Set type to "nominal".

nominal NominalConnectionDetails

​

Set type to "timestream".

timestream TimestreamConnectionDetails

​

Set type to "visualCrossing".

visualCrossing VisualCrossingConnectionDetails

​

Set type to "bigQuery".

bigQuery BigQueryConnectionDetails

​

connectionStatus ConnectionStatus

​

Fields of ConnectionStatus
isConnected boolean

​

limits LimitsConfig

​

Fields of LimitsConfig
maxQueryRange connection.api.Duration

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X PUT "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "description": "<description>",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ],
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  }
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "description": "<description>",
        "labels": ["<label>"],
        "properties": {"<key>": "<property value>"},
        "typedProperties": {
            "<key>": {"type": "stringValue", "stringValue": "<property value>"},
        },
        "channelSearchSplitTagKeys": ["<tag name>"],
        "defaultGroupByAndAggregationConfig": {
            "numericAggregation": {"type": "sum", "sum": {}},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "description": "<description>",
        "labels": ["<label>"],
        "properties": {"<key>": "<property value>"},
        "typedProperties": {
            "<key>": {"type": "stringValue", "stringValue": "<property value>"},
        },
        "channelSearchSplitTagKeys": ["<tag name>"],
        "defaultGroupByAndAggregationConfig": {
            "numericAggregation": {"type": "sum", "sum": {}},
        },
    },
)
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/catalog/v1/datasets/<dataset rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "name": "<name>",
                "description": "<description>",
                "labels": ["<label>"],
                "properties": {"<key>": "<property value>"},
                "typedProperties": {
                    "<key>": {"type": "stringValue", "stringValue": "<property value>"},
                },
                "channelSearchSplitTagKeys": ["<tag name>"],
                "defaultGroupByAndAggregationConfig": {
                    "numericAggregation": {"type": "sum", "sum": {}},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "uuid": "<uuid>",
  "name": "<name>",
  "description": "<description>",
  "displayName": "<display name>",
  "metadata": {
    "<key>": "<value>"
  },
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "ingestDate": "2026-01-01T00:00:00Z",
  "lastIngestedAt": "2026-01-01T00:00:00Z",
  "ingestStatus": "IN_PROGRESS",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "lastIngestStatus": {
    "type": "success",
    "success": {}
  },
  "retentionPolicy": {
    "type": "KEEP_UNTIL_EXPIRY",
    "expiryDays": 1
  },
  "source": "<source>",
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "timestampType": "ABSOLUTE",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "granularity": "NANOSECONDS",
  "allowStreaming": true,
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "migratedFromConnectionRid": "<connection rid>",
  "externalConnectionMetadata": {
    "connectionDetails": {
      "type": "timescale",
      "timescale": {
        "database": "<database>",
        "host": "<host>",
        "port": 1,
        "username": "<username>",
        "passwordSecretRid": "<secret rid>"
      }
    },
    "connectionStatus": {
      "isConnected": true
    },
    "limits": {
      "maxQueryRange": {
        "unit": "HOURS",
        "count": 1
      }
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Get dataset derived definition#

GET /catalog/v1/datasets/{datasetRid}/derived-definition

Returns a versioned derived definition. If commit is omitted, returns the latest commit on main. Where the deployment resolves derived datasets through their same-UUID pipelines, the definition and its commits are the pipeline’s; a commit from the dataset’s own earlier history still resolves.

Path parameters

datasetRid string (RID) required

​

Query parameters

commit string

​

Response

spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Fields of Asset
rid StringConstant

Resource identifier of an asset

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Fields of Run
rid StringConstant

Resource identifier of a run

Set type to "saved".

saved SavedDataset

​

Fields of SavedDataset
rid StringConstant

A data source RID, given as a literal or as a variable resolved from Context. A pipeline’s logic only accepts catalog datasets/pipelines, since it is persisted without context.

Set type to "search".

search SearchDataset

​

Fields of SearchDataset
target SearchTarget

Whether to search assets or runs and with which query.

maxResults integer

Maximum number of assets or runs returned from search. Defaults to 10000 when omitted.

Set type to "combine".

combine CombinedDataset

​

Fields of CombinedDataset
inputs array of api.Dataset

The datasets to combine.

Set type to "tag".

tag TaggedDataset

​

Fields of TaggedDataset
input api.Dataset

The underlying dataset to tag.

key StringConstant

Tag key to inject onto each series in the dataset.

value StringConstant

Tag value to assign to the injected key.

Set type to "filter".

filter FilteredDataset

​

Fields of FilteredDataset
input api.Dataset

The underlying dataset to filter.

predicate TagPredicate

Conjunctive tag predicate used to keep matching series.

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Fields of TimeShiftedDataset
input api.Dataset

The underlying dataset to time-shift.

offset compute.api.Duration

The time shift to apply. Positive values shift data forward in time, negative values shift backward.

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Fields of AnchorAlignedDataset
input api.Dataset

The dataset to align.

anchor DatasetAnchor

Selects the timestamp each anchored portion of the input is aligned by.

reference AnchorReference

When present, each anchor is aligned onto the referenced anchor timestamp instead of onto timestamp zero, so output remains in the input’s absolute time domain and the referenced portion is unshifted. When absent, the selected anchor becomes timestamp zero.

Set type to "withSeries".

withSeries WithSeriesDataset

​

Fields of WithSeriesDataset
input api.Dataset

The base dataset to which the new series will be added.

series array of NamedSeries

The named derived series to add.

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Fields of DropSeriesDataset
input api.Dataset

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

Set type to "reference".

reference DatasetReference

​

Fields of DatasetReference
name StringConstant

Name of the dataset reference to resolve from the context.

Set type to "withDimensions".

withDimensions DimensionsDataset

​

Fields of DimensionsDataset
input api.Dataset

The underlying dataset to tag.

dimensions array of Dimension

The dimensions to inject. Must not be empty, must have at most 10 entries, and every dimension must have a distinct tag key. A tag key must not be a ReservedTagKey, start with EVENT_LABEL_PREFIX:, or start with NOMINAL_.

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

Request

curl "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

{
  "spec": {
    "type": "asset",
    "asset": {
      "rid": {
        "type": "literal",
        "literal": "<literal>"
      }
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  }
}

Create dataset derived definition#

POST /catalog/v1/datasets/{datasetRid}/derived-definition

Initializes a derived definition on a dataset that is not yet derived and has no ingest or streaming state (files, create-time handle, bounds, external connection, or streaming sessions). Subsequent changes use commitDerivedDefinition. Throws if the dataset is already derived, is non-empty, referenced datasets are unauthorized, or the definition is nested/unsupported. Where the deployment resolves derived datasets through their pipelines, the same-UUID pipeline is created alongside, and later commits go to it.

Path parameters

datasetRid string (RID) required

​

Body

spec api.Dataset required

Initial derived dataset logic.

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Fields of Asset
rid StringConstant required

Resource identifier of an asset

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Fields of Run
rid StringConstant required

Resource identifier of a run

Set type to "saved".

saved SavedDataset

​

Fields of SavedDataset
rid StringConstant required

A data source RID, given as a literal or as a variable resolved from Context. A pipeline’s logic only accepts catalog datasets/pipelines, since it is persisted without context.

Set type to "search".

search SearchDataset

​

Fields of SearchDataset
target SearchTarget required

Whether to search assets or runs and with which query.

maxResults integer

Maximum number of assets or runs returned from search. Defaults to 10000 when omitted.

Set type to "combine".

combine CombinedDataset

​

Fields of CombinedDataset
inputs array of api.Dataset

The datasets to combine.

Set type to "tag".

tag TaggedDataset

​

Fields of TaggedDataset
input api.Dataset required

The underlying dataset to tag.

key StringConstant required

Tag key to inject onto each series in the dataset.

value StringConstant required

Tag value to assign to the injected key.

Set type to "filter".

filter FilteredDataset

​

Fields of FilteredDataset
input api.Dataset required

The underlying dataset to filter.

predicate TagPredicate required

Conjunctive tag predicate used to keep matching series.

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Fields of TimeShiftedDataset
input api.Dataset required

The underlying dataset to time-shift.

offset compute.api.Duration required

The time shift to apply. Positive values shift data forward in time, negative values shift backward.

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Fields of AnchorAlignedDataset
input api.Dataset required

The dataset to align.

anchor DatasetAnchor required

Selects the timestamp each anchored portion of the input is aligned by.

reference AnchorReference

When present, each anchor is aligned onto the referenced anchor timestamp instead of onto timestamp zero, so output remains in the input’s absolute time domain and the referenced portion is unshifted. When absent, the selected anchor becomes timestamp zero.

Set type to "withSeries".

withSeries WithSeriesDataset

​

Fields of WithSeriesDataset
input api.Dataset required

The base dataset to which the new series will be added.

series array of NamedSeries

The named derived series to add.

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Fields of DropSeriesDataset
input api.Dataset required

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

Set type to "reference".

reference DatasetReference

​

Fields of DatasetReference
name StringConstant required

Name of the dataset reference to resolve from the context.

Set type to "withDimensions".

withDimensions DimensionsDataset

​

Fields of DimensionsDataset
input api.Dataset required

The underlying dataset to tag.

dimensions array of Dimension

The dimensions to inject. Must not be empty, must have at most 10 entries, and every dimension must have a distinct tag key. A tag key must not be a ReservedTagKey, start with EVENT_LABEL_PREFIX:, or start with NOMINAL_.

message string required

Initial commit message for the derived definition’s main branch.

Response

spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Fields of Asset
rid StringConstant

Resource identifier of an asset

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Fields of Run
rid StringConstant

Resource identifier of a run

Set type to "saved".

saved SavedDataset

​

Fields of SavedDataset
rid StringConstant

A data source RID, given as a literal or as a variable resolved from Context. A pipeline’s logic only accepts catalog datasets/pipelines, since it is persisted without context.

Set type to "search".

search SearchDataset

​

Fields of SearchDataset
target SearchTarget

Whether to search assets or runs and with which query.

maxResults integer

Maximum number of assets or runs returned from search. Defaults to 10000 when omitted.

Set type to "combine".

combine CombinedDataset

​

Fields of CombinedDataset
inputs array of api.Dataset

The datasets to combine.

Set type to "tag".

tag TaggedDataset

​

Fields of TaggedDataset
input api.Dataset

The underlying dataset to tag.

key StringConstant

Tag key to inject onto each series in the dataset.

value StringConstant

Tag value to assign to the injected key.

Set type to "filter".

filter FilteredDataset

​

Fields of FilteredDataset
input api.Dataset

The underlying dataset to filter.

predicate TagPredicate

Conjunctive tag predicate used to keep matching series.

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Fields of TimeShiftedDataset
input api.Dataset

The underlying dataset to time-shift.

offset compute.api.Duration

The time shift to apply. Positive values shift data forward in time, negative values shift backward.

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Fields of AnchorAlignedDataset
input api.Dataset

The dataset to align.

anchor DatasetAnchor

Selects the timestamp each anchored portion of the input is aligned by.

reference AnchorReference

When present, each anchor is aligned onto the referenced anchor timestamp instead of onto timestamp zero, so output remains in the input’s absolute time domain and the referenced portion is unshifted. When absent, the selected anchor becomes timestamp zero.

Set type to "withSeries".

withSeries WithSeriesDataset

​

Fields of WithSeriesDataset
input api.Dataset

The base dataset to which the new series will be added.

series array of NamedSeries

The named derived series to add.

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Fields of DropSeriesDataset
input api.Dataset

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

Set type to "reference".

reference DatasetReference

​

Fields of DatasetReference
name StringConstant

Name of the dataset reference to resolve from the context.

Set type to "withDimensions".

withDimensions DimensionsDataset

​

Fields of DimensionsDataset
input api.Dataset

The underlying dataset to tag.

dimensions array of Dimension

The dimensions to inject. Must not be empty, must have at most 10 entries, and every dimension must have a distinct tag key. A tag key must not be a ReservedTagKey, start with EVENT_LABEL_PREFIX:, or start with NOMINAL_.

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "spec": {
    "type": "asset",
    "asset": {
      "rid": {
        "type": "literal",
        "literal": "<literal>"
      }
    }
  },
  "message": "<message>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "spec": {
            "type": "asset",
            "asset": {"rid": {"type": "literal", "literal": "<literal>"}},
        },
        "message": "<message>",
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "spec": {
            "type": "asset",
            "asset": {"rid": {"type": "literal", "literal": "<literal>"}},
        },
        "message": "<message>",
    },
)
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/catalog/v1/datasets/<dataset rid>/derived-definition",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "spec": {
                    "type": "asset",
                    "asset": {"rid": {"type": "literal", "literal": "<literal>"}},
                },
                "message": "<message>",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "spec": {
    "type": "asset",
    "asset": {
      "rid": {
        "type": "literal",
        "literal": "<literal>"
      }
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  }
}

Commit derived definition#

POST /catalog/v1/datasets/{datasetRid}/derived-definition/commit

Replaces the current derived definition by creating a permanent commit on main. Throws if the dataset is not derived, if referenced datasets are unauthorized, or if latestCommit is stale. Where the deployment resolves derived datasets through their same-UUID pipelines, this commits to the pipeline, and latestCommit is checked against the pipeline’s head.

Path parameters

datasetRid string (RID) required

​

Body

spec api.Dataset required

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Fields of Asset
rid StringConstant required

Resource identifier of an asset

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Fields of Run
rid StringConstant required

Resource identifier of a run

Set type to "saved".

saved SavedDataset

​

Fields of SavedDataset
rid StringConstant required

A data source RID, given as a literal or as a variable resolved from Context. A pipeline’s logic only accepts catalog datasets/pipelines, since it is persisted without context.

Set type to "search".

search SearchDataset

​

Fields of SearchDataset
target SearchTarget required

Whether to search assets or runs and with which query.

maxResults integer

Maximum number of assets or runs returned from search. Defaults to 10000 when omitted.

Set type to "combine".

combine CombinedDataset

​

Fields of CombinedDataset
inputs array of api.Dataset

The datasets to combine.

Set type to "tag".

tag TaggedDataset

​

Fields of TaggedDataset
input api.Dataset required

The underlying dataset to tag.

key StringConstant required

Tag key to inject onto each series in the dataset.

value StringConstant required

Tag value to assign to the injected key.

Set type to "filter".

filter FilteredDataset

​

Fields of FilteredDataset
input api.Dataset required

The underlying dataset to filter.

predicate TagPredicate required

Conjunctive tag predicate used to keep matching series.

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Fields of TimeShiftedDataset
input api.Dataset required

The underlying dataset to time-shift.

offset compute.api.Duration required

The time shift to apply. Positive values shift data forward in time, negative values shift backward.

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Fields of AnchorAlignedDataset
input api.Dataset required

The dataset to align.

anchor DatasetAnchor required

Selects the timestamp each anchored portion of the input is aligned by.

reference AnchorReference

When present, each anchor is aligned onto the referenced anchor timestamp instead of onto timestamp zero, so output remains in the input’s absolute time domain and the referenced portion is unshifted. When absent, the selected anchor becomes timestamp zero.

Set type to "withSeries".

withSeries WithSeriesDataset

​

Fields of WithSeriesDataset
input api.Dataset required

The base dataset to which the new series will be added.

series array of NamedSeries

The named derived series to add.

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Fields of DropSeriesDataset
input api.Dataset required

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

Set type to "reference".

reference DatasetReference

​

Fields of DatasetReference
name StringConstant required

Name of the dataset reference to resolve from the context.

Set type to "withDimensions".

withDimensions DimensionsDataset

​

Fields of DimensionsDataset
input api.Dataset required

The underlying dataset to tag.

dimensions array of Dimension

The dimensions to inject. Must not be empty, must have at most 10 entries, and every dimension must have a distinct tag key. A tag key must not be a ReservedTagKey, start with EVENT_LABEL_PREFIX:, or start with NOMINAL_.

message string required

​

latestCommit string

If present, validates that the latest commit on main matches this id, and otherwise throws CommitConflict.

Response

spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Fields of Asset
rid StringConstant

Resource identifier of an asset

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Fields of Run
rid StringConstant

Resource identifier of a run

Set type to "saved".

saved SavedDataset

​

Fields of SavedDataset
rid StringConstant

A data source RID, given as a literal or as a variable resolved from Context. A pipeline’s logic only accepts catalog datasets/pipelines, since it is persisted without context.

Set type to "search".

search SearchDataset

​

Fields of SearchDataset
target SearchTarget

Whether to search assets or runs and with which query.

maxResults integer

Maximum number of assets or runs returned from search. Defaults to 10000 when omitted.

Set type to "combine".

combine CombinedDataset

​

Fields of CombinedDataset
inputs array of api.Dataset

The datasets to combine.

Set type to "tag".

tag TaggedDataset

​

Fields of TaggedDataset
input api.Dataset

The underlying dataset to tag.

key StringConstant

Tag key to inject onto each series in the dataset.

value StringConstant

Tag value to assign to the injected key.

Set type to "filter".

filter FilteredDataset

​

Fields of FilteredDataset
input api.Dataset

The underlying dataset to filter.

predicate TagPredicate

Conjunctive tag predicate used to keep matching series.

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Fields of TimeShiftedDataset
input api.Dataset

The underlying dataset to time-shift.

offset compute.api.Duration

The time shift to apply. Positive values shift data forward in time, negative values shift backward.

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Fields of AnchorAlignedDataset
input api.Dataset

The dataset to align.

anchor DatasetAnchor

Selects the timestamp each anchored portion of the input is aligned by.

reference AnchorReference

When present, each anchor is aligned onto the referenced anchor timestamp instead of onto timestamp zero, so output remains in the input’s absolute time domain and the referenced portion is unshifted. When absent, the selected anchor becomes timestamp zero.

Set type to "withSeries".

withSeries WithSeriesDataset

​

Fields of WithSeriesDataset
input api.Dataset

The base dataset to which the new series will be added.

series array of NamedSeries

The named derived series to add.

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Fields of DropSeriesDataset
input api.Dataset

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

Set type to "reference".

reference DatasetReference

​

Fields of DatasetReference
name StringConstant

Name of the dataset reference to resolve from the context.

Set type to "withDimensions".

withDimensions DimensionsDataset

​

Fields of DimensionsDataset
input api.Dataset

The underlying dataset to tag.

dimensions array of Dimension

The dimensions to inject. Must not be empty, must have at most 10 entries, and every dimension must have a distinct tag key. A tag key must not be a ReservedTagKey, start with EVENT_LABEL_PREFIX:, or start with NOMINAL_.

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

Request

curl -X POST "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition/commit" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "spec": {
    "type": "asset",
    "asset": {
      "rid": {
        "type": "literal",
        "literal": "<literal>"
      }
    }
  },
  "message": "<message>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition/commit",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "spec": {
            "type": "asset",
            "asset": {"rid": {"type": "literal", "literal": "<literal>"}},
        },
        "message": "<message>",
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<dataset rid>/derived-definition/commit",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "spec": {
            "type": "asset",
            "asset": {"rid": {"type": "literal", "literal": "<literal>"}},
        },
        "message": "<message>",
    },
)
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/catalog/v1/datasets/<dataset rid>/derived-definition/commit",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "spec": {
                    "type": "asset",
                    "asset": {"rid": {"type": "literal", "literal": "<literal>"}},
                },
                "message": "<message>",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "spec": {
    "type": "asset",
    "asset": {
      "rid": {
        "type": "literal",
        "literal": "<literal>"
      }
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  }
}

Update global dataset bounds#

PUT /catalog/v1/datasets/{rid}/bounds-from-streaming

Update the bounds for a dataset without updating bounds of files within the dataset. If the current bounds of the dataset are not set, then the bounds of the request will be used. Otherwise, the bounds will be min(current start, request start), max(current end, request end).

Path parameters

rid string (RID) required

​

Body

bounds Bounds required

​

Fields of Bounds
start Timestamp required

​

Fields of Timestamp
seconds integer (int64) required

​

nanos integer (int64) required

​

end Timestamp required

​

type datasource.TimestampType required

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

Response

rid string (RID)

​

name string

​

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

Set type to "s3".

s3 S3Handle

​

Fields of S3Handle
bucket string

​

key string

​

description string

​

originMetadata DatasetOriginMetadata

​

Fields of DatasetOriginMetadata
path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

Values of TimeUnit
DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

Fields of TimestampMetadata
seriesName string

​

timestampType catalog.TimestampType

​

channelConfig ChannelConfig

​

Fields of ChannelConfig
prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

bounds Bounds

​

Fields of Bounds
start Timestamp

​

Fields of Timestamp
seconds integer (int64)

​

nanos integer (int64)

​

end Timestamp

​

type datasource.TimestampType

​

Values of datasource.TimestampType
RELATIVE

​

ABSOLUTE

​

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

​

timestampType WeakTimestampType

​

Values of WeakTimestampType
ABSOLUTE

​

RELATIVE

​

PENDING

​

allowStreaming boolean

​

granularity Granularity

​

Values of Granularity
NANOSECONDS

​

isArchived boolean

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

Fields of DefaultGroupByAndAggregationConfig
numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Set type to "sum".

sum Summation

​

Set type to "average".

average Average

​

Set type to "min".

min Minimum

​

Set type to "max".

max Maximum

​

Set type to "count".

count Count

​

Set type to "standardDeviation".

standardDeviation StandardDeviation

​

Set type to "rootMeanSquare".

rootMeanSquare RootMeanSquare

​

Set type to "percentile".

percentile Percentile

​

Set type to "udf".

udf NumericAggregationUdf

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

Fields of DerivedDefinition
spec api.Dataset

​

Set type to "asset".

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

Set type to "run".

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

Set type to "saved".

saved SavedDataset

​

Set type to "search".

search SearchDataset

​

Set type to "combine".

combine CombinedDataset

​

Set type to "tag".

tag TaggedDataset

​

Set type to "filter".

filter FilteredDataset

​

Set type to "timeShift".

timeShift TimeShiftedDataset

​

Set type to "alignByAnchor".

alignByAnchor AnchorAlignedDataset

​

Set type to "withSeries".

withSeries WithSeriesDataset

​

Set type to "dropSeries".

dropSeries DropSeriesDataset

​

Set type to "reference".

reference DatasetReference

​

Set type to "withDimensions".

withDimensions DimensionsDataset

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID)

​

committedAt string (date-time)

​

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Request

curl -X PUT "https://api.gov.nominal.io/api/catalog/v1/datasets/<rid>/bounds-from-streaming" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  }
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<rid>/bounds-from-streaming",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "bounds": {
            "start": {"seconds": 1, "nanos": 1},
            "end": {"seconds": 1, "nanos": 1},
            "type": "RELATIVE",
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/<rid>/bounds-from-streaming",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "bounds": {
            "start": {"seconds": 1, "nanos": 1},
            "end": {"seconds": 1, "nanos": 1},
            "type": "RELATIVE",
        },
    },
)
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/catalog/v1/datasets/<rid>/bounds-from-streaming",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "bounds": {
                    "start": {"seconds": 1, "nanos": 1},
                    "end": {"seconds": 1, "nanos": 1},
                    "type": "RELATIVE",
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<rid>",
  "name": "<name>",
  "handle": {
    "type": "s3",
    "s3": {
      "bucket": "<bucket>",
      "key": "<key>"
    }
  },
  "description": "<description>",
  "originMetadata": {
    "path": "<path>",
    "xSeriesIsAbsolute": true,
    "schemaDirectivePath": "<schema directive path>",
    "xSeriesColumnName": "<x series column name>",
    "xSeriesTimeUnit": "DAYS",
    "timestampMetadata": {
      "seriesName": "<series name>",
      "timestampType": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "channelConfig": {
      "prefixTreeDelimiter": "<prefix tree delimiter>"
    }
  },
  "bounds": {
    "start": {
      "seconds": 1,
      "nanos": 1
    },
    "end": {
      "seconds": 1,
      "nanos": 1
    },
    "type": "RELATIVE"
  },
  "properties": {
    "<key>": "<property value>"
  },
  "typedProperties": {
    "<key>": {
      "type": "stringValue",
      "stringValue": "<property value>"
    }
  },
  "labels": [
    "<label>"
  ],
  "timestampType": "ABSOLUTE",
  "allowStreaming": true,
  "granularity": "NANOSECONDS",
  "isArchived": true,
  "defaultGroupByAndAggregationConfig": {
    "numericAggregation": {
      "type": "sum",
      "sum": {}
    }
  },
  "derivedDefinition": {
    "spec": {
      "type": "asset",
      "asset": {
        "rid": {
          "type": "literal",
          "literal": "<literal>"
        }
      }
    },
    "commit": {
      "id": "<commit id>",
      "resourceRid": "<resource rid>",
      "parentCommit": "<commit id>",
      "mergeParentCommit": "<commit id>",
      "message": "<message>",
      "isWorkingState": true,
      "committedBy": "<user rid>",
      "committedAt": "2026-01-01T00:00:00Z"
    }
  },
  "channelSearchSplitTagKeys": [
    "<tag name>"
  ]
}

Archive dataset#

POST /catalog/v1/datasets/{datasetRid}/archive

Archives a dataset, which will hide it from search results unless the includeArchived flag is set to true. The dataset can still be directly accessed by its UUID/rid.

Path parameters

datasetRid string (RID) required

​

Response

No content (HTTP 204).

Request

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

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

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

import aiohttp


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


asyncio.run(main())

Response: 204

No content.

Unarchive dataset#

POST /catalog/v1/datasets/{datasetRid}/unarchive

Undoes the archiving of a dataset.

Path parameters

datasetRid string (RID) required

​

Response

No content (HTTP 204).

Request

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

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

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

import aiohttp


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


asyncio.run(main())

Response: 204

No content.

Get all properties and labels#

GET /catalog/v1/datasets/all-properties-labels

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/catalog/v1/datasets/all-properties-labels" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/datasets/all-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/catalog/v1/datasets/all-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/catalog/v1/datasets/all-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>"
  ]
}

Get log dataset for workspace#

GET /catalog/v1/workspaces/{workspaceRid}/log-dataset

Returns the log dataset RID for the specified workspace if configured and accessible to the caller.

Path parameters

workspaceRid string (RID) required

​

Response

The body is a string (RID).

When there is nothing to return, the response is HTTP 204 with no body.

Request

curl "https://api.gov.nominal.io/api/catalog/v1/workspaces/<workspace rid>/log-dataset" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/catalog/v1/workspaces/<workspace rid>/log-dataset",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

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


asyncio.run(main())

Response: 200

"<dataset rid>"

Errors#

Errors shows how these errors are sent.

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

Status

Name

Notes

400

CannotAddFileToDerivedDataset

Derived datasets are backed by other datasets and do not support file ingest.

400

CannotAddToLegacyDataset

The current dataset is legacy and does not support multiple files. Please re-ingest this dataset.

400

CannotCreateNestedDerivedDataset

Derived datasets cannot currently be backed by other derived datasets.

400

CannotCreateUnsupportedDerivedDataset

Derived datasets can currently only be backed by ordinary datasets.

400

CannotInitializeDerivedOnNonEmptyDataset

A derived definition can only be initialized on a dataset with no ingest or streaming state: no files, no create-time file handle, no global bounds, no external connection config, and no streaming sessions.

400

CannotUpdateNonDerivedDataset

Dataset derived definitions can only be updated for datasets that are already derived. To initialize a derived definition on an empty dataset, use createDatasetDerivedDefinition.

400

ChannelSearchSplitTagKeyNotInDerivedDefinition

A channel-search split tag key is not injected by the dataset’s derived definition. Split tag keys must name a tag the definition produces.

400

ChannelSearchSplitTagKeysWithoutDerivedDefinition

Channel-search split tag keys were supplied for a dataset with no derived definition. Only tag keys a derived definition produces can be split on; ingested tag keys cannot.

400

GranularityMismatch

Different time units are not allowed for the same dataset. Must be all nanoseconds.

404

ChannelNotFound

404

DatasetFileNotFound

404

DatasetNotFound

404

DatasetsNotFound

404

VideoFileNotFound

409

ConflictOnDatasetCreation

409

ConflictOnDatasetFileCreateOrUpdate

Dataset files must have globally unique S3 paths on creation. On update, the ingested_at timestamp must be unique.

409

ConflictOnSeriesCreation

409

DatasetAlreadyDerived

The dataset already has a derived definition. Use commitDerivedDefinition to update it.

409

DatasetExistsInOtherWorkspace

The dataset with the requested path already exists in another workspace.

409

InvalidStateForAddingAdditionalFile

The current dataset is not in a valid state for uploading an additional file - it is either failed or still ingesting the previous file.

500

DerivedDatasetsNotEnabled

Derived dataset creation is not enabled for this environment.

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

Status

Name

Notes

404

RunNotFound

Types#

Abs#

Computes the absolute value of each point in the series.

x NumericSeries required

Input numeric series.

AbsoluteThreshold#

Threshold defined as a real number corresponding the unit of a series.

value DoubleConstant required

Allowed spread, in the series’ own unit.

AbsoluteTimestamp#

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

iso8601 Iso8601Timestamp

​

epochOfTimeUnit EpochTimestamp

​

customFormat CustomTimestamp

​

AbsoluteTimestampSeries#

Replaces values in a series with the absolute timestamps.

input Series required

​

timeUnit TimeUnit required

The time unit used to define the output values. Throws an error if nanosecond or finer.

Acos#

Computes the arccosine of each value, returning radians.

x NumericSeries required

Input numeric series (values in [-1, 1]).

Add#

Adds two numeric series pointwise.

left NumericSeries required

Left-hand operand.

right NumericSeries required

Right-hand operand.

AfterPersistenceWindow#

The first point in the output range will be the first point after the condition has been true for the min duration and min points.

An empty JSON object, {}.

AggregateEnumSeries#

Aggregates values with duplicate timestamps in the input series values into a single value using the specified aggregation function.

input EnumSeries required

​

function EnumAggregationFunction required

​

AggregateNumericSeries#

DEPRECATED. Use a dedicated group-by-and-aggregate nodes instead.

Aggregates values with duplicate timestamps in the input series values into a single value using the specified aggregation function.

input NumericSeries required

​

function NumericAggregationFunction required

​

groupByTags array of StringConstant

Tags to group by for the aggregation. If left empty, the tags to group by will be equivalent to those in the input series. If specified, the result will be grouped ONLY by the specified tags. The tags specified here MUST be a (non-strict) subset of the input series’s group by tags.

aggregateByAllGroupings boolean

This field’s purpose is to distinguish between the two flavors of groupByTags being empty. It has no effect when groupByTags is non-empty. When true and groupByTags is empty, aggregate across all series in the input. When false and groupByTags is empty, the result will be grouped by the same tags as the input series.

interpolationConfiguration InterpolationConfiguration deprecated

If provided, interpolates values at timestamps where the input series has values before aggregating. If not provided, only aggregates when timestamps match exactly (existing behavior). Deprecated: Setting interpolation on this node is deprecated.

AggregateUnderRangesSeries#

Aggregates the input series under the ranges in the provided ranges series, and outputs a new series with one point at the start of each range, where the value is the aggregation result. If a range has no points, no point will be produced for it. If a range has no start, the point produced for it will be at the start of the compute request range.

input NumericSeries required

​

ranges RangeSeries required

​

operation NumericAggregationFunction required deprecated

Deprecated: Use a dedicated group-by-and-aggregate node instead (coming in a follow-up PR). This field is retained as required for backwards compatibility with existing callers.

AggregationBuilder#

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

rollingTime RollingTimeAggregationBuilder

​

rollingPoints RollingPointsAggregationBuilder

​

groupBy GroupByAggregationBuilder

​

Alignment#

Specifies how to set the timestamp grid for multi-input operations.

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

driverSeries DriverSeries

​

union Union

​

AllChannelsConnectionsScrapingConfig#

An empty JSON object, {}.

AllowNegativeValues#

An empty JSON object, {}.

AnchorAlignedDataset#

Aligns each anchored portion of the input dataset onto a common anchor timestamp while preserving grouping tags. Without a reference the selected anchor becomes timestamp zero, so the output is in a relative time domain; with a reference the anchors are aligned onto the referenced portion’s anchor and the output stays in the input’s absolute time domain. Currently run boundary, event, and range anchors are supported, and every storage-backed leaf of the input must resolve to run-backed branches.

input api.Dataset required

The dataset to align.

anchor DatasetAnchor required

Selects the timestamp each anchored portion of the input is aligned by.

reference AnchorReference

When present, each anchor is aligned onto the referenced anchor timestamp instead of onto timestamp zero, so output remains in the input’s absolute time domain and the referenced portion is unshifted. When absent, the selected anchor becomes timestamp zero.

AnchorReference#

Selects the anchor timestamp every other anchor is aligned onto.

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

earliestAnchor EarliestAnchorReference

Aligns every anchor onto the earliest anchor resolved from the input, so the earliest-anchored run is unshifted and every other run shifts backwards onto it.

AndSeries#

Combines two boolean series point-wise using logical AND, producing true where both inputs are true and false otherwise.

left BooleanSeries required

​

right BooleanSeries required

​

api.Dataset#

A logical bundle of named series. For the time being, columns are each a time series (series name + tags). A dataset is either rooted in persisted data (asset or dataset) or defined as a transformation of another dataset.

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

asset Asset

Single asset. Expands to one grouping per data scope on the asset. Groupings are tagged by assetRid and dataScope so callers can safely compose multiple assets with combine.

run Run

Single run. Expands to one grouping per data source attached to the run: asset-typed sources contribute one grouping per data scope on the asset; dataset-typed sources contribute one grouping per dataset. Groupings are tagged by runRid and dataScope; asset-typed groupings additionally carry assetRid so callers can safely compose multiple runs with combine.

saved SavedDataset

​

search SearchDataset

​

combine CombinedDataset

​

tag TaggedDataset

​

filter FilteredDataset

​

timeShift TimeShiftedDataset

​

alignByAnchor AnchorAlignedDataset

​

withSeries WithSeriesDataset

​

dropSeries DropSeriesDataset

​

reference DatasetReference

​

withDimensions DimensionsDataset

​

ApiScrapingConfig#

This config is used to scrape data from an external connections service.

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

allChannels AllChannelsConnectionsScrapingConfig

​

channelAllowList ChannelAllowListConnectionsScrapingConfig

​

channelBlockList ChannelBlockListConnectionsScrapingConfig

​

ApproximateThresholdOperator#

EQUAL_TO

​

NOT_EQUAL_TO

​

ApproximateThresholdRanges#

Produces a list of ranges for which the threshold condition is satisfied.

input NumericSeries required

​

threshold DoubleConstant required

​

tolerance DoubleConstant required

​

operator ApproximateThresholdOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

ArithmeticSeries#

inputs map of LocalVariableName to NumericSeries

​

expression string required

​

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

ArraySeries#

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

numeric1d Numeric1dArraySeries

​

enum1d Enum1dArraySeries

​

Asin#

Computes the arcsine of each value, returning radians.

x NumericSeries required

Input numeric series (values in [-1, 1]).

Asset#

Asset reference for Dataset.asset. The rid field accepts either a literal asset RID or a StringConstant reference resolved from Context.

rid StringConstant required

Resource identifier of an asset

AssetChannel#

assetRid StringConstant required

​

dataScopeName StringConstant required

Used to disambiguate when multiple data scopes within this asset contain channels with the same name.

channel StringConstant required

​

additionalTags map of string to StringConstant deprecated

Deprecated: Use additionalTagFilters

additionalTagFilters TagFilters

Tags to filter the channel by, in addition to tag filters defined for a given Asset data scope. Throws on collisions with tag keys already defined for the given Asset data scope. Only returns points that match both sets of tag filters. For log series, include arg filters here in addition to tag filters.

tagsToGroupBy array of string deprecated

Deprecated: Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.

groupByTags array of StringConstant

Tags that the channel should be grouped by. If this is non-empty a grouped result will be returned with an entry for each grouping. Only one of tagsToGroupBy and groupByTags should be specified.

AssetsSearchTarget#

Search assets. Each match expands to one grouping per data scope on that asset.

query ResourceSearchQuery required

Predicate tree used to filter matching assets.

Atan2#

Computes the two-argument arctangent atan2(y, x) using signs to determine the quadrant.

y NumericSeries required

Y-coordinate series.

x NumericSeries required

X-coordinate series.

Average#

A average that gives the same weight to each observation inside the time window

An empty JSON object, {}.

BandPassConfiguration#

lowPassbandFrequency DoubleConstant required

​

highPassbandFrequency DoubleConstant required

​

BandStopConfiguration#

lowStopbandFrequency DoubleConstant required

​

highStopbandFrequency DoubleConstant required

​

BigQueryChannelNameComponent#

includeProject boolean required

Whether to include the project name in the channel name.

includeDataset boolean required

Whether to include the dataset name in the channel name.

includeTable boolean required

Whether to include the table name in the channel name.

BigQueryConnectionDetails#

region string required

The region of the BigQuery Project (e.g. “us-east1”)

project string required

The name of the BigQuery Project

dataset string required

The name of the dataset within the project

table string required

The name of the table within the dataset

serviceAccountKeySecretRid string (RID) required

Secret Rid of service account key stored in Secrets Service.

BigQueryScrapingConfig#

timeColumn string required

The name of the column that holds the timestamp.

tagColumns array of string

The name of the columns that should be interpreted as tag columns

channelNameComponents BigQueryChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name. By default, we don’t add anything to the column name.

separator string

The separator that delimits the parts of the channel name. If ommitted, the default is a “.”.

BinaryArithmeticOperation#

ATAN2

Calculates the angle measure between the x-axis and a ray from the origin to a point (input2, input1) in radians. Note the order of arguments.

BinaryArithmeticSeries#

Applies a point-wise transformation to a pair of series.

input1 NumericSeries required

​

input2 NumericSeries required

​

operation BinaryArithmeticOperation required

​

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

BitAnd#

Applies a bitwise AND between each value (cast to int64) and the operand.

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

The value to AND with each point.

BitAndFunction#

operand integer (int64) required

​

BitOperationFunction#

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

and BitAndFunction

​

or BitOrFunction

​

xor BitXorFunction

​

shiftRight BitShiftRightFunction

​

shiftLeft BitShiftLeftFunction

​

bitTest BitTestFunction

​

BitOperationSeries#

Casts input series values to long before applying the bitwise operation.

input NumericSeries required

​

function BitOperationFunction required

​

BitOr#

Applies a bitwise OR between each value (cast to int64) and the operand.

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

The value to OR with each point.

BitOrFunction#

operand integer (int64) required

​

BitShiftLeft#

Left-shifts the bits in each value (cast to int64) by the given number of positions.

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

Number of positions to shift left.

BitShiftLeftFunction#

Shifts the bits in each value left according to the given operand.

operand integer required

​

BitShiftRight#

Right-shifts the bits in each value (cast to int64) by the given number of positions.

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

Number of positions to shift right.

BitShiftRightFunction#

Right shifts the bits in each value right according to the given operand.

operand integer required

​

BitTest#

Returns the bit at the specified index for each value (cast to int64), where index 0 is the least significant bit.

input NumericSeries required

Input numeric series (values cast to int64).

index IntegerConstant required

Zero-based bit index, where 0 is the least significant bit.

BitTestFunction#

Returns the bit at the specified index, where the right-most bit has index 0.

index integer required

​

BitXor#

Applies a bitwise XOR between each value (cast to int64) and the operand.

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

The value to XOR with each point.

BitXorFunction#

operand integer (int64) required

​

BooleanRanges#

Produces ranges spanning the regions where a boolean input is true.

The condition is evaluated point-wise at each aligned timestamp; the numeric series it compares are aligned against each other the same way arithmetic between them would be.

input BooleanSeries required

The condition whose true regions become ranges.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

Selects whether the output begins at the first match or after persistence is satisfied.

BooleanSeries#

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

greaterThan GreaterThanSeries

​

lessThan LessThanSeries

​

equalTo EqualToSeries

​

notEqualTo NotEqualToSeries

​

greaterThanOrEqualTo GreaterThanOrEqualToSeries

​

lessThanOrEqualTo LessThanOrEqualToSeries

​

and AndSeries

​

or OrSeries

​

Bounds#

start Timestamp required

​

end Timestamp required

​

type datasource.TimestampType required

​

BuiltinConstant#

A system-defined constant referenceable by name. The server resolves the symbol to its numeric value during query resolution.

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

math MathConstant

​

physical PhysicalConstant

​

BuiltInCurveFit#

A closed-form curve fit (exponential, logarithmic, or power) of the enclosing target (y) against the chosen independent variable (x): either sample time (a time variable) or another series (a numeric variable).

independentVariable CurveFitVariable required

The x axis the target is fit against — either relative sample time or another series.

catalog.Dataset#

rid string (RID) required

​

name string required

​

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

description string

​

originMetadata DatasetOriginMetadata required

​

bounds Bounds

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

labels array of string

​

timestampType WeakTimestampType required

​

allowStreaming boolean required

​

granularity Granularity required

​

isArchived boolean required

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

catalog.TimestampType#

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

relative RelativeTimestamp

​

absolute AbsoluteTimestamp

​

CategoricalEqualityRangesV2#

Produces ranges where all categorical inputs are equal or are not all equal.

inputs array of EnumSeries

The series compared against each other. At least two are required.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

Selects whether the output begins at the first match or after persistence is satisfied.

equalityOperator EqualityOperator required

​

CategoricalOnChangeRangesV2#

Produces a zero-duration range whenever a categorical input changes value.

input EnumSeries required

​

CategoricalStaleRangesV2#

Produces ranges where a categorical input has no data for at least a duration.

input EnumSeries required

​

threshold compute.api.Duration required

Minimum gap without data that produces an output range.

CategoryFilterRangesV2#

Produces ranges where a categorical input matches a set of values.

input EnumSeries required

​

values array of StringConstant

Category labels matched against each input point.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

Selects whether the output begins at the first match or after persistence is satisfied.

operator EnumFilterOperator required

​

ChannelAllowListConnectionsScrapingConfig#

channelAllowList array of string

Only channels in this set will be scraped. Must not be empty.

ChannelBlockListConnectionsScrapingConfig#

channelBlockList array of string

Only channels not in this set will be scraped. Must not be empty.

ChannelConfig#

prefixTreeDelimiter string

If set, will construct a prefix tree for channels of the dataset using the given delimiter.

ChannelSeries#

Deprecated: prefer SelectSeries-based nodes with an explicit dataset (or VariableValue.series when binding a series to a variable), which select from an arbitrary dataset and let the consuming node decide the series type.

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

dataSource DataSourceChannel

​

asset AssetChannel

​

run RunChannel

​

CombinedDataset#

Combines multiple datasets into a single dataset by taking the union of all points from each input (akin to SQL {@code UNION ALL}). Duplicate timestamps are preserved rather than merged; callers that need aggregation should wrap the selected series downstream.

inputs array of api.Dataset

The datasets to combine.

CombineStructSeries#

Combines named input series into one struct-valued series. Each map key becomes a field name in the resulting struct; a downstream UDF receives the struct as a JSON object keyed by these names and parses it itself. Alignment uses the interpolation configuration before producing row-aligned values.

inputs map of string to Series

Input series keyed by struct field name.

interpolationConfiguration InterpolationConfiguration deprecated

Optional interpolation rules used when aligning input series before combining them. Deprecated: Setting interpolation on this node is deprecated.

Commit#

id string required

​

resourceRid string (RID) required

​

parentCommit string

​

mergeParentCommit string

​

message string required

​

isWorkingState boolean required

A working state commit is created via the saveWorkingState endpoint and is non-permanent. In the future, it may be compacted and not exist.

committedBy string (RID) required

​

committedAt string (date-time) required

​

compute.api.Duration#

A length of time. Can be constructed from literal values in various units or composed via arithmetic. Used for window sizes, time shifts, persistence thresholds, and resampling intervals.

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

reference Reference

​

nanoseconds DurationNanoseconds

​

milliseconds DurationMilliseconds

​

seconds DurationSeconds

​

minutes DurationMinutes

​

hours DurationHours

​

days DurationDays

​

add DurationAdd

​

subtract DurationSubtract

​

negate DurationNegate

​

ComputeEventQuery#

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

searchText StringConstant

​

after TimestampConstant

Filters to events after this timestamp, exclusive. This includes events that start before, but end after this time.

before TimestampConstant

Filters to events before this timestamp, exclusive. This includes events that start before, but end after this time.

advancedTimeFilter EventTimeFilter

​

asset StringConstant

​

template StringConstant

​

workbook StringConstant

​

dataReview StringConstant

​

originType SearchEventOriginType

​

dataReviewCheck StringConstant

​

dispositionStatus EventDispositionStatus

​

priority StringConstant

​

assignee StringConstant

​

eventType EventType

​

createdBy StringConstant

​

label StringConstant

​

property rids.api.Property

​

and array of ComputeEventQuery

​

or array of ComputeEventQuery

​

not ComputeEventQuery

​

workspace StringConstant

​

procedure StringConstant

​

procedureExecution StringConstant

​

stepId StringConstant

​

ComputeNode#

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

enum EnumSeries

​

numeric NumericSeries

​

log LogSeries

​

ranges RangeSeries

​

array ArraySeries

​

struct StructSeries

​

curveFit CurveFit

Deprecated: use curveV2 (CurveFitV2) instead.

curveV2 CurveFitV2

​

video Reference

​

raw Reference deprecated

Deprecated: wrap raw references in a typed compute node.

ComputeNodeWithContext#

seriesNode ComputeNode required

​

context Context required

​

connection.api.Duration#

unit TemporalUnit required

​

count integer required

​

ConnectionDetails#

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

timescale TimescaleConnectionDetails

​

influx Influx2ConnectionDetails

​

influx1 Influx1ConnectionDetails

​

nominal NominalConnectionDetails

​

timestream TimestreamConnectionDetails

​

visualCrossing VisualCrossingConnectionDetails

​

bigQuery BigQueryConnectionDetails

​

ConnectionStatus#

isConnected boolean required

​

ConstantNumericSeries#

A synthetic series that produces a constant value across the entire time range.

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

double DoubleConstant

Create from a floating-point constant.

ContainsSeries#

Maps each log line to 1.0 when operator matches it and 0.0 otherwise.

input LogSeries required

​

operator LogFilterOperator required

​

Context#

variables map of VariableName to VariableValue

​

functionVariables map of FunctionReference to FunctionVariables deprecated

Deprecated: This field is deprecated and will be removed in a future version.

datasetReferences map of DatasetReferenceName to api.Dataset

Named datasets looked up by DatasetReference nodes in the compute tree.

defaultFillStrategy FillStrategy

Default fill strategy applied at every multi-input alignment boundary where no per-node interpolationConfiguration is specified. When absent, falls back to the server-configured default (forward fill with a 1 second fill limit).

defaultAlignmentStrategy Alignment

Default alignment strategy applied at every multi-input alignment boundary where no per-node alignment strategy is specified. When absent, falls back to the server default (driver-series alignment).

applyDataScopeOffsets boolean

When true, dataset resolution applies each data scope’s persisted offset as a time shift, and the client must not pre-apply those offsets itself. When absent or false, scope offsets are left to the client, preserving behavior for legacy clients that inject equivalent timeShift nodes into the compute request. Read from the context in scope at resolution time.

resolveAssetsThroughDatasets boolean

When true, Dataset.asset, the asset-typed sources of Dataset.run, and asset or run search expand through each asset’s mirrored derived dataset instead of its data scopes. Branches then carry the dataset’s declared channel-search split tag keys in place of the reserved DATA_SCOPE tag, so callers must filter and group on those keys; the definition’s own time shifts apply regardless of applyDataScopeOffsets; and an asset with no mirrored dataset resolves to no data. When absent or false, assets expand from their data scopes as before.

Cos#

Computes the trigonometric cosine of each value (input in radians).

x NumericSeries required

Input numeric series (radians).

Count#

The number of points inside the time window.

An empty JSON object, {}.

CreateDataset#

name string required

​

handle Handle deprecated

Deprecated: Handles should only be specified when adding files to datasets

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties

originMetadata DatasetOriginMetadata required

​

labels array of string

​

properties map of PropertyName to string deprecated

User-defined dataset properties. The UTF-8 JSON serialization must not exceed 2,000 bytes. Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

description string

​

granularity Granularity

Granularity of dataset timestamps. Defaults to nanoseconds.

isV2Dataset boolean deprecated

If true, the dataset should be ingested to the v2 tables and is compatible with streaming. Deprecated: Regardless of what value is specified, this flag is treated as true by the service.

workspace string (RID)

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

markingRids array of string (RID)

The markings to apply to the created dataset. If not provided, the dataset will be visible to all users in the same workspace.

derivedDefinition CreateDerivedDefinition

Definition for a derived dataset. When present, the created dataset is virtual and does not ingest or persist dataset files.

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Every key must be produced by derivedDefinition; ingested tag keys, and keys supplied without a derivedDefinition, are rejected.

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

If set, the dataset’s default group-by and aggregation config.

CreateDerivedDefinition#

spec api.Dataset required

Initial derived dataset logic.

message string required

Initial commit message for the derived definition’s main branch.

CumulativeSumSeries#

Calculates the running total of the series values.

input NumericSeries required

​

startTimestamp TimestampConstant required

​

CurveFit#

Deprecated: use CurveFitV2 instead.

curveFitPlotType CurveFitPlotType required

​

curveFitDetails CurveFitDetails required

​

curveFitOptions CurveFitOptions required

​

CurveFitBoundsConfiguration#

min DoubleConstant

​

max DoubleConstant

​

CurveFitDetails#

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

exponential ExponentialCurve

​

logarithmic LogarithmicCurve

​

polynomial PolynomialCurve

​

power PowerCurve

​

CurveFitOptions#

startTime TimestampConstant required

​

endTime TimestampConstant required

​

CurveFitPlotType#

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

timeSeries TimeSeriesCurveFit

​

scatter ScatterCurveFit

​

CurveFitRange#

startTime TimestampConstant required

​

endTime TimestampConstant required

​

CurveFitSeriesVariable#

series NumericSeries required

​

boundsConfig CurveFitBoundsConfiguration

Optional inclusive bounds selecting which variable samples are fit. Samples outside the bounds are excluded.

CurveFitTarget#

The series a curve is fit against (the y of the fit). Modeled as a union so additional target types can be added in the future; today the only arm is a numeric series.

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

numeric CurveFitSeriesVariable

​

CurveFitTimeVariable#

timeUnit TimeUnit

The unit of the time variable in the formula expression. If not specified, the time unit is assumed to be seconds.

CurveFitV2#

target CurveFitTarget required

Target to fit the equation against.

fitRange CurveFitRange required

The range to fit the curve over

curveToFit CurveFitV2Details required

The curve type to fit against the target series.

CurveFitV2Details#

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

exponential BuiltInCurveFit

​

logarithmic BuiltInCurveFit

​

polynomial PolynomialCurveFit

​

power BuiltInCurveFit

​

custom CustomCurveFit

​

CurveFitVariable#

A series a curve fit reads from: another numeric series, or the target’s own sample timestamps. Used both as the named formula inputs of a custom fit and as the independent (x) axis of a built-in fit.

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

numeric CurveFitSeriesVariable

​

time CurveFitTimeVariable

​

CustomCurveFit#

formula StringConstant required

A mathematical expression in terms of variable and parameter names, e.g. a * x + b * sin(x). Variable names must match keys in the variables map; parameter names must match keys in the parameters map.

variables map of LocalVariableName to CurveFitVariable

Named input series referenced in the formula. Keys must match the variable names used in the formula expression.

parameters map of string to DoubleConstant

Named fitting parameters and their initial guesses. Keys must match the parameter names used in the formula expression; values are the starting points passed to the optimizer. The target the curve is fit against is the y of the enclosing curve fit (the timeSeries series values, or the scatter y series).

CustomTimestamp#

format string required

The format string should be in the format of the DateTimeFormatter class in Java.

defaultYear integer

Year is accepted as an optional field for cases like IRIG time format, and will be assumed as current year if not provided.

defaultDayOfYear integer

Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format.

DatasetAnchor#

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

run IntervalAnchor

Uses the start or end of each run as its anchor. The input dataset must resolve exclusively to run-backed branches.

DatasetFile#

id string (UUID) required

​

datasetRid string (RID) required

​

name string required

​

handle Handle required

​

fileSizeBytes integer (int64)

Size in bytes of the stored dataset file; for transforming ingests this is the produced output, not the original upload.

bounds Bounds

​

uploadedAt string (date-time) required

Timestamp that the file was received and stored, but not processed or made available to consumers.

ingestedAt string (date-time)

Timestamp that the file is ingested at and made available for processing. If the file has failed to be ingested for any reason or is still being processed, then this value will be empty.

ingestStatus IngestStatusV2 required

Ingest status. The in-progress sub-phases (queued, parsing, ingesting) are surfaced as inProgress with the phase carried in InProgressResult.inProgressDetails, so consumers see a stable top-level lifecycle.

timestampMetadata TimestampMetadata

​

ingestTagMetadata IngestTagMetadata

​

originFilePaths array of string

​

ingestJobRid string (RID)

​

ingestTransformRid string (RID)

The ingest transform within ingestJobRid that produced this file. An ingest job may fan out to many transforms, so this pins the file to the specific unit of work (and extractor) that created it — resolvable via IngestJobService#getIngestTransform. Extractor logs are tagged with this transform’s UUID (the RID locator), so this also links a file to the logs of the transform that produced it. Absent for directly uploaded files and for files ingested before this link was recorded.

deletedAt string (date-time)

Timestamp that the file is deleted at, only present if the file has been deleted.

metadata DatasetFileMetadata

File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.

DatasetFileMetadata#

Metadata specific to different file types stored in datasets.

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

video VideoFileMetadata

​

DatasetFileSortField#

UPLOADED_AT

​

DatasetFileSortOptions#

isDescending boolean required

​

field DatasetFileSortField required

​

DatasetOriginMetadata#

path string

Deprecated in favor of FileOriginMetadata

xSeriesIsAbsolute boolean

Deprecated in favor of FileOriginMetadata

schemaDirectivePath string

Deprecated in favor of FileOriginMetadata

xSeriesColumnName string

Deprecated in favor of FileOriginMetadata

xSeriesTimeUnit TimeUnit

Deprecated in favor of FileOriginMetadata

timestampMetadata TimestampMetadata

Deprecated in favor of FileOriginMetadata

channelConfig ChannelConfig

​

DatasetReference#

References a named dataset in Context.datasetReferences.

name StringConstant required

Name of the dataset reference to resolve from the context.

datasource.TimestampType#

RELATIVE

​

ABSOLUTE

​

DataSourceChannel#

dataSourceRid StringConstant required

​

channel StringConstant required

​

tags map of string to StringConstant deprecated

Deprecated: Use tagFilters

tagFilters TagFilters

Tags to filter the channel by. Only returns points from the channel where tag values match the provided expression. For log series, include arg filters here in addition to tag filters.

tagsToGroupBy array of string deprecated

Deprecated: Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.

groupByTags array of StringConstant

Tags that the channel should be grouped by. If this is non-empty a grouped result will be returned with an entry for each grouping. Only one of tagsToGroupBy and groupByTags should be specified.

DefaultGroupByAndAggregationConfig#

Dataset-level defaults that clients apply when creating new channel references.

numericAggregation NumericAggregationOperator

If set, the default aggregation applied to merge points of a numeric series that share an exact timestamp.

Deleted#

An empty JSON object, {}.

DeletionInProgress#

An empty JSON object, {}.

DerivativeSeries#

Calculates the rate of change between subsequent points.

input NumericSeries required

​

timeUnit TimeUnit

Time unit used to calculate the derivative. Defaults to seconds if not specified.

negativeValuesConfiguration NegativeValueConfiguration

Defines the strategy for handling negative output values. Defaults to allowNegativeValues if not specified.

DerivedDefinition#

A derived dataset definition pinned to the commit that produced it.

spec api.Dataset required

​

commit Commit required

​

DerivedSeries#

Represents a derived series within a compute graph. This is a series that is derived from a function within a module.

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

function FunctionDerivedSeries

​

Dimension#

A value derived per asset or run, injected as a tag.

tagKey StringConstant

The tag key to inject the value under. Defaults to the key derived by value.

value DimensionValue required

The value to inject.

DimensionsDataset#

Injects one tag per dimension onto every series of the underlying dataset, valued from the asset or run the series belongs to. This makes resource metadata usable as a grouping, filtering and aggregation dimension with selectTags, tag predicates and groupByTags. Group by the dimension together with ASSET_RID (or RUN_RID) to keep each resource separate, or by the dimension alone to pivot so that resources sharing a value fall into one group.

Dimensions are only supported on asset and run branches. Any other branch, such as a saved dataset or a derived series from withSeries, gets the reserved value NOMINAL_ABSENT for every dimension. To group derived series by a dimension, apply withDimensions to the withSeries input instead, so that the series they are computed from carry the dimension tags. A dimension tag replaces a series tag with the same key.

input api.Dataset required

The underlying dataset to tag.

dimensions array of Dimension

The dimensions to inject. Must not be empty, must have at most 10 entries, and every dimension must have a distinct tag key. A tag key must not be a ReservedTagKey, start with EVENT_LABEL_PREFIX:, or start with NOMINAL_.

DimensionValue#

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

stringProperty StringPropertyDimension

The value of a string property on the asset or run.

identity IdentityDimension

The value of an asset’s primary key under one of its types.

Divide#

Divides left by right pointwise.

left NumericSeries required

Numerator.

right NumericSeries required

Denominator.

DoubleConstant#

A floating-point constant that can be a literal value, a named variable reference, or a named builtin constant.

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

literal number

Create from a literal floating-point value.

variable string

Create from a named reference name.

builtin BuiltinConstant

Create from a named builtin constant; the server resolves the numeric value.

DriverSeries#

Uses the driver series timestamps as the alignment grid.

An empty JSON object, {}.

DropSeriesDataset#

Removes series from the base dataset by name: raw and derived series alike are no longer selectable under those names. Dropping a name absent from input has no effect. Combined with WithSeriesDataset, which can expose a series under another name, this renames a series: dropSeries(withSeries(input, [newName = select(oldName)]), [oldName]).

input api.Dataset required

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

DurationAdd#

The sum of two durations.

left compute.api.Duration required

First duration.

right compute.api.Duration required

Second duration.

DurationConstant#

A duration constant that can be a literal value or a named variable reference.

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

literal run.api.Duration

Create from a literal duration value.

variable string

Create from a named reference name.

DurationDays#

Constructs a duration from a number of days.

days IntegerConstant required

The number of days.

DurationFilterRanges#

Filters a list of ranges down to only those satisfying a threshold condition on the range’s duration.

input RangeSeries required

​

threshold DurationConstant required

​

operator ThresholdOperator required

​

unboundedBehavior UnboundedBehavior

​

DurationFilterRangesV2#

Filters ranges by duration using an authored Duration expression.

input RangeSeries required

​

duration compute.api.Duration required

The duration each input range is compared against.

unboundedBehavior UnboundedBehavior

How a range with an open start or end is measured. Defaults to treating the missing bound as the edge of the compute request window.

comparison ThresholdOperator required

​

DurationHours#

Constructs a duration from a number of hours.

hours IntegerConstant required

The number of hours.

DurationMilliseconds#

Constructs a duration from a number of milliseconds.

milliseconds IntegerConstant required

The number of milliseconds.

DurationMinutes#

Constructs a duration from a number of minutes.

minutes IntegerConstant required

The number of minutes.

DurationNanoseconds#

Constructs a duration from a number of nanoseconds. Limited to values within the 32-bit integer range (~2.1 billion ns, or ~2.1 seconds). For larger durations, use DurationSeconds or DurationMilliseconds.

nanoseconds IntegerConstant required

The number of nanoseconds.

DurationNegate#

Negates a duration (reverses its sign).

input compute.api.Duration required

The duration to negate.

DurationSeconds#

Constructs a duration from a number of seconds.

seconds IntegerConstant required

The number of seconds.

DurationSubtract#

The difference of two durations (left minus right).

left compute.api.Duration required

Duration to subtract from.

right compute.api.Duration required

Duration to subtract.

EarliestAnchorReference#

Selects the earliest anchor resolved from the input.

An empty JSON object, {}.

Empty#

An empty JSON object, {}.

EnrichedDataset#

rid string (RID) required

​

uuid string (UUID) required

​

name string required

​

description string

​

displayName string required

​

metadata map of string to string deprecated

Deprecated: Deprecated in favor of properties.

handle Handle deprecated

Deprecated: Deprecated. Use DatasetFile#handle

ingestDate string (date-time) required

Dataset creation time. The name is historical; use lastIngestedAt for when data was last added.

lastIngestedAt string (date-time)

When data was last added to this dataset, as the latest of a successful file ingest and streaming-session activity. Empty when the dataset has never received either.

ingestStatus IngestStatus deprecated

Deprecated: Deprecated. Use lastIngestStatus.

originMetadata DatasetOriginMetadata required

​

lastIngestStatus IngestStatusV2 required

​

retentionPolicy RetentionPolicy required

​

source string

​

bounds Bounds

​

timestampType WeakTimestampType required

​

labels array of string

​

properties map of PropertyName to string deprecated

Deprecated: use typedProperties

typedProperties map of PropertyName to TypedPropertyValue

​

granularity Granularity required

​

allowStreaming boolean required

​

isArchived boolean required

​

defaultGroupByAndAggregationConfig DefaultGroupByAndAggregationConfig

​

migratedFromConnectionRid string (RID)

Connection RID whose data source was migrated into this dataset. Empty for datasets that were not created by the legacy connection-to-dataset migrations, or when the original connection row no longer exists.

externalConnectionMetadata ExternalConnectionMetadata

​

derivedDefinition DerivedDefinition

Definition for a derived dataset. When present, this dataset is virtual and backed by the referenced provided Dataset definition instead of persisted dataset files.

channelSearchSplitTagKeys array of string

Tag keys whose distinct values channel search surfaces as separate series. Each listed key is retained on this dataset’s channel-search locators, so a channel carrying two values of that key appears once per value instead of collapsing into a single entry — the behavior a data scope has on an asset. Keys not listed here stay available for filtering and grouping but do not contribute to series cardinality. Every key must be produced by this dataset’s derivedDefinition. Ingested tag keys cannot be split on.

Enum1dArraySelectTagsSeries#

Subsets the tag dimensions of the input enum 1d array series to the given tag keys. Preserves the input series’ cardinality: points that share the selected keys but differ on dropped keys remain distinct.

input Enum1dArraySeries required

​

tagKeys array of StringConstant

​

Enum1dArraySeries#

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

channel ChannelSeries

​

raw Reference

​

derived DerivedSeries

​

selectEnum1dArray SelectSeries

​

extractFromStruct ExtractEnum1dArrayFromStructSeries

​

toStartOfInterval Enum1dArrayToStartOfIntervalSeries

​

timeShift Enum1dArrayTimeShiftSeries

​

filterByTag Enum1dArrayTagFilterSeries

​

selectTags Enum1dArraySelectTagsSeries

​

Enum1dArrayTagFilterSeries#

Applies a tag predicate to the enum 1d array series produced by input.

input Enum1dArraySeries required

​

predicate TagPredicate required

​

Enum1dArrayTimeShiftSeries#

input Enum1dArraySeries required

​

duration DurationConstant required

​

Enum1dArrayToStartOfIntervalSeries#

Snaps each point’s timestamp to the start of its enclosing fixed-size time bucket. Buckets are epoch-aligned: a point at timestamp t (nanoseconds) is rewritten to floor(t / window) * window. Values and tag groupings are preserved; aggregation of points that collide on the snapped timestamp is the responsibility of downstream nodes.

input Enum1dArraySeries required

​

window compute.api.Duration required

​

EnumAggregation#

Aggregates an input series using an enum aggregation operator. Rolling aggregation builders are not supported; only the group-by shape is accepted at resolution time. Min and Max require a categorical input series. Udf also accepts a numeric input, which reaches the function as Vec<f64>; a categorical input reaches it as Vec<String>.

input AggregationBuilder required

The aggregation shape to apply the operator over. Only the group-by shape is supported; rolling builders are rejected at resolution time. The Python enum_aggregation(...) sugar form is categorical-only. Numeric builders expose the UDF-only enum_udf(...) and rust_enum_udf(...) terminals instead.

operator EnumAggregationOperator required

The enum reduction applied to each group (min, max, or a user-defined function).

EnumAggregationFunction#

Aggregates duplicate timestamps on a single enum series. For aggregating across tag groupings, use EnumSeries.enumAggregation with aggregation.AggregationBuilder.groupBy.

MIN

​

MAX

​

EnumAggregationOperator#

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

min Empty

​

max Empty

​

udf EnumAggregationUdf

​

EnumAggregationUdf#

A user-defined enum aggregation. The supported ABI is a Rust function with one vector input and a String return value. Numeric input series use Vec<f64> and enum input series use Vec<String>.

source UdfSource required

​

EnumConstantResampleInterpolationConfiguration#

Fills all empty resample intervals with a single constant value.

If a resampled time interval (bucket) contains no data points from the input, it will be assigned the specified ‘constant’ as a default value. This applies to gaps at the start of the series, between data points, and at the end.

constant StringConstant required

​

EnumCountDuplicateSeries#

Counts the number of points along each timestamp in the input series.

inputs array of EnumSeries

​

EnumFilterOperator#

IS_IN

True when the value is contained in the set.

IS_NOT_IN

True when the value is not contained in the set.

MATCHES_ANY_REGEX

True when the value matches at least one pattern in the set. Values are RE2 regular expressions, anchored to the entire string.

EnumFilterRanges#

Produces a list of ranges for which the filter condition is satisfied.

input EnumSeries required

​

operator EnumFilterOperator required

​

values StringSetConstant required

The set of literal values (for IS_IN / IS_NOT_IN) or RE2 regex patterns (for MATCHES_ANY_REGEX) to match against.

persistenceWindowConfiguration PersistenceWindowConfiguration

​

EnumFilterTransformationSeries#

Outputs categorical input values that fall within the supplied ranges.

input EnumSeries required

​

filter RangeSeries required

Keeps only input points whose timestamp falls inside one of these ranges.

EnumNthPointDownsampleSeries#

Keeps every Nth row of the timestamp-ordered input, per series. No grid arithmetic, no interpolation, no boundary handling. Output count is ceil(input_count / n) per series. Caller is responsible for choosing n consistent with the input’s sample rate; output spacing is only uniform when the input is.

input EnumSeries required

​

n IntegerConstant required

Keep every Nth point starting from the earliest in each series. Must be >= 1.

EnumResampleConfiguration#

interval DurationConstant required

Interval between resampled points

interpolation EnumResampleInterpolationConfiguration

Interpolation strategy to use (defaults to forward fill).

EnumResampleInterpolationConfiguration#

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

forwardFillResampleInterpolationConfiguration ForwardFillResampleInterpolationConfiguration

​

constantResampleInterpolationConfiguration EnumConstantResampleInterpolationConfiguration

​

EnumResampleSeries#

Resamples the input series to a new resolution using interpolation. Outputs data for timestamps corresponding to the defined frequency. Based on interpolation strategy, determines range of timestamps to output data for and interpolates values where necessary.

input EnumSeries required

​

resampleConfiguration EnumResampleConfiguration required

The interval at which to resample the series and interpolation strategy

EnumResampleSeriesV2#

Resamples categorical points at the authored interval using forward-fill interpolation.

input EnumSeries required

​

interval compute.api.Duration required

Interval at which to resample.

EnumSelectTagsSeries#

Subsets the tag dimensions of the input enum series to the given tag keys. Preserves the input series’ cardinality: points that share the selected keys but differ on dropped keys remain distinct.

input EnumSeries required

​

tagKeys array of StringConstant

​

EnumSeries#

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

aggregate AggregateEnumSeries deprecated

Deprecated: AggregateEnumSeries is deprecated. Use enumAggregation with aggregation.GroupByAggregationBuilder instead.

raw Reference

​

channel ChannelSeries

​

derived DerivedSeries

​

resample EnumResampleSeries

​

resampleV2 EnumResampleSeriesV2

​

nthPointDownsample EnumNthPointDownsampleSeries

​

timeRangeFilter EnumTimeRangeFilterSeries

​

timeShift EnumTimeShiftSeries

​

timeShiftV2 EnumTimeShiftSeriesV2

​

union EnumUnionSeries

​

filterTransformation EnumFilterTransformationSeries

​

valueMap ValueMapSeries

​

select1dArrayIndex SelectIndexFrom1dEnumArraySeries

​

extractFromStruct ExtractEnumFromStructSeries

​

eventAggregation EventsEnumSeries

​

enumAggregation EnumAggregation

​

selectEnum SelectSeries

​

selectCategoricalProperty SelectProperty

​

filterByTag EnumTagFilterSeries

​

selectTags EnumSelectTagsSeries

​

scalarUdf ScalarUdfSeries

​

toStartOfInterval EnumToStartOfIntervalSeries

​

EnumSeriesEqualityRanges#

Produces a list of ranges for which provided enum series are all equal (or are not all equal).

input array of EnumSeries

​

equalityOperator EqualityOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

EnumTagFilterSeries#

Applies a tag predicate to the enum series produced by input.

input EnumSeries required

​

predicate TagPredicate required

​

EnumTimeRangeFilterSeries#

Filters the series to points within the specified time range.

input EnumSeries required

​

startTime TimestampConstant

Represents the start time (inclusive) of the time range.

endTime TimestampConstant

Represents the end time (inclusive) of the time range.

EnumTimeShiftSeries#

input EnumSeries required

​

duration DurationConstant required

​

EnumTimeShiftSeriesV2#

Shifts the timestamps in the input series by the resolved duration.

input EnumSeries required

​

duration compute.api.Duration required

Duration to shift the input series by.

EnumToNumericSeries#

Maps an enumerated series to a numeric series by mapping each string value to a double.

input EnumSeries required

​

mapping map of string to DoubleConstant

The mapping from enum values to doubles.

defaultValue DoubleConstant

The value to use for enum values not present in the mapping. If not specified, points with unmapped enum values will be dropped.

EnumToStartOfIntervalSeries#

Snaps each point’s timestamp to the start of its enclosing fixed-size time bucket. Buckets are epoch-aligned: a point at timestamp t (nanoseconds) is rewritten to floor(t / window) * window. Values and tag groupings are preserved; aggregation of points that collide on the snapped timestamp is the responsibility of downstream nodes.

input EnumSeries required

​

window compute.api.Duration required

​

EnumUnionOperation#

THROW

Throws an exception if two series contain points with a duplicate timestamp.

MAX

Aggregates duplicates by String MAX.

MIN

Aggregates duplicates by String MIN.

EnumUnionSeries#

Combines multiple enum series together and outputs a single series. The strategy to merge input values with the same timestamp together is specified in the operation field.

input array of EnumSeries

​

operation EnumUnionOperation required

The strategy to merge points with duplicate timestamps.

EpochTimestamp#

timeUnit TimeUnit required

​

EqualityOperator#

ALL_EQUAL

​

NOT_ALL_EQUAL

​

EqualToSeries#

Compares two numeric series point-wise, producing true where left == right and false otherwise.

left NumericSeries required

​

right NumericSeries required

​

ErrorResult#

errorType string required

​

message string required

​

errorInstanceId string

​

EventAnchor#

Uses the start timestamp of the event at the configured zero-based index from this query whose event time lies in the anchor window [start, end), or [start, +infinity) when the end is absent. The window is the run bounds for a run anchor. Shares the wire shape of numeric.EventTimeShift, which tagByIntervals time shifts use; a separate type so dataset anchors evolve independently.

query ComputeEventQuery required

​

index IntegerConstant

Zero-based event index after sorting. Defaults to zero and must be non-negative.

sortOrder EventSortOrder

Ordering by event start timestamp before selecting the index. Defaults to ASC.

EventDispositionStatus#

PENDING_REVIEW

​

CLOSED_IGNORED

​

CLOSED_REQUIRES_FURTHER_ACTION

​

NO_DISPOSITION

​

EventIntervalSource#

Intervals come from an event query. Each event defines [timestamp, timestamp+duration).

query ComputeEventQuery required

​

tagBy array of EventTagSource

Non-empty ordered list of tag sources. Each contributes a tag key-value pair per event interval.

EventLabelTag#

label StringConstant required

​

EventLevelTag#

An empty JSON object, {}.

EventPropertyTag#

propertyName StringConstant required

​

EventsEnumSeries#

Queries events and emits an enum series where each data point corresponds to an event and the enum value is derived from a single event field (property, label, etc).

query ComputeEventQuery required

​

valueSource EventsEnumValueSource required

​

EventsEnumValueSource#

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

property StringConstant

Name of the event property whose value should be used as the enum value.

level Empty

The event level (INFO, FLAG, VIOLATION, SUCCESS). This field corresponds to the event type.

EventSortOrder#

ASC

​

DESC

​

EventsSearchRanges#

Produces a range series with a range for each event matching the query. Throws if there are more than 1,000 results.

query ComputeEventQuery required

​

EventTagSource#

A dimension contributing a tag key-value pair per event interval.

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

intervalIndex IntervalIndexTag

​

level EventLevelTag

​

property EventPropertyTag

​

label EventLabelTag

​

rangeStartTimestamp IntervalStartTimestampTag

​

EventTimeFilter#

timestamp TimestampConstant required

​

timestampCondition EventTimeFilterCondition required

​

EventTimeFilterCondition#

START_TIME_BEFORE_INCLUSIVE

​

START_TIME_BEFORE_EXCLUSIVE

​

START_TIME_AFTER_INCLUSIVE

​

START_TIME_AFTER_EXCLUSIVE

​

END_TIME_BEFORE_INCLUSIVE

​

END_TIME_BEFORE_EXCLUSIVE

​

END_TIME_AFTER_INCLUSIVE

​

END_TIME_AFTER_EXCLUSIVE

​

EventTimeShift#

Shift by the start timestamp of the event at the configured zero-based index from this query whose event time lies in the anchor window [start, end), or [start, +infinity) when the end is absent. The window is the tagging interval for tagByIntervals and the run bounds for a run anchor. The query may differ from the query that produced a tagging interval.

query ComputeEventQuery required

​

index IntegerConstant

Zero-based event index after sorting. Defaults to zero and must be non-negative.

sortOrder EventSortOrder

Ordering by event start timestamp before selecting the index. Defaults to ASC.

EventType#

INFO

​

FLAG

​

ERROR

​

SUCCESS

​

EveryNthPerSeriesSampling#

Returns every Nth timestamp-ordered point from each distinct series.

n IntegerConstant required

Keep every Nth point starting from the earliest in each series. Must be > 1.

ExcludeNegativeValues#

An empty JSON object, {}.

ExponentialCurve#

An empty JSON object, {}.

ExternalConnectionMetadata#

connectionDetails ConnectionDetails required

​

connectionStatus ConnectionStatus required

​

limits LimitsConfig

​

ExtractEnum1dArrayFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

​

ExtractEnumFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

Path segments that are joined to locate a nested enum field. Use dots to traverse objects (e.g. a.b.c) and 0-based brackets to index into arrays (e.g. items[0].value). A bare numeric name like 0 refers to an object key named “0”; use [0] to index into an array. Rows where the path is invalid or resolves to a nested object rather than a scalar are filtered out.

ExtractNumeric1dArrayFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

​

ExtractNumericFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

Path segments that are joined to locate a nested numeric field. Use dots to traverse objects (e.g. a.b.c) and 0-based brackets to index into arrays (e.g. items[0].value). A bare numeric name like 0 refers to an object key named “0”; use [0] to index into an array. Rows where the path is invalid or the value cannot be converted to the specified type are filtered out.

dataType NumericDataType

The type the numeric data will be cast to, defaults to FLOAT64

ExtractStructFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

Path segments that are joined to locate a nested struct field. Use dots to traverse objects (e.g. a.b.c) and 0-based brackets to index into arrays (e.g. items[0].value). A bare numeric name like 0 refers to an object key named “0”; use [0] to index into an array. Returns an empty struct when the path does not resolve to a valid JSON object.

ExtremaRangesV2#

Produces ranges for the selected extrema type.

input NumericSeries required

​

minimumProminence DoubleConstant

The minimum topographic prominence for an extrema to be returned.

selection PeakType required

​

FillLimit#

How far forward in time a sample’s value may be carried.

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

duration DurationConstant

​

FillStrategy#

Default strategy for filling gaps when aligning multi-input series.

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

forwardFill ForwardFill

​

FilterByExpressionSeries#

Keeps points from the base series where the boolean expression evaluates to true. Only outputs timestamps where all input series have an entry for that timestamp, or a value can be filled using the interpolation configuration.

base string required

The variable name for the series that will be returned by this filter. The expression can filter points conditional on multiple series. The base defines which series’ points will be returned after applying all the filters.

inputs map of LocalVariableName to NumericSeries

A map containing all the numeric series present in the expression.

expression string required

An expression that evaluates to a boolean. For example - a > 5.

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

FilteredDataset#

Applies a conjunctive tag predicate to the series produced by the inner dataset. Resolved by threading tag filters into channel specs and folding against known tag assignments; does not add a resolved numeric node.

input api.Dataset required

The underlying dataset to filter.

predicate TagPredicate required

Conjunctive tag predicate used to keep matching series.

FirstPointMatchingCondition#

The first point in the output range will be the first point where the condition evaluates to true.

An empty JSON object, {}.

FloorDivide#

Divides left by right pointwise and rounds down to the nearest integer.

left NumericSeries required

Numerator.

right NumericSeries required

Denominator.

ForwardFill#

At each grid point, carries the most recent prior sample value forward. The value is held only up to the configured limit; grid points with no prior sample within that window are left empty.

limit FillLimit required

​

ForwardFillInterpolation#

interpolationRadius DurationConstant required

​

ForwardFillResampleInterpolationConfiguration#

Forward fill interpolation for resampling. Rounds the earliest and latest timestamp up to the nearest interval multiple and generates timestamps at the given interval between the new earliest and latest timestamps. For every timestamp in the resampled timestamps, takes the last known value before the timestamp as the value.

An empty JSON object, {}.

FunctionDerivedSeries#

A reference to a derived series resulting from applying a function to a set of arguments.

moduleName StringConstant required

​

functionName StringConstant required

​

versionReference ModuleVersionReference required

​

functionArgs map of FunctionParameterName to FunctionParameterValue

Map of function input names to their values. The function inputs must match the function’s parameter names and types. An input must be specified for each of the referenced function’s parameters.

FunctionParameterValue#

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

variable string

​

value VariableValue

​

FunctionVariables#

variables map of VariableName to VariableValue

​

subFunctionVariables map of FunctionReference to FunctionVariables

​

Granularity#

NANOSECONDS

​

GreaterThanOrEqualToSeries#

Compares two numeric series point-wise, producing true where left >= right and false otherwise.

left NumericSeries required

​

right NumericSeries required

​

GreaterThanSeries#

Compares two numeric series point-wise, producing true where left > right and false otherwise.

left NumericSeries required

​

right NumericSeries required

​

GroupByAggregationBuilder#

Groups points by a tag selection and a timestamp policy and applies the operator.

input Series required

The series to group and aggregate.

tags GroupByTags required

Selects which tag keys form the grouping key: GroupByTags.Current() keeps the input series’ currently selected tags, or GroupByTags.Subset([...]) restricts the grouping to a subset of them.

timestamp GroupByTimestamp required

Selects how timestamps participate in the grouping key: GroupByTimestamp.Current() groups on existing timestamps, and GroupByTimestamp.Every(duration) buckets points into fixed-size, epoch-aligned tumbling windows.

alignment GroupByAlignment

Optionally aligns source tag groups that map to the same output tag group before aggregation. Alignment is currently supported only with GroupByTimestamp.Current() and built-in numeric aggregation operators.

GroupByAlignment#

Selects how source tag groups are aligned before aggregation.

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

contextDefaults Empty

Use the compute context’s defaultAlignmentStrategy and defaultFillStrategy.

GroupBySubsetTags#

tags array of StringConstant

Tag keys to group by.

GroupByTags#

Selects which tag keys form the grouping key.

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

current Empty

Group by the tags currently selected on the input series.

subset GroupBySubsetTags

Group by exactly the listed tag keys. Must be a (non-strict) subset of the input series’s currently selected tags.

GroupByTimestamp#

Selects how timestamps participate in the grouping key.

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

current Empty

Use the current timestamps.

every compute.api.Duration

Bucket timestamps into a tumbling fixed-size, epoch-aligned window. A point at timestamp t (nanoseconds) falls into the bucket [floor(t / window) * window, +window), and one aggregated point is emitted per bucket per tag grouping at the bucket start timestamp.

GroupWithinRangesSeriesV2#

Aggregates the input series within each supplied range and emits one point at the range start. Empty ranges emit no point, and ranges without a start use the compute request start.

input NumericSeries required

​

ranges RangeSeries required

One output point is emitted per range, at the range’s start.

aggregation NumericAggregationOperator required

​

Handle#

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

s3 S3Handle

​

HashSubsampleSampling#

Keeps approximately 1/N of raw points via a stateless hash of each point’s timestamp.

n IntegerConstant required

Keep approximately one out of every N points. Must be > 1.

HeaderValue#

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

plain string

​

secretRid string (RID)

​

HighPassConfiguration#

cutoffFrequency DoubleConstant required

​

IdentityDimension#

Injects the value of a type’s primary key, under a tag key equal to the primary key’s property name by default. The primary key is read when the query runs, so it follows changes to the type. Only asset branches of an asset with the type have a value; every other branch, including run branches, gets the reserved value NOMINAL_ABSENT.

typeRid StringConstant required

Resource identifier of the type whose primary key identifies the asset.

Influx1ConnectionDetails#

host string required

​

port integer required

​

headers map of string to HeaderValue

A map of header name to value

credentials PasswordCredentials

​

Influx2ConnectionDetails#

host string required

​

port integer required

​

headers map of string to HeaderValue

A map of header name to value

org string required

​

tokenSecretRid string (RID) required

Secret Rid of token secret stored in Secrets Service.

InfluxChannelNameComponent#

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

bucket Empty

​

measurement Empty

​

field Empty

​

InfluxScrapingConfig#

filter array of InfluxScrapingFilter

Filters are ANDed together

seriesArchetypeConstruction InfluxSeriesArchetypeConstructionConfig required

​

InfluxScrapingFilter#

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

not InfluxScrapingFilter

​

matchBucket array of string

Match any of the specified buckets

matchMeasurement array of string

Match any of the specified measurements

InfluxSeriesArchetypeConstructionConfig#

For example, for config of the form {components: [measurement, field, tag: vehicle], separator: “.”} will construct a channel that looks like vehicle_a.measurement.field. Tags will automatically be specified inside of the archetype.

channelNameComponents array of InfluxChannelNameComponent

​

separator string required

​

Ingesting#

progress number

Optional fraction between 0 and 1 indicating progress through ingestion.

IngestStatus#

IN_PROGRESS

​

COMPLETED

​

FAILED

​

DELETION_IN_PROGRESS

​

DELETED

​

IngestStatusV2#

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

success SuccessResult

​

error ErrorResult

​

inProgress InProgressResult

​

deletionInProgress DeletionInProgress

​

deleted Deleted

​

queued Queued

​

parsing Parsing

​

ingesting Ingesting

​

IngestTagMetadata#

The tags used when ingesting the dataset file.

tagColumns map of TagName to string

A map of tag names to column names to derive the tag values from.

additionalFileTags map of TagName to string

​

InProgressDetails#

Sub-phase of an in-progress ingest. Absent on InProgressResult for a generic in-progress file; when present it indicates where in the pipeline the in-progress file currently is.

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

queued Queued

​

parsing Parsing

​

ingesting Ingesting

​

InProgressResult#

inProgressDetails InProgressDetails

​

IntegerConstant#

An integer constant that can be a literal value or a named variable reference.

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

literal integer

Create from a literal integer value.

variable string

Create from a named reference name.

IntegralSeries#

Calculates the running sum of the area underneath a series using the trapezoidal rule.

input NumericSeries required

​

startTimestamp TimestampConstant required

​

timeUnit TimeUnit

Time unit used to calculate the integral. Defaults to seconds if not specified.

InterpolationConfiguration#

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

forwardFillInterpolation ForwardFillInterpolation

​

IntersectRanges#

Produces the intersection of the input ranges: the ranges of time covered by every input. For best performance, pass inputs in the order in which they should be evaluated, listing the ranges that are cheapest to compute first.

inputs array of RangeSeries

​

IntervalAnchor#

Selects which boundary of an interval to use as its anchor.

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

intervalStart IntervalStartTimeShift

Uses the interval’s start timestamp.

intervalEnd IntervalEndTimeShift

Uses the interval’s end timestamp.

eventInInterval EventAnchor

​

rangeInInterval RangesAnchor

​

IntervalEndTimeShift#

Shift by each tagging interval’s resolved end; resolution throws if end is missing.

An empty JSON object, {}.

IntervalIndexTag#

An empty JSON object, {}.

IntervalSource#

Where the intervals come from and how each is labeled.

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

events EventIntervalSource

​

ranges RangeIntervalSource

​

IntervalStartTimeShift#

Shift by each tagging interval’s resolved start; resolution throws if start is missing.

An empty JSON object, {}.

IntervalStartTimestampTag#

An empty JSON object, {}.

Iso8601Timestamp#

An empty JSON object, {}.

LabelsFilter#

operator SetOperator required

​

labels array of string

​

LessThanOrEqualToSeries#

Compares two numeric series point-wise, producing true where left <= right and false otherwise.

left NumericSeries required

​

right NumericSeries required

​

LessThanSeries#

Compares two numeric series point-wise, producing true where left < right and false otherwise.

left NumericSeries required

​

right NumericSeries required

​

LimitsConfig#

maxQueryRange connection.api.Duration

​

LiteralRange#

A literal range of values.

startTimestamp TimestampConstant

​

endTimestamp TimestampConstant

​

tags map of string to string

​

LiteralRanges#

A list of literal ranges.

literalRanges array of LiteralRange

​

Ln#

Computes the natural logarithm (base e) of each value.

x NumericSeries required

Input numeric series (positive values).

Log10#

Computes the base-10 logarithm of each value.

x NumericSeries required

Input numeric series (positive values).

LogArgFilterOperator#

Matches against a single log arg.

key StringConstant required

​

operator LogRegexFilterOperator required

​

LogarithmicCurve#

An empty JSON object, {}.

LogExactMatchCaseInsensitiveFilter#

Filters points such that the log message in each point contains an exact case-insensitive match of the provided token.

token string required

​

LogFilterOperator#

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

regexFilter LogRegexFilterOperator

​

exactMatchCaseInsensitiveFilter LogExactMatchCaseInsensitiveFilter

​

arg LogArgFilterOperator

​

and array of LogFilterOperator

​

or array of LogFilterOperator

​

not LogFilterOperator

​

LogFilterSeries#

Outputs only values of the log plot that satisfy the filter.

input LogSeries required

​

operator LogFilterOperator required

​

LogRegexFilterOperator#

Matches a text value against the given re2 regular expression. Regular expression syntax: https://github.com/google/re2/wiki/Syntax.

regex string required

​

LogSelectTagsSeries#

Subsets the tag dimensions of the input log series to the given tag keys. Preserves the input series’ cardinality: points that share the selected keys but differ on dropped keys remain distinct.

input LogSeries required

​

tagKeys array of StringConstant

​

LogSeries#

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

raw Reference

​

channel ChannelSeries

​

derived DerivedSeries

​

selectLogs SelectSeries

​

union LogUnionSeries

​

filter LogFilterSeries

​

timeShift LogTimeShiftSeries

​

toStartOfInterval LogToStartOfIntervalSeries

​

filterByTag LogTagFilterSeries

​

selectTags LogSelectTagsSeries

​

LogTagFilterSeries#

Applies a tag predicate to the log series produced by input.

input LogSeries required

​

predicate TagPredicate required

​

LogTimeShiftSeries#

input LogSeries required

​

duration DurationConstant required

​

LogToStartOfIntervalSeries#

Snaps each point’s timestamp to the start of its enclosing fixed-size time bucket. Buckets are epoch-aligned: a point at timestamp t (nanoseconds) is rewritten to floor(t / window) * window. Values and tag groupings are preserved; aggregation of points that collide on the snapped timestamp is the responsibility of downstream nodes.

input LogSeries required

​

window compute.api.Duration required

​

LogUnionOperation#

KEEP_ALL

Keeps all points if multiple series contain points with a duplicate timestamp.

LogUnionSeries#

Combines multiple log series together and outputs a single series. The strategy to merge input values with the same timestamp together is specified in the operation field.

input array of LogSeries

​

operation LogUnionOperation required

The strategy to merge points with duplicate timestamps.

LowPassConfiguration#

cutoffFrequency DoubleConstant required

​

MathConstant#

Math constants referenceable by name.

PI

The circle constant π (dimensionless).

TAU

The circle constant τ = 2π (dimensionless).

E

Euler’s number e (dimensionless).

Maximum#

The maximum value of points inside the time window.

An empty JSON object, {}.

MaxSeries#

For every timestamp specified in the input series, outputs a value that is the maximum for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise maximum

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

McapChannelLocator#

Locator for a channel in an mcap file. Channel name is not guaranteed to be unique, so channel ID should be used for mcap files with duplicate channel names.

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

topic string

​

id integer

​

McapTimestampManifest#

Timestamps are derived from the mcap file containing the video frames.

mcapChannelLocator McapChannelLocator required

​

MeanSeries#

For every timestamp specified in the input series, outputs a value that is the mean for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise mean

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

Minimum#

The minimum value of points inside the time window.

An empty JSON object, {}.

MinMaxThresholdOperator#

OUTSIDE_BOUNDS

​

OUTSIDE_OR_EQUAL_TO_BOUNDS

​

INSIDE_BOUNDS

​

INSIDE_OR_EQUAL_TO_BOUNDS

​

MinMaxThresholdRanges#

Produces a list of ranges for which the threshold condition is satisfied.

input NumericSeries required

​

lowerBound DoubleConstant required

​

upperBound DoubleConstant required

​

operator MinMaxThresholdOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

MinSeries#

For every timestamp specified in the input series, outputs a value that is the minimum for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise minimum

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

ModuleVersionReference#

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

pinned PinnedModuleVersionReference

​

Modulo#

Computes the remainder of left divided by right pointwise.

left NumericSeries required

Dividend.

right NumericSeries required

Divisor.

Multiply#

Multiplies two numeric series pointwise.

left NumericSeries required

Left-hand operand.

right NumericSeries required

Right-hand operand.

NamedSeries#

name StringConstant required

Name of the new derived series.

definition Series required

Compute expression defining the series values.

Negate#

Negates each value in the series pointwise (multiplies by -1).

x NumericSeries required

Input numeric series.

NegativeValueConfiguration#

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

allowNegativeValues AllowNegativeValues

Include negative output values

setNegativeValuesToZero SetNegativeValuesToZero

Set negative output values to zero

excludeNegativeValues ExcludeNegativeValues

Exclude points with negative output values

nominal.api.Property#

name string required

​

value string required

​

NominalChannelNameComponent#

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

channel Empty

​

valueOfTagWithName string

The value of the specified TagName will be used. If the tag is not present, it will be omitted.

NominalConnectionDetails#

nominalDataSourceRid string (RID) required

​

NominalScrapingConfig#

channelNameComponents array of NominalChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name.

separator string required

​

NotEqualToSeries#

Compares two numeric series point-wise, producing true where left != right and false otherwise.

left NumericSeries required

​

right NumericSeries required

​

NoTimestampManifest#

these values will not be updated after ingest time, to allow for resetting. The updated values are stored implicitly through the segment timestamps.

startingTimestamp Timestamp required

Specifies the original starting timestamp of the video.

scaleParameter ScaleParameter

A field that specifies that the frame rate of the video does not match the frame rate of the camera | i.e. a slowed down or sped up video. Can specify either the camera frame rate or the absolute end time.

NotRanges#

The not ranges node will invert the ranges, filling the negative space in time.

input RangeSeries required

​

Numeric1dArraySelectTagsSeries#

Subsets the tag dimensions of the input numeric 1d array series to the given tag keys. Preserves the input series’ cardinality: points that share the selected keys but differ on dropped keys remain distinct.

input Numeric1dArraySeries required

​

tagKeys array of StringConstant

​

Numeric1dArraySeries#

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

channel ChannelSeries

​

raw Reference

​

derived DerivedSeries

​

selectNumeric1dArray SelectSeries

​

extractFromStruct ExtractNumeric1dArrayFromStructSeries

​

toStartOfInterval Numeric1dArrayToStartOfIntervalSeries

​

timeShift Numeric1dArrayTimeShiftSeries

​

filterByTag Numeric1dArrayTagFilterSeries

​

selectTags Numeric1dArraySelectTagsSeries

​

Numeric1dArrayTagFilterSeries#

Applies a tag predicate to the numeric 1d array series produced by input.

input Numeric1dArraySeries required

​

predicate TagPredicate required

​

Numeric1dArrayTimeShiftSeries#

input Numeric1dArraySeries required

​

duration DurationConstant required

​

Numeric1dArrayToStartOfIntervalSeries#

Snaps each point’s timestamp to the start of its enclosing fixed-size time bucket. Buckets are epoch-aligned: a point at timestamp t (nanoseconds) is rewritten to floor(t / window) * window. Values and tag groupings are preserved; aggregation of points that collide on the snapped timestamp is the responsibility of downstream nodes.

input Numeric1dArraySeries required

​

window compute.api.Duration required

​

NumericAggregation#

Aggregates an input series using the given operator. The shape of the aggregation (rolling time window, rolling point-count window, or group by) is selected by the aggregation builder passed as input. The operator must be compatible with that builder’s series, producing a numeric output: count reduces a series of any type, whereas SUM requires a numeric series.

input AggregationBuilder required

The aggregation shape to apply the operator over: a rolling time window, a rolling point-count window, or a group-by.

operator NumericAggregationOperator required

The reduction applied to each window or group (e.g. sum, mean, percentile). Must be compatible with the input series, producing a numeric output: Count works on any input series, whereas reductions like Sum require a numeric series.

NumericAggregationFunction#

DEPRECATED. Use NumericAggregationOperator instead.

SUM

​

MEAN

​

MIN

​

MAX

​

COUNT

​

STANDARD_DEVIATION

​

ROOT_MEAN_SQUARE

​

NumericAggregationOperator#

Unified numeric aggregation used across rolling windows, plain aggregates, range aggregates, union merges, and per-bucket summarization.

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

sum Summation

​

average Average

​

min Minimum

​

max Maximum

​

count Count

​

standardDeviation StandardDeviation

​

rootMeanSquare RootMeanSquare

​

percentile Percentile

​

udf NumericAggregationUdf

​

NumericAggregationUdf#

A user-defined numeric aggregation. The aggregation builder controls grouping/windowing. Supported Rust entrypoints accept grouped value vectors, optionally with leading sample timestamps, and return either one numeric value or timestamped numeric point(s), e.g. fn rms(values: Vec<f64>) -> f64, fn energy(timestamp_ns: Vec<i64>, values: Vec<f64>) -> f64, fn first(timestamp_ns: Vec<i64>, values: Vec<f64>) -> (i64, f64), or fn passthrough(timestamp_ns: Vec<i64>, values: Vec<f64>) -> Vec<(i64, f64)>. The value vector’s element type follows the aggregated series: Vec<f64> for a numeric series, and Vec<String> for a categorical or struct series, where each struct row arrives as a JSON object. A UDF over a combined struct series may instead take one vector per named struct field it needs, e.g. fn mean_product(channel0: Vec<f64>, channel1: Vec<f64>) -> f64. Parameter names select the fields, so a subset of the struct’s fields in any order is accepted.

source UdfSource required

​

NumericApproximateFilterSeries#

Outputs the values of the numeric plot value that are approximately equal to the threshold value.

input NumericSeries required

​

threshold DoubleConstant required

​

tolerance DoubleConstant required

​

operator ApproximateThresholdOperator required

​

NumericConstantResampleInterpolationConfiguration#

Fills all empty resample intervals with a single constant value.

If a resampled time interval (bucket) contains no data points from the input, it will be assigned the specified ‘constant’ as a default value. This applies to gaps at the start of the series, between data points, and at the end.

constant DoubleConstant required

​

NumericDataType#

Supported numeric data types for value casting.

INT64

​

FLOAT64

​

UINT64

​

NumericEqualityRangesV2#

Produces ranges where all numeric inputs are equal or are not all equal.

inputs array of NumericSeries

The series compared against each other. At least two are required.

tolerance DoubleConstant

Maximum spread between the inputs still counted as equal. Defaults to zero, i.e. exact equality.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

Selects whether the output begins at the first match or after persistence is satisfied.

equalityOperator EqualityOperator required

​

NumericFilterTransformationSeries#

Outputs the input points whose timestamps fall within the supplied ranges.

input NumericSeries required

​

filter RangeSeries required

Keeps input points whose timestamps fall inside any of these ranges.

NumericFilterWhereSeries#

Outputs numeric input values where the provided Boolean expression evaluates to true.

input NumericSeries required

​

condition BooleanSeries required

Condition evaluated point-wise at each input timestamp. A point is only kept where the condition is true.

NumericIfElseSeries#

Selects between two numeric series point-wise based on a boolean condition series. For every aligned timestamp, emits the value from trueValue where condition is true, and the value from falseValue otherwise.

condition BooleanSeries required

Boolean series evaluated at each point to choose between the trueValue and falseValue branches.

trueValue NumericSeries required

Value emitted at points where condition is true.

falseValue NumericSeries required

Value emitted at points where condition is false.

NumericLargestTriangleThreeBucketsSeries#

Applies Largest-Triangle-Three-Buckets to a numeric time series for visualization-oriented downsampling. The algorithm preserves the first and last points, partitions the remaining input points based on the requested output count, and selects points that preserve the visual shape of the series. Results are selected input timestamp/value points, not fixed-width bucket aggregate rows.

input NumericSeries required

​

maxPointsToReturn IntegerConstant required

Maximum number of selected points to return. Must be positive and no greater than 10,000.

NumericNanFilter#

Removes points where the value is NaN from the input series.

input NumericSeries required

Input numeric series.

NumericNthPointDownsampleSeries#

Keeps every Nth row of the timestamp-ordered input, per series. No grid arithmetic, no interpolation, no boundary handling. Output count is ceil(input_count / n) per series. Caller is responsible for choosing n consistent with the input’s sample rate; output spacing is only uniform when the input is.

input NumericSeries required

​

n IntegerConstant required

Keep every Nth point starting from the earliest in each series. Must be >= 1.

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

​

NumericResampleConfiguration#

interval DurationConstant required

Interval between resampled points

interpolation NumericResampleInterpolationConfiguration

Interpolation strategy to use (defaults to forward fill).

NumericResampleInterpolationConfiguration#

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

forwardFillResampleInterpolationConfiguration ForwardFillResampleInterpolationConfiguration

​

constantResampleInterpolationConfiguration NumericConstantResampleInterpolationConfiguration

​

NumericResampleSeries#

Resamples the input series to a new resolution using interpolation. Outputs data for timestamps corresponding to the defined frequency. Based on interpolation strategy, determines range of timestamps to output data for and interpolates values where necessary.

input NumericSeries required

​

resampleConfiguration NumericResampleConfiguration required

The interpolation strategy and interval at which to resample the series

NumericResampleSeriesV2#

Resamples the input series at the authored interval using forward-fill.

input NumericSeries required

​

interval compute.api.Duration required

Interval at which to resample.

NumericSelectTagsSeries#

Subsets the tag dimensions of the input numeric series to the given tag keys. Preserves the input series’ cardinality: points that share the selected keys but differ on dropped keys remain distinct.

input NumericSeries required

​

tagKeys array of StringConstant

​

NumericSeries#

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

abs Abs

​

negate Negate

​

cos Cos

​

sin Sin

​

tan Tan

​

acos Acos

​

asin Asin

​

ln Ln

​

log10 Log10

​

sqrt Sqrt

​

add Add

​

subtract Subtract

​

multiply Multiply

​

divide Divide

​

floorDivide FloorDivide

​

power Power

​

modulo Modulo

​

atan2 Atan2

​

max MaxSeries

​

mean MeanSeries

​

min MinSeries

​

sum SumSeries

​

union NumericUnionSeries

​

product ProductSeries

​

constant ConstantNumericSeries

​

selectNewestPoints SelectNewestPointsSeries

​

selectNumeric SelectSeries

​

selectNumericProperty SelectProperty

​

selectOldestPoints SelectOldestPointsSeries

​

bitAnd BitAnd

​

bitOr BitOr

​

bitXor BitXor

​

bitShiftRight BitShiftRight

​

bitShiftLeft BitShiftLeft

​

bitTest BitTest

​

ifElse NumericIfElseSeries

​

numericAggregation NumericAggregation

​

countDuplicate EnumCountDuplicateSeries

​

cumulativeSum CumulativeSumSeries

​

derivative DerivativeSeries

​

integral IntegralSeries

​

zScore ZscoreSeries

​

raw Reference

​

derived DerivedSeries

​

resample NumericResampleSeries

​

resampleV2 NumericResampleSeriesV2

​

nthPointDownsample NumericNthPointDownsampleSeries

​

largestTriangleThreeBuckets NumericLargestTriangleThreeBucketsSeries

​

signalFilter SignalFilterSeries

​

timeDifference TimeDifferenceSeries

​

absoluteTimestamp AbsoluteTimestampSeries

​

timeRangeFilter NumericTimeRangeFilterSeries

​

timeShift NumericTimeShiftSeries

​

timeShiftV2 NumericTimeShiftSeriesV2

​

unitConversion UnitConversionSeries

​

unitOverride UnitOverrideSeries

​

valueDifference ValueDifferenceSeries

​

filterTransformation NumericFilterTransformationSeries

​

filterWhere NumericFilterWhereSeries

​

thresholdFilter NumericThresholdFilterSeries

​

approximateFilter NumericApproximateFilterSeries

​

dropNan NumericNanFilter

​

select1dArrayIndex SelectIndexFrom1dNumericArraySeries

​

aggregateUnderRanges AggregateUnderRangesSeries

​

rangeDuration RangeDurationSeries

​

groupWithinRangesV2 GroupWithinRangesSeriesV2

​

filterByExpression FilterByExpressionSeries

​

scalarUdf ScalarUdfSeries

​

enumToNumeric EnumToNumericSeries

​

contains ContainsSeries

​

refprop RefpropSeries

​

refpropV2 RefpropSeriesV2

​

extractFromStruct ExtractNumericFromStructSeries

​

tagByIntervals TagByIntervalsSeries

​

filterByTag NumericTagFilterSeries

​

selectTags NumericSelectTagsSeries

​

toStartOfInterval NumericToStartOfIntervalSeries

​

phaseUnwrap PhaseUnwrapSeries

​

aggregate AggregateNumericSeries deprecated

Deprecated: AggregateNumericSeries is deprecated. Use numericAggregation with aggregation.GroupByAggregationBuilder instead.

rollingOperation RollingOperationSeries deprecated

Deprecated: RollingOperationSeries is deprecated. Use numericAggregation with aggregation.RollingTimeAggregationBuilder instead.

bitOperation BitOperationSeries deprecated

Deprecated: BitOperationSeries is deprecated in favor of individual nodes for each operation.

channel ChannelSeries deprecated

Deprecated: Deprecated in favor of the SelectSeries node

offset OffsetSeries deprecated

Deprecated: OffsetSeries is deprecated in favor of add with a constant.

scale ScaleSeries deprecated

Deprecated: ScaleSeries is deprecated in favor of multiply with a constant.

arithmetic ArithmeticSeries deprecated

Deprecated: ArithmeticSeries is deprecated in favor of individual nodes for each operation.

unaryArithmetic UnaryArithmeticSeries deprecated

Deprecated: UnaryArithmeticSeries is deprecated in favor of individual nodes for each operation.

binaryArithmetic BinaryArithmeticSeries deprecated

Deprecated: BinaryArithmeticSeries is deprecated in favor of individual nodes for each operation.

NumericStaleRangesV2#

Produces ranges where a numeric input has no data for at least a duration.

input NumericSeries required

​

threshold compute.api.Duration required

Minimum gap without data that produces an output range.

NumericTagFilterSeries#

Applies a tag predicate to the numeric series produced by input.

input NumericSeries required

​

predicate TagPredicate required

​

NumericThresholdFilterSeries#

Outputs only the values of the numeric plot value that satisfy the threshold condition.

input NumericSeries required

​

threshold DoubleConstant required

​

operator ThresholdOperator required

​

NumericTimeRangeFilterSeries#

Filters the series to points within the specified time range.

input NumericSeries required

​

startTime TimestampConstant

Represents the start time (inclusive) of the time range.

endTime TimestampConstant

Represents the end time (inclusive) of the time range.

NumericTimeShiftSeries#

input NumericSeries required

​

duration DurationConstant required

​

NumericTimeShiftSeriesV2#

Shifts the timestamps in the input series by the resolved duration.

input NumericSeries required

​

duration compute.api.Duration required

Duration to shift the input series by.

NumericToStartOfIntervalSeries#

Snaps each point’s timestamp to the start of its enclosing fixed-size time bucket. Buckets are epoch-aligned: a point at timestamp t (nanoseconds) is rewritten to floor(t / window) * window. Values and tag groupings are preserved; aggregation of points that collide on the snapped timestamp is the responsibility of downstream nodes.

input NumericSeries required

​

window compute.api.Duration required

​

NumericUnionOperation#

DEPRECATED: apply aggregations as a separate step over the unioned output.

MIN

Combines multiple points by taking the minimum value

MAX

Combines multiple points by taking the maximum value

MEAN

Combines multiple points by taking the mean of the values

SUM

Combines multiple points by taking the sum of the values

COUNT

Combines multiple points by taking the count of the values

STANDARD_DEVIATION

Combines multiple points by taking the standard deviation of the values

ROOT_MEAN_SQUARE

Combines multiple points by taking the root mean square of the values

THROW

Throws a DuplicateTimestamp error if two series contain points with a duplicate timestamp.

NumericUnionSeries#

Combines multiple numeric series together and outputs a single series. By default, points from the inputs are concatenated (SQL {@code UNION ALL}) and duplicate timestamps across inputs are preserved. To aggregate values that share a timestamp, do a separate aggregation step next.

input array of NumericSeries

Input series to union

operation NumericUnionOperation deprecated

The strategy to merge points with duplicate timestamps. Deprecated: Apply aggregations as a separate step over the unioned output.

OffsetSeries#

For every timestamp specified in the input series, offset it by a constant factor.

input NumericSeries required

​

scalar DoubleConstant required

The constant to add to each point

OnChangeRanges#

Produces a list of ranges for each point that has a different value to the previous point. A range will have identical start and end times.

input Series required

​

OriginFileUri#

Pre-signed URI that can be used to download an origin file directly. Expires if the download has not been initiated within 1 minute.

uri string required

​

path string required

​

OrSeries#

Combines two boolean series point-wise using logical OR, producing true where either input is true and false otherwise.

left BooleanSeries required

​

right BooleanSeries required

​

OutputRangeStart#

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

firstPointMatchingCondition FirstPointMatchingCondition

The first point in the output range will be the first point where the condition evaluates to true.

afterPersistenceWindow AfterPersistenceWindow

The output range will contain points where the condition has been true for at least the min duration and min points.

PaddedRanges#

Expands ranges durations by adding temporal padding to the start, end, or both sides. Note that if the input ranges contain a RangeValue, it will be dropped.

input RangeSeries required

​

padding DurationConstant required

​

paddingConfiguration RangePaddingConfiguration

Configuration for how to apply padding to the ranges. Defaults to PAD_START_AND_END if not specified.

PaddedRangesV2#

Expands ranges using an authored Duration expression and a selected padding direction.

input RangeSeries required

​

duration compute.api.Duration required

How far to extend each range on every padded side.

paddingConfiguration RangePaddingConfiguration required

​

Parsing#

An empty JSON object, {}.

PasswordCredentials#

username string required

​

passwordSecretRid string (RID) required

Secret Rid of password secret stored in Secrets Service.

PeakRanges#

Produces a list of ranges for each point that is greater than its neighbors. Peaks at edges are discarded, and continuous, multivalue, flat peaks will return all values.

input NumericSeries required

​

returnsPeaks boolean deprecated

True if returning peaks, else troughs. Deprecated: No longer used, use returnType instead

returnType PeakType

Optional for backcompatibility.

minimumProminence DoubleConstant

The minimum topographic prominence for an extrema to be returned. Prominence is the minimum vertical distance needed to travel from an extrema to one of greater magnitude.

PeakType#

PEAK

​

TROUGH

​

BOTH

​

PercentageThreshold#

Threshold defined as the percentage of a given value.

value DoubleConstant required

Allowed spread, as a percentage of the window’s mean value.

Percentile#

The value at the specified percentile.

percentile DoubleConstant required

Percentile to compute, in range [0, 1]. E.g. 0.5 for median, 0.95 for p95.

PersistenceWindowConfiguration#

Configures how long a condition has to be true for to output a time range, and what to use as the start of the output range. For a point to be included in the output time range, both the minPoints and minDuration conditions must be satisfied.

minPoints IntegerConstant

The minimum number of points for which this condition be must satisfied to include the time range in the output. Must be non-negative. If not present, will default to 1.

minDuration DurationConstant

The minimum number of points for which this condition must be satisfied to include the time range in the output. Must be non-negative. If not present, will default to 1 nanosecond.

outputRangeStart OutputRangeStart required

Which point to use as the start of the output range. Defaults to firstPointMatchingCondition if not specified.

PhaseUnwrapSeries#

Removes discontinuities from a wrapping signal (e.g. phase or heading) by adding whole multiples of period whenever the step between consecutive samples exceeds half the period. Output length equals input length.

input NumericSeries required

​

period DoubleConstant required

The wrapping period of the signal (e.g. 2*pi for radians, 360 for degrees). A jump between consecutive samples greater than period/2 in magnitude is corrected by adding/subtracting a whole multiple of period.

PhysicalConstant#

Physical constants referenceable by name. The server resolves the symbol to its numeric value in SI units.

SPEED_OF_LIGHT

Speed of light in vacuum, 299792458 m/s (exact).

AVOGADRO

Avogadro constant, 6.02214076e23 mol^-1 (exact).

BOLTZMANN

Boltzmann constant, 1.380649e-23 J/K (exact).

PLANCK

Planck constant, 6.62607015e-34 J*s (exact).

ELEMENTARY_CHARGE

Elementary charge, 1.602176634e-19 C (exact).

GAS_CONSTANT

Molar gas constant, 8.31446261815324 J/(mol*K) (exact, Avogadro times Boltzmann).

STANDARD_GRAVITY

Standard acceleration of gravity, 9.80665 m/s^2 (exact by convention).

STANDARD_ATMOSPHERE

Standard atmosphere, 101325 Pa (exact by convention).

ABSOLUTE_ZERO_CELSIUS

Absolute zero expressed in degrees Celsius, -273.15 (exact).

GRAVITATIONAL_CONSTANT

Newtonian constant of gravitation, 6.67430e-11 m^3/(kg*s^2) (CODATA 2022, measured).

STEFAN_BOLTZMANN

Stefan-Boltzmann constant, 5.670374419e-8 W/(m^2*K^4) (exact derived).

PinnedModuleVersionReference#

version StringConstant required

​

PivotedTimescaleChannelNameComponent#

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

table Empty

​

name Empty

The value of the name column.

PivotedTimescaleScrapingConfig#

This config is used to scrape data from a Timescale database that has a pivoted schema. time | name | value | device 1 | temperature | 1 | a

filter array of TimescaleScrapingFilter

In order for data to be picked up by the scraper, it must match all filters in this list. To exclude chunks of data, it’s possible to use a not filter.

timeColumn string required

The name of the column that holds the timestamp.

nameColumn string required

The name of the column that holds the series name.

valueColumn string required

The name of the column that holds the series values.

dimensionColumns array of string

The names of the columns that comprise a dimension. They should have a database index for efficient filtering. We do not discover dimensions based on hypertable schema because they are not necessarily configured properly.

channelNameComponents array of PivotedTimescaleChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name.

separator string required

​

PolynomialCurve#

degree IntegerConstant required

The highest allowable degree of the fit polynomial.

intercept DoubleConstant

The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.

PolynomialCurveFit#

A polynomial fit of the enclosing target (y) against the chosen independent variable (x).

independentVariable CurveFitVariable required

The x axis the target is fit against — either relative sample time or another series.

degree IntegerConstant required

The highest allowable degree of the fit polynomial.

intercept DoubleConstant

The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.

Power#

Raises base to the power of exponent pointwise.

base NumericSeries required

Base values.

exponent NumericSeries required

Exponent values.

PowerCurve#

An empty JSON object, {}.

ProductSeries#

For every timestamp specified in the input series, outputs a value that is the product for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise product

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

PropertiesFilter#

name string required

​

values array of string

​

PropertyComparisonOperator#

EQ

​

NEQ

​

GT

​

GTE

​

LT

​

LTE

​

Queued#

An empty JSON object, {}.

RangeAggregationOperation#

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

sum Summation

​

rootMeanSquare RootMeanSquare

​

average Average

​

min Minimum

​

max Maximum

​

standardDeviation StandardDeviation

​

count Count

​

all Empty

​

RangeDurationSeries#

Outputs a numeric series with one point per range: timestamp = range start, value = range duration.

input RangeSeries required

​

unboundedRangeBehavior UnboundedRangeBehavior required

How to handle ranges with a missing start or end.

timeUnit TimeUnit

The time unit of the duration. Defaults to seconds if not specified.

RangeIntervalSource#

Intervals come from a range series. Must resolve to literal ranges.

ranges RangeSeries required

​

tagBy array of RangeTagSource

Non-empty ordered list of tag sources. Each contributes a tag key-value pair per range interval.

RangeMap#

start DoubleConstant

Inclusive start value. If not specified, the start is the prior range’s end value, or negative infinity.

end DoubleConstant

Exclusive end value. If not specified, the end value is the next range’s start value, or positive infinity.

output StringConstant required

The value to map to if the input value is within the range.

RangePaddingConfiguration#

PAD_START

​

PAD_END

​

PAD_START_AND_END

​

RangesAnchor#

Uses the start timestamp of the range at the configured zero-based index from ranges evaluated over each interval, considering only ranges whose start lies in the anchor window [start, end), or [start, +infinity) when the end is absent. The window is the run bounds for a run anchor. A range already in progress when the window opens anchors at the window start. Series in ranges that select no explicit dataset resolve against the aligned input dataset, and the computed range groups must carry the aligned runs’ runRid grouping tags.

ranges RangeSeries required

The range series evaluated per interval to locate the anchor range.

index IntegerConstant

Zero-based range index after sorting. Defaults to zero and must be non-negative.

sortOrder RangeSortOrder

Ordering by range start timestamp before selecting the index. Defaults to ASC.

RangeSeries#

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

approximateThreshold ApproximateThresholdRanges

​

booleanRanges BooleanRanges

​

thresholdRangesV2 ThresholdRangesV2

​

durationFilter DurationFilterRanges

​

durationFilterV2 DurationFilterRangesV2

​

enumFilter EnumFilterRanges

​

categoryFilterRangesV2 CategoryFilterRangesV2

​

categoricalOnChangeRangesV2 CategoricalOnChangeRangesV2

​

categoricalStaleRangesV2 CategoricalStaleRangesV2

​

categoricalEqualityRangesV2 CategoricalEqualityRangesV2

​

enumSeriesEqualityRangesNode EnumSeriesEqualityRanges

​

eventsSearch EventsSearchRanges

​

intersectRange IntersectRanges

​

literalRanges LiteralRanges

​

minMaxThreshold MinMaxThresholdRanges

Computes ranges where the input time series matches a filter defined by lower and upper bounds, and an operator.

not NotRanges

​

onChange OnChangeRanges

​

peak PeakRanges

​

extremaRangesV2 ExtremaRangesV2

​

rangeNumericAggregation RangesNumericAggregation

​

raw Reference

​

derived DerivedSeries

​

seriesCrossoverRangesNode SeriesCrossoverRanges

​

seriesEqualityRangesNode SeriesEqualityRanges

​

numericEqualityRangesV2 NumericEqualityRangesV2

​

stabilityDetection StabilityDetectionRanges

​

stabilityDetectionV2 StabilityDetectionRangesV2

​

staleRange StaleRanges

​

numericStaleRangesV2 NumericStaleRangesV2

​

threshold ThresholdingRanges

Computes ranges where the input time series matches a filter defined by a single threshold and an operator.

unionRange UnionRanges

​

paddedRanges PaddedRanges

​

paddedRangesV2 PaddedRangesV2

​

RangesNumericAggregation#

Aggregates the values of a numeric series at each range specified by the input ranges.

ranges RangeSeries required

​

input NumericSeries required

​

operation RangeAggregationOperation required

​

RangeSortOrder#

Sort order for selecting ranges. ASC selects from earliest to latest, DESC selects from latest to earliest.

ASC

​

DESC

​

RangeStart#

Selects which point of a satisfied condition begins the output range.

CONDITION_START

​

PERSISTENCE_START

​

RangeTagSource#

A dimension contributing a tag key-value pair per range interval.

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

intervalIndex IntervalIndexTag

​

rangeStartTimestamp IntervalStartTimestampTag

​

Reference#

name string required

A reference to a value not defined in the current compute scope.

RefpropProperty#

Supported properties for REFPROP calculations.

TEMPERATURE

​

PRESSURE

​

MASS_DENSITY

​

MASS_SPECIFIC_ENTHALPY

​

MASS_SPECIFIC_INTERNAL_ENERGY

​

MASS_SPECIFIC_ENTROPY

​

VISCOSITY

​

RefpropSeries#

Computes the output property given input properties for the substance using REFPROP. Initial implementation only expects two input properties.

inputs map of string to NumericSeries

A map that maps a REFPROP property to its numeric series.

outputProperty RefpropProperty required

The desired output property. This should not be one of the input properties.

substance RefpropSubstance required

The substance for REFPROP calculations.

interpolationConfiguration InterpolationConfiguration deprecated

Deprecated: Setting interpolation on this node is deprecated.

RefpropSeriesV2#

Computes a REFPROP output property from the supplied substance and output property.

inputs map of string to NumericSeries

Map of REFPROP property to its numeric series.

substance RefpropSubstance required

The substance for REFPROP calculations.

outputProperty RefpropProperty required

The desired output property. This must not be one of the input properties.

RefpropSubstance#

Supported substances for REFPROP calculations

NITROGEN

​

OXYGEN

​

HELIUM

​

HYDROGEN

​

METHANE

​

PROPANE

​

BUTANE

​

WATER

​

XENON

​

AIR

​

CARBON_DIOXIDE

​

ARGON

​

CARBON_MONOXIDE

​

JET_A_4658

​

JET_A_3638

​

RelativeTimestamp#

timeUnit TimeUnit required

​

offset string (date-time)

​

ResourceSearchQuery#

Predicate tree for filtering.

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

properties PropertiesFilter

​

numericProperty NumericPropertyPredicate

​

numericPropertyRange NumericPropertyRangePredicate

Matches resources using an inclusive numeric property range.

labels LabelsFilter

​

workspace StringConstant

​

and array of ResourceSearchQuery

​

or array of ResourceSearchQuery

​

not ResourceSearchQuery

​

RetentionPolicy#

type RetentionPolicyType required

​

expiryDays integer

​

RetentionPolicyType#

KEEP_UNTIL_EXPIRY

​

KEEP_FOREVER

​

rids.api.Property#

name StringConstant required

​

value StringConstant required

​

RollingOperationSeries#

DEPRECATED. Use numericAggregation with aggregation.RollingTimeAggregationBuilder instead.

input NumericSeries required

​

window Window required

​

operator NumericAggregationOperator required

​

RollingPointsAggregationBuilder#

Rolling point-count aggregation: for each point in the input, aggregate the current point and the preceding N - 1 points within the same tag grouping.

input Series required

​

points IntegerConstant required

​

RollingTimeAggregationBuilder#

Rolling time-window aggregation: for each point in the input, aggregate the values within the preceding time window.

input Series required

​

window compute.api.Duration required

​

RootMeanSquare#

The root mean square of points inside the time window.

An empty JSON object, {}.

Run#

Run reference for Dataset.run. The rid field accepts either a literal run RID or a StringConstant reference resolved from Context.

rid StringConstant required

Resource identifier of a run

run.api.Duration#

seconds integer (int64) required

​

nanos integer (int64) required

​

RunChannel#

runRid StringConstant required

​

assetRid StringConstant

Used to disambiguate when multiple assets within this run contain data scopes with the same name. If not specified for a run with multiple assets, an error will be thrown.

dataScopeName StringConstant required

Used to disambiguate when multiple data scopes within this run contain channels with the same name.

channel StringConstant required

​

additionalTags map of string to StringConstant deprecated

Deprecated: Use additionalTagFilters

additionalTagFilters TagFilters

Tags to filter the channel by, in addition to tag filters defined for a given Run data scope. Throws on collisions with tag keys already defined for the given Run data scope. Only returns points that match both sets of tag filters. For log series, include arg filters here in addition to tag filters.

tagsToGroupBy array of string deprecated

Deprecated: Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.

groupByTags array of StringConstant

Tags that the channel should be grouped by. If this is non-empty a grouped result will be returned with an entry for each grouping. Only one of tagsToGroupBy and groupByTags should be specified.

RunsSearchTarget#

Search runs. Each matched run expands to one grouping per data source attached to the run: asset-typed data sources contribute one grouping per data scope on the asset; dataset-typed data sources contribute one grouping per dataset. Every grouping is tagged by runRid and dataScope (the asset’s data scope name for asset-typed sources, or the run-local data source ref name for dataset-typed sources); asset-typed groupings additionally carry assetRid.

query ResourceSearchQuery required

Predicate tree used to filter matching runs.

RustUdfSource#

Rust source code defining the UDF entrypoint and any helper functions.

sourceCode string required

Rust source code to transpile into WASM. The operation consuming this source defines the entrypoint signature: scalar UDFs receive one scalar per input series, while aggregation UDFs receive grouped value vectors. If several functions appear at the top level, annotate the entrypoint with #[main].

S3Handle#

bucket string required

​

key string required

​

Sampling#

Options for returning a sampled subset of raw series points.

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

everyNthPerSeries EveryNthPerSeriesSampling

​

hashSubsample HashSubsampleSampling

​

SavedDataset#

A persisted source of data, named by its RID. Can be a catalog dataset, pipeline, connection, etc.

rid StringConstant required

A data source RID, given as a literal or as a variable resolved from Context. A pipeline’s logic only accepts catalog datasets/pipelines, since it is persisted without context.

ScalarUdfSeries#

Executes user-provided scalar UDF code over aligned inputs. The function must return one output for each aligned input row, with the return type matching the series type that contains this node.

inputs array of Series

Input series passed to the UDF in argument order.

source UdfSource required

Language-specific source definition for the UDF.

ScaleParameter#

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

trueFrameRate number

​

endingTimestamp Timestamp

​

scaleFactor number

the scale factor can be used to calculate whether media duration differs from a video’s | real duration, and if so, the true frame rate of the camera. The video time will thus be scaled | by the ratio of the real duration to media duration, or media frame rate to true frame rate.

ScaleSeries#

For every timestamp specified in the input series, multiply it by a constant factor.

input NumericSeries required

​

scalar DoubleConstant required

The constant to multiply each point by

scalarUnit string

The units of the scalar to multiply by. If empty, the scalar is considered unit-less.

Scatter#

A scatter plot comprised of the values from one input series on the x-axis and values from another input series on the y-axis, for all points within a requested time range.

x NumericSeries required

​

y NumericSeries required

​

ScatterCurveFit#

Fits a curve to the scatter between two series.

scatter Scatter required

The x and y series to fit to.

options ScatterFitOptions required

​

ScatterFitOptions#

minX DoubleConstant

Inclusive lower bound on the x values to fit to. If omitted, does not set a bound (equivalent to setting this to the minimum x value among all points in the time range).

maxX DoubleConstant

Inclusive upper bound on the x values to fit to. If omitted, does not set a bound (equivalent to setting this to the maximum x value among all points in the time range).

minY DoubleConstant

Inclusive lower bound on the y values to fit to. If omitted, does not set a bound (equivalent to setting this to the minimum y value among all points in the time range).

maxY DoubleConstant

Inclusive upper bound on the y values to fit to. If omitted, does not set a bound (equivalent to setting this to the maximum y value among all points in the time range).

ScrapingConfig#

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

influx InfluxScrapingConfig

​

nominal NominalScrapingConfig

​

timestream TimestreamScrapingConfig

​

timescale PivotedTimescaleScrapingConfig

​

visualCrossing VisualCrossingScrapingConfig

​

bigQuery BigQueryScrapingConfig

​

api ApiScrapingConfig

​

SearchDataset#

Resolves matching assets or runs from search, creating a combined dataset tagged by source rid and data scope.

target SearchTarget required

Whether to search assets or runs and with which query.

maxResults integer

Maximum number of assets or runs returned from search. Defaults to 10000 when omitted.

SearchDatasetFilesQuery#

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

timeRange TimeRangeFilter

​

uploadedAtRange UploadedAtFilter

​

fileTags map of TagName to string

​

and array of SearchDatasetFilesQuery

​

or array of SearchDatasetFilesQuery

​

SearchDatasetsQuery#

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

searchText string

​

exactMatch string

Performs case insensitive exact match search on the name.

label string

​

properties nominal.api.Property

​

numericProperty NumericPropertyPredicate

Matches datasets using a numeric property comparison.

numericPropertyRange NumericPropertyRangePredicate

Matches datasets using an inclusive numeric property range.

ingestStatus IngestStatus

​

ingestedBeforeInclusive string (date-time)

Inclusive upper bound on dataset creation time (ingestDate), not lastIngestedAt.

ingestedAfterInclusive string (date-time)

Inclusive lower bound on dataset creation time (ingestDate), not lastIngestedAt.

archiveStatus boolean

​

derived boolean

Filters datasets by whether they have a derived definition.

and array of SearchDatasetsQuery

​

or array of SearchDatasetsQuery

​

workspace string (RID)

​

SearchEventOriginType#

WORKBOOK

​

TEMPLATE

​

API

​

DATA_REVIEW

​

PROCEDURE

​

SearchTarget#

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

assets AssetsSearchTarget

​

runs RunsSearchTarget

​

SelectIndexFrom1dEnumArraySeries#

For each timestamp, selects a single enum value from the 1D enum array at the specified index. If the index is out of bounds for an array at a given timestamp, it is omitted.

input Enum1dArraySeries required

​

index IntegerConstant required

​

SelectIndexFrom1dNumericArraySeries#

For each timestamp, selects a single numeric value from the 1D numeric array at the specified index. If the index is out of bounds for an array at a given timestamp, it is omitted.

input Numeric1dArraySeries required

​

index IntegerConstant required

​

SelectNewestPointsSeries#

Select the most recent N points from the input series by timestamp.

input NumericSeries required

The input series to select the newest points from.

numPoints IntegerConstant required

The number of points to select.

SelectOldestPointsSeries#

Select the earliest N points from the input series by timestamp.

input NumericSeries required

The input series to select the oldest points from.

numPoints IntegerConstant required

The number of points to select.

SelectProperty#

Selects a typed property value from every asset or run branch resolved from dataset. Inside a WithSeriesDataset definition, dataset may be omitted to use that node’s wrapping input; it is required everywhere else. Asset branches read properties directly from their asset. Run branches read properties directly from their run, never from a backing asset or dataset. Direct saved-dataset branches are unsupported.

propertyName string required

​

dataset api.Dataset

​

SelectSeries#

Selects series from a dataset (might contain multiple tag groupings). When name is provided, selects that single channel. When name is omitted, selection starts from all channels in the dataset scope; callers narrow the selection with a filterByTag predicate on the reserved NOMINAL_CHANNEL tag key and preserve per-channel identity in the response with selectTags. Providing both name and a NOMINAL_CHANNEL filter is rejected as an invalid request. Raw and derived channels can both be selected through the reserved tag filter.

name StringConstant

The identifying series name to query

dataset api.Dataset

The dataset providing the data to query. May be omitted inside a WithSeriesDataset series definition, in which case it defaults to that node’s wrapping input; required everywhere else.

sampling Sampling

Raw-series sampling options. Supported for numeric and enum raw series.

Series#

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

raw Reference deprecated

Deprecated: use typed value of series instead.

enum EnumSeries

​

numeric NumericSeries

​

log LogSeries

​

array ArraySeries

​

struct StructSeries

​

video Reference

​

SeriesCrossoverRanges#

Produces a list of zero-duration ranges at the first point where two series cross over one another

inputA NumericSeries required

​

inputB NumericSeries required

The series inputA is compared against.

SeriesEqualityRanges#

Produces a list of ranges for which provided series are all equal (or are not all equal).

input array of NumericSeries

​

equalityOperator EqualityOperator required

​

tolerance DoubleConstant

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

SeriesVariable#

A series selected from a dataset, bound to a variable. The series type (numeric, enum, …) is decided lazily by the node consuming the variable, matching the behaviour of channel variables.

select SelectSeries required

​

groupByTags array of StringConstant

Tags that the series should be grouped by. If this is non-empty a grouped result will be returned with an entry for each grouping; otherwise all matching series are merged.

SetNegativeValuesToZero#

An empty JSON object, {}.

SetOperator#

AND

​

OR

​

SignalFilterConfiguration#

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

lowPass LowPassConfiguration

​

highPass HighPassConfiguration

​

bandPass BandPassConfiguration

​

bandStop BandStopConfiguration

​

SignalFilterSeries#

Applies IIR-based signal filtering to input series. Includes low-pass, high-pass, band-pass, and band-stop filters. Currently supports variable-order bidirectional Butterworth filters, with fixed-size padding based on SciPy output.

input NumericSeries required

​

signalFilterConfiguration SignalFilterConfiguration required

Filter type and cutoff frequencies.

order IntegerConstant required

Order of filter. Must be a positive integer, and is effectively doubled for bidirectional filters.

samplingFrequency DoubleConstant

The sampling frequency of the input series. Used to calculate normalized frequency for cutoff frequencies.

Sin#

Computes the trigonometric sine of each value (input in radians).

x NumericSeries required

Input numeric series (radians).

SortField#

INGEST_DATE

Dataset creation time (created_at). The name is historical; use LAST_INGESTED_AT for when data was last added.

START_TIME

Start of the dataset’s data bounds.

END_TIME

End of the dataset’s data bounds.

LAST_INGESTED_AT

When data was last added, as the latest of a successful file ingest and streaming-session activity. Datasets that have never received either sort last.

SortOptions#

isDescending boolean required

​

field SortField required

​

Sqrt#

Computes the square root of each value.

x NumericSeries required

Input numeric series (non-negative values).

StabilityDetectionRanges#

Outputs a set of ranges where the input series is stable. For each point, the min and max are calculated over the specified lookback window, including the current point. A point is considered stable if its value does not deviate from the calculated min and the max by more than the threshold and the total number of points within the window is at least the specified amount. The threshold can be either fixed values or percentages of the value. The lookback window must be strictly positive. The minimum points threshold defaults to 2.

input NumericSeries required

​

windowConfiguration StabilityWindowConfiguration required

​

threshold Threshold required

​

StabilityDetectionRangesV2#

Produces ranges where a numeric input is stable within a modern duration window.

input NumericSeries required

​

window compute.api.Duration required

Lookback window over which the input’s spread is measured.

minPoints IntegerConstant

Minimum number of points in the window. Defaults to 2.

threshold Threshold required

​

StabilityWindowConfiguration#

minPoints IntegerConstant

The minimum number of points within the window to create a stable range. Must be non-negative. If not present, will default to 2.

duration DurationConstant required

​

StaleRanges#

Produces a list of ranges for which data does not exist for the specified duration or longer. Increases window size by the specified staleness threshold on both ends to capture edge cases of data not currently in view.

input Series required

​

threshold DurationConstant required

​

startTimestamp TimestampConstant

The start timestamp of the range. If not specified, staleness will automatically use view range start.

endTimestamp TimestampConstant deprecated

Deprecated: No longer used and will be removed

StandardDeviation#

The standard deviation of points inside the time window.

An empty JSON object, {}.

StringConstant#

A string constant that can be a literal value or a named variable reference.

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

literal string

Create from a literal string value.

variable string

Create from a named reference.

StringPropertyDimension#

Injects the value of a string property, under a tag key equal to the property name by default. Only supported on asset and run branches: asset branches read the asset’s properties, and run branches, including run branches backed by an asset, read the run’s properties, matching SelectProperty. Values are injected as is. A branch without the property, or whose property holds a numeric value, gets the reserved value NOMINAL_ABSENT.

propertyName StringConstant required

Name of the property whose value to inject. Also the default tag key.

StringSetConstant#

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

literal array of string

​

variable string

​

StringSetConstantV2#

A set of string constants that can be a literal set or a named variable reference.

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

literal array of StringConstant

Create from a literal set of string constants.

variable string

Create from a named reference.

StructSelectTagsSeries#

Subsets the tag dimensions of the input struct series to the given tag keys. Preserves the input series’ cardinality: points that share the selected keys but differ on dropped keys remain distinct.

input StructSeries required

​

tagKeys array of StringConstant

​

StructSeries#

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

channel ChannelSeries

​

raw Reference

​

derived DerivedSeries

​

combine CombineStructSeries

​

selectStruct SelectSeries

​

extractFromStruct ExtractStructFromStructSeries

​

toStartOfInterval StructToStartOfIntervalSeries

​

timeShift StructTimeShiftSeries

​

filterByTag StructTagFilterSeries

​

selectTags StructSelectTagsSeries

​

StructTagFilterSeries#

Applies a tag predicate to the struct series produced by input.

input StructSeries required

​

predicate TagPredicate required

​

StructTimeShiftSeries#

input StructSeries required

​

duration DurationConstant required

​

StructToStartOfIntervalSeries#

Snaps each point’s timestamp to the start of its enclosing fixed-size time bucket. Buckets are epoch-aligned: a point at timestamp t (nanoseconds) is rewritten to floor(t / window) * window. Values and tag groupings are preserved; aggregation of points that collide on the snapped timestamp is the responsibility of downstream nodes.

input StructSeries required

​

window compute.api.Duration required

​

Subtract#

Subtracts right from left pointwise.

left NumericSeries required

Left-hand operand (minuend).

right NumericSeries required

Right-hand operand (subtrahend).

SuccessResult#

An empty JSON object, {}.

Summation#

The sum of points inside the time window.

An empty JSON object, {}.

SumSeries#

For every timestamp specified in the input series, outputs a value that is the sum for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise sum

interpolationConfiguration InterpolationConfiguration deprecated

Defaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.

TagAnd#

Conjunction of two tag predicates (both must hold).

left TagPredicate required

​

right TagPredicate required

​

TagByIntervalsSeries#

Injects tags derived from interval boundaries onto a numeric series. Points within an interval get tagged; points outside all intervals are dropped. Intervals come from either events or ranges. If intervals with different tag map overlap, a data point falling in multiple intervals is duplicated into each matching output group. Overlapping intervals with equal tag maps are not allowed. Optional time shift subtracts a per-interval anchor from timestamps after matching.

input NumericSeries required

​

intervals IntervalSource required

​

timeShift TagByIntervalsTimeShift

When set, shift each matched point’s timestamp by the chosen anchor for that interval.

TagByIntervalsTimeShift#

How to shift timestamps after tagging (subtract anchor from each point in the interval slice).

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

intervalStart IntervalStartTimeShift

​

intervalEnd IntervalEndTimeShift

​

eventTimeShift EventTimeShift

​

TagFilter#

A filter on a single tag key and set of values. For an IN operator, the tag key must match at least one of the values in the set. For a NOT_IN operator, it must not match any of the values in the set.

key StringConstant required

​

values array of StringConstant

​

operator TagFilterOperator required

​

TagFilterOperator#

IN

​

NOT_IN

​

TagFilters#

A set of tag filters to apply to a channel. Allows for combining filters on multiple tag keys, but throws if any one tag key is specified in more than one filter.

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

single TagFilter

​

and array of TagFilters

​

TaggedDataset#

Injects one ephemeral tag (key and value) onto the underlying dataset.

input api.Dataset required

The underlying dataset to tag.

key StringConstant required

Tag key to inject onto each series in the dataset.

value StringConstant required

Tag value to assign to the injected key.

TagIn#

Constrains a tag key to be in the given set of values.

key StringConstant required

​

values StringSetConstantV2 required

​

TagNotIn#

Constrains a tag key to not be in the given set of values.

key StringConstant required

​

values StringSetConstantV2 required

​

TagPredicate#

Conjunctive tag predicate for dataset filtering. Compiles to resolved TagFilters for storage and resolution-time folding against known tag assignments (e.g. TaggedDataset, search branches).

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

in TagIn

​

notIn TagNotIn

​

and TagAnd

​

Tan#

Computes the trigonometric tangent of each value (input in radians).

x NumericSeries required

Input numeric series (radians).

TemporalUnit#

HOURS

​

DAYS

​

WEEKS

​

Threshold#

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

absolute AbsoluteThreshold

​

percentage PercentageThreshold

​

ThresholdingRanges#

Produces a list of ranges for which the threshold condition is satisfied.

input NumericSeries required

​

threshold DoubleConstant required

​

operator ThresholdOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

ThresholdOperator#

GREATER_THAN

​

GREATER_THAN_OR_EQUAL_TO

​

LESS_THAN

​

LESS_THAN_OR_EQUAL_TO

​

EQUAL_TO

​

NOT_EQUAL_TO

​

ThresholdRangesComparison#

Selects the comparison applied to a numeric threshold.

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

gt ThresholdRangesOrderedComparison

​

ge ThresholdRangesOrderedComparison

​

lt ThresholdRangesOrderedComparison

​

le ThresholdRangesOrderedComparison

​

eq ThresholdRangesEqualityComparison

​

ne ThresholdRangesEqualityComparison

​

ThresholdRangesEqualityComparison#

An equality comparison against a numeric threshold, within an optional tolerance.

threshold DoubleConstant required

The value each input point is compared against.

tolerance DoubleConstant

Maximum absolute difference from the threshold still counted as equal. Defaults to zero, i.e. exact equality.

ThresholdRangesOrderedComparison#

An ordering comparison against a single numeric threshold.

threshold DoubleConstant required

The value each input point is compared against.

ThresholdRangesV2#

Produces ranges where a numeric input satisfies a threshold comparison.

input NumericSeries required

​

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

Selects whether the output begins at the first match or after persistence is satisfied.

comparison ThresholdRangesComparison required

​

TimeDifferenceSeries#

Outputs a new series where each value is the difference between the time of the current and previous points.

input Series required

​

timeUnit TimeUnit

The time unit used to define the output values. Defaults to seconds if not specified.

TimeRangeFilter#

searches for files that intersect with the specified range.

start UtcTimestamp

​

end UtcTimestamp

​

TimescaleConnectionDetails#

database string required

​

host string required

​

port integer required

​

username string required

This is also the reference to the secret containing the password

passwordSecretRid string (RID) required

Secret Rid of password secret stored in Secrets Service.

TimescaleScrapingFilter#

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

not TimescaleScrapingFilter

​

matchTable array of string

Match any of the specified tables in the database.

matchSchema array of string

Match any of the specified schemas in the database.

TimeSeriesCurveFit#

Fits a curve to a series vs its timestamps.

series NumericSeries required

The series to fit. Timestamps will be used as x values and data as y values. The leftmost (earliest) timestamp will be used as the value of 0, and all other timestamps will be relative to that.

options TimeSeriesFitOptions required

​

TimeSeriesFitOptions#

timeUnit TimeUnit

Time unit used for the timestamps to fit against. Defaults to seconds if not specified.

TimeShiftedDataset#

Transforms a dataset by adding a time offset to all its data.

input api.Dataset required

The underlying dataset to time-shift.

offset compute.api.Duration required

The time shift to apply. Positive values shift data forward in time, negative values shift backward.

Timestamp#

Deprecated for new APIs. Use google.protobuf.Timestamp for absolute instants in proto APIs.

This legacy nanosecond precision timestamp type is represented by an epoch time in seconds and a nanosecond offset. The nanosecond offset is from the start of the epoch second, so must be less than 1 billion.

seconds integer (int64) required

​

nanos integer (int64) required

​

TimestampConstant#

A timestamp constant that can be a literal value or a named variable reference.

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

literal Timestamp

Create from a literal timestamp value.

variable string

Create from a named reference.

TimestampMetadata#

seriesName string required

​

timestampType catalog.TimestampType required

​

TimestreamChannelNameComponent#

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

table Empty

​

measure Empty

​

attribute Empty

​

valueOfTagWithName string

The value of the specified TagName will be used. If the tag is not present, it will be omitted.

TimestreamConnectionDetails#

nominalRoleArn string required

The role ARN owned by Nominal that has permission to assume the externalRoleArn.

nominalRoleRegion string required

AWS region that contains the Nominal role.

externalRegion string required

AWS region that contains the Timestream instance.

externalRoleArn string required

The role ARN used to make queries to Timestream. This role is owned by the AWS account that owns the Timestream instance.

database string required

Database inside of the Timestream instance to connect to.

TimestreamScrapingConfig#

filter array of TimestreamScrapingFilter

In order for data to be picked up by the scraper, it must match all filters in this list.

channelNameComponents array of TimestreamChannelNameComponent

channelNameComponents will be combined, together with separator, to form a fully qualified channel name.

separator string required

​

maxLookBackPeriodHours integer

The maximum time in hours to look back over series data to find unique measure and tag combinations. If not specified, the default look back period will be used.

TimestreamScrapingFilter#

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

matchTable array of string

Match any of the specified tables in the database.

TimeUnit#

DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

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

​

UdfSource#

Source provider for a user-defined function.

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

rust RustUdfSource

​

UnaryArithmeticOperation#

COS

Calculates the trigonometric cosine (input in radians)

SIN

Calculates the trigonometric sine (input in radians)

TAN

Calculates the trigonometric tangent (input in radians)

ABS

Calculates the absolute value

ASIN

Calculates the arcsine, returning radians

ACOS

Calculates the arccosine, returning radians

LOG

Calculates the base 10 logarithm

LN

Calculates the natural logarithm (base e)

SQRT

Calculates the square root

UnaryArithmeticSeries#

Applies a point-wise transformation to a series. The transformation function is applied to every individual data point.

input NumericSeries required

​

operation UnaryArithmeticOperation required

​

UnboundedBehavior#

Dictates how empty range bounds should be handled by the compute node. Defaults to INFINITY.

INFINITY

​

WINDOW_BOUND

​

UnboundedRangeBehavior#

How to handle ranges with a missing start or end.

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

clampToWindow Empty

Clamp a missing range start to the compute request window start and a missing range end to the compute request window end.

drop Empty

Drop the range if it has a missing start or end.

Union#

Uses the union of all input timestamps as the alignment grid.

An empty JSON object, {}.

UnionRanges#

inputs array of RangeSeries

The ranges to union.

UnitConversionSeries#

Convert the given series to a different unit.

input NumericSeries required

​

outputUnit string required

​

UnitOverrideSeries#

Override the unit of the given series without changing its values. Unlike unit conversion, no compatibility with the input’s current unit is required.

input NumericSeries required

​

unit string

The unit to report for the input series. If absent, the input’s unit is cleared.

UploadedAtFilter#

Searches for files whose uploadedAt falls within the specified range using half-open bounds [start, end). If start is omitted the range is unbounded below. If end is omitted the range is unbounded above.

start UtcTimestamp

​

end UtcTimestamp

​

UtcTimestamp#

secondsSinceEpoch integer (int64) required

​

ValueDifferenceSeries#

Calculates the first discrete difference of the input series. For each point, computes the difference between the current value and the previous value (current - previous). The first point in the input series is omitted from the output since it has no previous point to compare against.

This is equivalent to pandas DataFrame.diff() with period=1. Useful for analyzing changes between consecutive data points in time series data, such as detecting value increases or decreases.

Example: For input values [1.0, 1.0, 2.0, 2.5, 1.8], the output would be [0.0, 1.0, 0.5, -0.7] at the corresponding timestamps (the first timestamp is omitted).

input NumericSeries required

​

negativeValuesConfiguration NegativeValueConfiguration

Defines the strategy for handling negative output values. Defaults to allowNegativeValues if not specified.

ValueMapSeries#

Maps a continuous numeric series to a discrete enum series using the specified value ranges.

input NumericSeries required

The input series to map to an enumerated series

mapping array of RangeMap

The output of the first capturing range will be used. Ranges are start inclusive, end exclusive, must not overlap, and increasing from lowest to highest. Ranges can be open ended to the edge of the next or prior range. The first range can be open ended to negative infinity, and the last range can be open ended to positive infinity.

default StringConstant

The default value if not captured by any range. If not specified, points will be filtered.

VariableValue#

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

double number

​

computeNode ComputeNodeWithContext

​

duration run.api.Duration

​

integer integer

​

channel ChannelSeries deprecated

Deprecated: use series instead.

derived DerivedSeries

​

series SeriesVariable

​

string string

​

stringSet array of string

​

timestamp Timestamp

​

VideoFileMetadata#

Metadata specific to video files.

timestampManifest VideoFileTimestampManifest required

Specifies how to determine absolute timestamps for each frame in the video. Can be an embedded MCAP manifest, an external sidecar file, or calculated from a starting offset applied to presentation timestamps.

segmentMetadata VideoSegmentsMetadata

Cached aggregate metadata about the segments comprising this video file after segmentation has completed. Includes frame counts, duration, and frame rate. Empty until segmentation is complete. Note: Min/max timestamps are stored in DatasetFile.bounds field. Raw file size is stored in DatasetFile.fileSizeBytes.

VideoFileTimestampManifest#

A video file’s timestamp manifest specifies how to determine absolute timestamps for each frame. In an MCAP file, this data is embedded within the source file. Alternatively, the manifest may be provided as an external sidecar file. If no manifest is available, the timestamps are calculated by applying a starting offset to the presentation timestamp of each frame.

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

mcap McapTimestampManifest

​

s3path string

​

s3paths array of string

Multiple sidecar manifest files whose per-frame timestamps are concatenated in list order. Used when a video’s frame timestamps are recorded across several files.

noManifest NoTimestampManifest

​

VideoSegmentsMetadata#

Segment metadata for video files. Lightweight version that excludes bounds and RID since those are stored elsewhere.

numFrames integer required

Total number of frames across all segments.

numSegments integer required

Number of segments the video was split into.

scaleFactor number required

Scale factor applied to timestamps during segmentation.

mediaDurationSeconds number required

Total duration of the video in seconds.

mediaFrameRate number required

Average frame rate (FPS) calculated as total frames / duration.

VisualCrossingAvailableSeries#

Deprecated and not used for anything anymore, see record VisualCrossingAvailableSeries instead.

channel string required

​

unit string

​

description string

​

type VisualCrossingType required

​

VisualCrossingConnectionDetails#

apiKeySecretRid string (RID) required

Secret Rid of API key stored in Secrets Service.

VisualCrossingScrapingConfig#

availableSeries array of VisualCrossingAvailableSeries deprecated

list of available channels Deprecated: No longer used for anything

VisualCrossingType#

DOUBLE

​

STRING

​

WeakTimestampType#

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

ABSOLUTE

​

RELATIVE

​

PENDING

​

Window#

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

duration DurationConstant

​

WithSeriesDataset#

Adds one or more derived series to the base dataset. Each entry’s definition must reference only the wrapping input. Series names must be unique within the request; a derived name replaces a same-named series from input.

input api.Dataset required

The base dataset to which the new series will be added.

series array of NamedSeries

The named derived series to add.

ZscoreSeries#

Computes the z-score for each series within a group-by family. For each group at each timestamp, the output is (value - mean) / stddev, where mean and stddev are computed across all groups in the family at that timestamp, using the interpolation configuration to align values across groups. When stddev is zero at a timestamp (e.g., all groups have the same value), that data point is excluded from the output. If groupByTags is empty, all groups in the input series will be considered as a single family. This node only produces meaningful results when the input has a group by.

input NumericSeries required

​

groupByTags array of StringConstant

Tags to group by for the normalization. If left empty, all groups in the input will be considered as a single family. Otherwise, inputs will be normalized separately across the groups specified by the tags.

interpolationConfiguration InterpolationConfiguration deprecated

Configuration for aligning values across groups at each timestamp. Defaults to forward fill interpolation with a 1s interpolation radius. Deprecated: Setting interpolation on this node is deprecated.

Page design based on Scalar, MIT License.