Notebook service#
NotebookService manages workbooks (formerly known as notebooks).
OpenAPI file: NotebookService.json
Endpoints#
Create#
POST /scout/v2/notebook
Creates a new workbook. The workbook will be associated with the provided run. If the run does not exist, a RunNotFound error will be thrown.
Body
titlestring required
descriptionstring required
notebookTypeNotebookTypeOptional for backcompatibility. Default is a normal workbook.
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
isDraftboolean required
stateAsJsonstring required
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring required
versioninteger required
overlaysany JSON value required
runRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScopeOptional for back-compatibility.
Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
layoutWorkbookLayoutrequired
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelrequiredOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariablerequired
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring required
computeSpecComputeSpecrequired
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionrequiredmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRangerequired
timeRangeTypeWorkbookTimeRangeTyperequiredThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContentOptional for backcompatibility
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariablerequired
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionrequiredvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReferenceField to pin events to a workbook on creation.
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID) requiredThe event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedField to pin check alerts to a workbook on creation. Any specified CheckAlertReference will be added to the workbook along with it’s corresponding EventReference. Deprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID) required
workspacestring (RID)The workspace in which to create the workbook. If not provided, the workbook will be created in the default workspace for the user’s organization, if the default workspace for the organization is configured.
labelsarray of stringLabels to apply to the workbook on creation. Defaults to empty if not provided.
propertiesmap ofPropertyNameto stringProperties to apply to the workbook on creation. Defaults to empty if not provided.
previewImageThemeAwareImageTheme-aware preview image for the workbook. Falls back to a default illustration if not provided.
Fields of
ThemeAwareImagelightstring (RID) required
darkstring (RID) required
Response
ridstring (RID)
snapshotRidstring (RID)
snapshotAuthorRidstring (RID)
snapshotCreatedAtstring (date-time)
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
stateAsJsonstring
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring
versioninteger
overlaysany JSON value
layoutWorkbookLayout
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariable
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring
computeSpecComputeSpec
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRange
timeRangeTypeWorkbookTimeRangeTypeThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContent
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariable
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReference
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID)The event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"title": "<title>",
"description": "<description>",
"isDraft": true,
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true
}
}
}
}
}
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook",
headers={"Authorization": "Bearer <api key>"},
json={
"title": "<title>",
"description": "<description>",
"isDraft": True,
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": True,
},
},
},
},
},
},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook",
headers={"Authorization": "Bearer <api key>"},
json={
"title": "<title>",
"description": "<description>",
"isDraft": True,
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": 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/scout/v2/notebook",
headers={"Authorization": "Bearer <api key>"},
json={
"title": "<title>",
"description": "<description>",
"isDraft": True,
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": True,
},
},
},
},
},
},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<notebook rid>",
"snapshotRid": "<snapshot rid>",
"snapshotAuthorRid": "<user rid>",
"snapshotCreatedAt": "2026-01-01T00:00:00Z",
"snapshotDataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"snapshotMessage": "<snapshot message>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
},
"stateAsJson": "<state as json>",
"charts": [
{
"rid": "<viz id>",
"version": 1,
"overlays": {}
}
],
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true,
"hideLabel": true
}
}
}
}
},
"content": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
},
"contentV2": {
"type": "workbook",
"workbook": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
}
},
"eventRefs": [
{
"eventUuid": "<event uuid>",
"rid": "<event rid>"
}
],
"checkAlertRefs": [
{
"checkAlertRid": "<check alert rid>"
}
]
}
Update#
PUT /scout/v2/notebook/{rid}
Updates the contents of a workbook.
Path parameters
ridstring (RID) required
Body
stateAsJsonstring required
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring required
versioninteger required
overlaysany JSON value required
layoutWorkbookLayoutrequired
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelrequiredOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariablerequired
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring required
computeSpecComputeSpecrequired
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionrequiredmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRangerequired
timeRangeTypeWorkbookTimeRangeTyperequiredThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContentOptional for backcompatibility
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariablerequired
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionrequiredvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
latestSnapshotRidstring (RID)If provided, will only update the notebook if the latest snapshot matches the provided snapshot rid, and throws SaveNotebookConflict otherwise.
snapshotMessagestringDescribes what this save changed, recorded on the resulting snapshot. At most 4096 characters. Optional, so callers that have nothing to say leave it unset rather than sending an empty string (blank messages are treated as unset).
eventRefsarray ofEventReferenceReplace existing pinned events on the workbook.
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID) requiredThe event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedField to pin check alerts to a workbook on creation. If not provided, will keep the set of check alerts on the workbook unchanged. Providing an empty set will remove all check alerts from the workbook. Any specified CheckAlertReference will be added to the workbook along with it’s corresponding EventReference. Deprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID) required
Response
ridstring (RID)
snapshotRidstring (RID)
snapshotAuthorRidstring (RID)
snapshotCreatedAtstring (date-time)
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
stateAsJsonstring
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring
versioninteger
overlaysany JSON value
layoutWorkbookLayout
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariable
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring
computeSpecComputeSpec
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRange
timeRangeTypeWorkbookTimeRangeTypeThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContent
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariable
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReference
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID)The event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID)
Request
curl -X PUT "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true
}
}
}
}
}
}'
import requests
response = requests.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
json={
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": True,
},
},
},
},
},
},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
json={
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": True,
},
},
},
},
},
},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
json={
"stateAsJson": "<state as json>",
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": True,
},
},
},
},
},
},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<notebook rid>",
"snapshotRid": "<snapshot rid>",
"snapshotAuthorRid": "<user rid>",
"snapshotCreatedAt": "2026-01-01T00:00:00Z",
"snapshotDataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"snapshotMessage": "<snapshot message>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
},
"stateAsJson": "<state as json>",
"charts": [
{
"rid": "<viz id>",
"version": 1,
"overlays": {}
}
],
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true,
"hideLabel": true
}
}
}
}
},
"content": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
},
"contentV2": {
"type": "workbook",
"workbook": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
}
},
"eventRefs": [
{
"eventUuid": "<event uuid>",
"rid": "<event rid>"
}
],
"checkAlertRefs": [
{
"checkAlertRid": "<check alert rid>"
}
]
}
Get#
GET /scout/v2/notebook/{rid}
Path parameters
ridstring (RID) requiredThe unique RID of the workbook to retrieve.
Query parameters
snapshotstring (RID)Optional snapshot RID to retrieve a specific historical snapshot of the workbook.
Response
ridstring (RID)
snapshotRidstring (RID)
snapshotAuthorRidstring (RID)
snapshotCreatedAtstring (date-time)
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
stateAsJsonstring
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring
versioninteger
overlaysany JSON value
layoutWorkbookLayout
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariable
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring
computeSpecComputeSpec
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRange
timeRangeTypeWorkbookTimeRangeTypeThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContent
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariable
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReference
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID)The event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID)
Request
curl "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<notebook rid>",
"snapshotRid": "<snapshot rid>",
"snapshotAuthorRid": "<user rid>",
"snapshotCreatedAt": "2026-01-01T00:00:00Z",
"snapshotDataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"snapshotMessage": "<snapshot message>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
},
"stateAsJson": "<state as json>",
"charts": [
{
"rid": "<viz id>",
"version": 1,
"overlays": {}
}
],
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true,
"hideLabel": true
}
}
}
}
},
"content": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
},
"contentV2": {
"type": "workbook",
"workbook": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
}
},
"eventRefs": [
{
"eventUuid": "<event uuid>",
"rid": "<event rid>"
}
],
"checkAlertRefs": [
{
"checkAlertRid": "<check alert rid>"
}
]
}
Delete#
DELETE /scout/v2/notebook/{rid}
The workbook will be deleted and is not recoverable. For soft deletion, use archive.
Path parameters
ridstring (RID) required
Response
No content (HTTP 204).
Request
curl -X DELETE "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.delete(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.delete(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.delete(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Batch get#
POST /scout/v2/notebook/batch-get
Body
The body is an array of string (RID).
Response
The body is an array of Notebook.
Fields of Notebook
ridstring (RID)
snapshotRidstring (RID)
snapshotAuthorRidstring (RID)
snapshotCreatedAtstring (date-time)
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
notebookTypeNotebookType
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
stateAsJsonstring
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring
versioninteger
overlaysany JSON value
layoutWorkbookLayout
Set
typeto"v1".v1WorkbookLayoutV1
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariable
inputsWorkbookInputs
chartsmap ofVizIdtochartdefinition.api.VizDefinitionmap of visualizations. Previously termed “charts”
settingsWorkbookSettings
dataScopeInputsWorkbookDataScopeInputs
timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
timeRangesmap of string toTimeRange
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContent
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReference
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID)The event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/batch-get" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '[
"<notebook rid>"
]'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=["<notebook rid>"],
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=["<notebook rid>"],
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-get",
headers={"Authorization": "Bearer <api key>"},
json=["<notebook rid>"],
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
[
{
"rid": "<notebook rid>",
"snapshotRid": "<snapshot rid>",
"snapshotAuthorRid": "<user rid>",
"snapshotCreatedAt": "2026-01-01T00:00:00Z",
"snapshotDataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"snapshotMessage": "<snapshot message>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
},
"stateAsJson": "<state as json>",
"charts": [
{
"rid": "<viz id>",
"version": 1,
"overlays": {}
}
],
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true,
"hideLabel": true
}
}
}
}
},
"content": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
},
"contentV2": {
"type": "workbook",
"workbook": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
}
},
"eventRefs": [
{
"eventUuid": "<event uuid>",
"rid": "<event rid>"
}
],
"checkAlertRefs": [
{
"checkAlertRid": "<check alert rid>"
}
]
}
]
Batch get metadata#
POST /scout/v2/notebook/batch-get-metadata
Body
The body is an array of string (RID).
Response
The body is an array of NotebookMetadataWithRid.
Fields of NotebookMetadataWithRid
ridstring (RID)
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/batch-get-metadata" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '[
"<notebook rid>"
]'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-get-metadata",
headers={"Authorization": "Bearer <api key>"},
json=["<notebook rid>"],
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-get-metadata",
headers={"Authorization": "Bearer <api key>"},
json=["<notebook rid>"],
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-get-metadata",
headers={"Authorization": "Bearer <api key>"},
json=["<notebook rid>"],
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
[
{
"rid": "<notebook rid>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
}
}
]
Update metadata#
PUT /scout/v2/notebook/{rid}/update-metadata
Updates metadata about a workbook, but not its contents.
Path parameters
ridstring (RID) required
Body
titlestring
dataScopeNotebookDataScopeOptional for backcompatibility.
Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
descriptionstring
propertiesmap ofPropertyNameto string
labelsarray of string
isDraftboolean
previewImageThemeAwareImageTheme-aware preview image for the workbook. When provided, replaces the existing preview image.
Fields of
ThemeAwareImagelightstring (RID) required
darkstring (RID) required
isLockedbooleanWhether to lock or unlock the workbook. If omitted, the original lock state will remain unchanged. When provided, the server derives the locking user from the auth header and generates the lock timestamp at write time.
Response
runRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
Request
curl -X PUT "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-metadata" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"title": "<title>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"description": "<description>",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"isDraft": true,
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
},
"isLocked": true
}'
import requests
response = requests.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-metadata",
headers={"Authorization": "Bearer <api key>"},
json={
"title": "<title>",
"dataScope": {"type": "runRids", "runRids": ["<run rid>"]},
"description": "<description>",
"properties": {"<key>": "<property value>"},
"labels": ["<label>"],
"isDraft": True,
"previewImage": {"light": "<attachment rid>", "dark": "<attachment rid>"},
"isLocked": True,
},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-metadata",
headers={"Authorization": "Bearer <api key>"},
json={
"title": "<title>",
"dataScope": {"type": "runRids", "runRids": ["<run rid>"]},
"description": "<description>",
"properties": {"<key>": "<property value>"},
"labels": ["<label>"],
"isDraft": True,
"previewImage": {"light": "<attachment rid>", "dark": "<attachment rid>"},
"isLocked": True,
},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-metadata",
headers={"Authorization": "Bearer <api key>"},
json={
"title": "<title>",
"dataScope": {"type": "runRids", "runRids": ["<run rid>"]},
"description": "<description>",
"properties": {"<key>": "<property value>"},
"labels": ["<label>"],
"isDraft": True,
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>",
},
"isLocked": True,
},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
}
Get used ref names#
GET /scout/v2/notebook/{rid}/ref-names
Returns the set of all ref names used by the workbook.
Path parameters
ridstring (RID) required
Response
The body is an array of string.
Request
curl "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/ref-names" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/ref-names",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/ref-names",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/ref-names",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
[
"<data source ref name>"
]
Update ref names#
POST /scout/v2/notebook/{rid}/update-ref-names
Updates the data source ref names for all variables used in the workbook.
Path parameters
ridstring (RID) required
Body
refNameUpdatesmap ofDataSourceRefNameto string
Response
ridstring (RID)
snapshotRidstring (RID)
snapshotAuthorRidstring (RID)
snapshotCreatedAtstring (date-time)
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
stateAsJsonstring
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring
versioninteger
overlaysany JSON value
layoutWorkbookLayout
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariable
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring
computeSpecComputeSpec
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRange
timeRangeTypeWorkbookTimeRangeTypeThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContent
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariable
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReference
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID)The event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-ref-names" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"refNameUpdates": {
"<key>": "<data source ref name>"
}
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-ref-names",
headers={"Authorization": "Bearer <api key>"},
json={"refNameUpdates": {"<key>": "<data source ref name>"}},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-ref-names",
headers={"Authorization": "Bearer <api key>"},
json={"refNameUpdates": {"<key>": "<data source ref name>"}},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/update-ref-names",
headers={"Authorization": "Bearer <api key>"},
json={"refNameUpdates": {"<key>": "<data source ref name>"}},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<notebook rid>",
"snapshotRid": "<snapshot rid>",
"snapshotAuthorRid": "<user rid>",
"snapshotCreatedAt": "2026-01-01T00:00:00Z",
"snapshotDataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"snapshotMessage": "<snapshot message>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
},
"stateAsJson": "<state as json>",
"charts": [
{
"rid": "<viz id>",
"version": 1,
"overlays": {}
}
],
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true,
"hideLabel": true
}
}
}
}
},
"content": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
},
"contentV2": {
"type": "workbook",
"workbook": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
}
},
"eventRefs": [
{
"eventUuid": "<event uuid>",
"rid": "<event rid>"
}
],
"checkAlertRefs": [
{
"checkAlertRid": "<check alert rid>"
}
]
}
Get all labels and properties#
GET /scout/v2/notebook/get-all-labels-properties
Returns all properties (key value pairs) and labels that have been previously used on workbook. These can be used to organize workbooks.
Query parameters
workspacesarray of string (RID)If supplied, will return only the labels and properties for workbooks within the supplied workspaces. If empty will return all labels and properties for workbooks within workspaces that the user is permitted to see.
Response
propertiesmap ofPropertyNameto array of string
labelsarray of string
Request
curl "https://api.gov.nominal.io/api/scout/v2/notebook/get-all-labels-properties" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/get-all-labels-properties",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/get-all-labels-properties",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.gov.nominal.io/api/scout/v2/notebook/get-all-labels-properties",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"properties": {
"<key>": [
"<property value>"
]
},
"labels": [
"<label>"
]
}
Search#
POST /scout/v2/notebook/search
Body
querySearchNotebooksQueryrequired
Set
typeto"and".andarray ofSearchNotebooksQuery
Set
typeto"or".orarray ofSearchNotebooksQuery
Set
typeto"not".notSearchNotebooksQuery
Set
typeto"exactMatch".exactMatchstringPerforms case insensitive exact match search on the title.
Set
typeto"searchText".searchTextstring
Set
typeto"label".labelstring deprecatedDeprecated: use labels
Set
typeto"labels".labelsLabelsFilter
Fields of
LabelsFilteroperatorSetOperatorrequired
Values of
SetOperatorAND
OR
labelsarray of string
Set
typeto"property".propertynominal.api.PropertydeprecatedDeprecated: use properties
Fields of
nominal.api.Propertynamestring required
valuestring required
Set
typeto"properties".propertiesPropertiesFilter
Fields of
PropertiesFilternamestring required
valuesarray of string
Set
typeto"assetRid".assetRidstring (RID) deprecatedDeprecated: use assetRids
Set
typeto"assetRids".assetRidsapi.AssetsFilter
Fields of
api.AssetsFilteroperatorSetOperatorrequired
assetsarray of string (RID)
Set
typeto"exactAssetRids".exactAssetRidsarray of string (RID)Requires the set of assets in the query to exactly match the set of assets in the notebook. To do a partial match, use an assetRids query.
Set
typeto"authorRid".authorRidstring (RID)
Set
typeto"runRid".runRidstring (RID) deprecatedDeprecated: use runRids
Set
typeto"runRids".runRidsRunsFilter
Fields of
RunsFilteroperatorSetOperatorrequired
runsarray of string (RID)
Set
typeto"notebookType".notebookTypeNotebookTypedeprecatedDeprecated: use notebook types
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
Set
typeto"notebookTypes".notebookTypesNotebookTypesFilter
Fields of
NotebookTypesFiltertypesarray ofNotebookType
Set
typeto"draftState".draftStateboolean
Set
typeto"archived".archivedboolean
Set
typeto"workspace".workspacestring (RID)
Set
typeto"authorIsCurrentUser".authorIsCurrentUserboolean
Set
typeto"authorRids".authorRidsarray of string (RID)
showDraftsboolean requiredSoon to be deprecated. Compose a draftState filter within SearchNotebooksQuery instead
showArchivedbooleanSoon to be deprecated. Compose an archived filter within SearchNotebooksQuery instead
sortBySortByUPDATED_AT descending by default
Fields of
SortByisDescendingboolean required
fieldSortByFieldrequired
Values of
SortByFieldNAME
CREATED_AT
UPDATED_AT
nextPageTokenstring
pageSizeintegerDefaults to 100. Will throw if larger than 1000.
Response
resultsarray ofNotebookMetadataWithRid
Fields of
NotebookMetadataWithRidridstring (RID)
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
nextPageTokenstring
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/search" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"query": {
"type": "and",
"and": []
},
"showDrafts": true
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/search",
headers={"Authorization": "Bearer <api key>"},
json={"query": {"type": "and", "and": []}, "showDrafts": True},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/search",
headers={"Authorization": "Bearer <api key>"},
json={"query": {"type": "and", "and": []}, "showDrafts": 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/scout/v2/notebook/search",
headers={"Authorization": "Bearer <api key>"},
json={"query": {"type": "and", "and": []}, "showDrafts": True},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"results": [
{
"rid": "<notebook rid>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
}
}
],
"nextPageToken": "<token>"
}
Lock#
PUT /scout/v2/notebook/{rid}/lock
Deprecated: Prefer the isLocked field on updateMetadata.
Makes a workbook uneditable. Deprecated: use the isLocked field on updateMetadata instead.
Path parameters
ridstring (RID) required
Response
No content (HTTP 204).
Request
curl -X PUT "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/lock" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/lock",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/lock",
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.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/lock",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Unlock#
PUT /scout/v2/notebook/{rid}/unlock
Deprecated: Prefer the isLocked field on updateMetadata.
Unlocks a workbook for editing. Deprecated: use the isLocked field on updateMetadata instead.
Path parameters
ridstring (RID) required
Response
No content (HTTP 204).
Request
curl -X PUT "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unlock" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unlock",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unlock",
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.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unlock",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Archive#
PUT /scout/v2/notebook/{rid}/archive
Archives a workbook, which excludes it from search and hides it from being publicly visible, but does not permanently delete it. Archived workbooks can be unarchived.
Path parameters
ridstring (RID) required
Response
No content (HTTP 204).
Request
curl -X PUT "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/archive" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/archive",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<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.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/archive",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Unarchive#
PUT /scout/v2/notebook/{rid}/unarchive
Makes a previously archived workbook searchable.
Path parameters
ridstring (RID) required
Response
No content (HTTP 204).
Request
curl -X PUT "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unarchive" \
-H "Authorization: Bearer <api key>"
import requests
response = requests.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unarchive",
headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx
response = httpx.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<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.put(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/unarchive",
headers={"Authorization": "Bearer <api key>"},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Batch archive#
POST /scout/v2/notebook/batch-archive
Archives the provided workbooks. Already-archived workbooks are left unchanged (their archiving user and timestamp are preserved). Throws if any of the workbooks don’t exist.
Body
targetNotebookArchiveTargetrequired
Set
typeto"rids".ridsarray of string (RID)The workbooks to act on. Will throw if more than 1_000 rids are provided.
Response
No content (HTTP 204).
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/batch-archive" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"target": {
"type": "rids",
"rids": [
"<notebook rid>"
]
}
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-archive",
headers={"Authorization": "Bearer <api key>"},
json={"target": {"type": "rids", "rids": ["<notebook rid>"]}},
)
response.raise_for_status()
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-archive",
headers={"Authorization": "Bearer <api key>"},
json={"target": {"type": "rids", "rids": ["<notebook rid>"]}},
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-archive",
headers={"Authorization": "Bearer <api key>"},
json={"target": {"type": "rids", "rids": ["<notebook rid>"]}},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Batch unarchive#
POST /scout/v2/notebook/batch-unarchive
Unarchives the provided workbooks. Workbooks that are not archived are left unchanged. Throws if any of the workbooks don’t exist.
Body
targetNotebookArchiveTargetrequired
Set
typeto"rids".ridsarray of string (RID)The workbooks to act on. Will throw if more than 1_000 rids are provided.
Response
No content (HTTP 204).
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/batch-unarchive" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"target": {
"type": "rids",
"rids": [
"<notebook rid>"
]
}
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-unarchive",
headers={"Authorization": "Bearer <api key>"},
json={"target": {"type": "rids", "rids": ["<notebook rid>"]}},
)
response.raise_for_status()
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-unarchive",
headers={"Authorization": "Bearer <api key>"},
json={"target": {"type": "rids", "rids": ["<notebook rid>"]}},
)
response.raise_for_status()
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/batch-unarchive",
headers={"Authorization": "Bearer <api key>"},
json={"target": {"type": "rids", "rids": ["<notebook rid>"]}},
) as response:
response.raise_for_status()
asyncio.run(main())
Response: 204
No content.
Duplicate#
POST /scout/v2/notebook/{rid}/duplicate
Duplicates an existing workbook, copying its content (layout, charts, variables, pinned events) and optionally overriding metadata fields such as title, description, data scope, labels, and properties. Returns the newly created workbook.
Path parameters
ridstring (RID) requiredThe RID of the source workbook to duplicate.
Body
titlestringOverride the title of the duplicated workbook. If not provided, generates a copy title from the source using the titleSuffix.
titleSuffixstringCustom suffix for generating the copy title (e.g., “Run analysis”). Defaults to “copy”. Ignored if title is explicitly provided.
descriptionstringOverride description. Defaults to the source workbook’s description.
dataScopeNotebookDataScopeOverride data scope. Defaults to the source workbook’s data scope.
Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
isDraftbooleanOverride draft status. Defaults to the source workbook’s draft status.
isLockedbooleanOverride lock status. Defaults to false — locked workbooks are unlocked when duplicated, since the copy is a new draft for the caller to iterate on.
workspacestring (RID) requiredThe workspace for the duplicated workbook.
labelsarray of stringOverride labels. Defaults to the source workbook’s labels.
propertiesmap ofPropertyNameto stringOverride properties. Defaults to the source workbook’s properties.
previewImageThemeAwareImageOverride preview image. Defaults to the source workbook’s preview image.
Fields of
ThemeAwareImagelightstring (RID) required
darkstring (RID) required
Response
ridstring (RID)
snapshotRidstring (RID)
snapshotAuthorRidstring (RID)
snapshotCreatedAtstring (date-time)
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.Set
typeto"runRids".runRidsarray of string (RID)
Set
typeto"assetRids".assetRidsarray of string (RID)
snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadata
Fields of
NotebookMetadatarunRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScope
notebookTypeNotebookType
Values of
NotebookTypeWORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
titlestring
descriptionstring
isDraftboolean
isArchivedboolean
lockLock
Fields of
LockisLockedboolean
updatedAtstring (date-time)
updatedByRidstring (RID)
createdByRidstring (RID)
createdAtstring (date-time)
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
Fields of
ThemeAwareImagelightstring (RID)
darkstring (RID)
stateAsJsonstring
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
Fields of
ChartWithOverlaysridstring
versioninteger
overlaysany JSON value
layoutWorkbookLayout
Set
typeto"v1".v1WorkbookLayoutV1
Fields of
WorkbookLayoutV1rootPanelPanelOnly TabbedPanel supported.
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
Fields of
WorkbookContentchannelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariable
Fields of
channelvariables.api.ChannelVariabledisplayNamestring
variableNamestring
computeSpecComputeSpec
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
inputsWorkbookInputs
Set
typeto"v1".v1WorkbookInputsV1
chartsmap ofVizIdtochartdefinition.api.VizDefinitionmap of visualizations. Previously termed “charts”
Set
typeto"boundary".boundaryBoundaryVizDefinition
Set
typeto"burstDisc".burstDiscBurstDiscVizDefinition
Set
typeto"button".buttonButtonVizDefinition
Set
typeto"cartesian".cartesianCartesianChartDefinition
Set
typeto"checklist".checklistChecklistChartDefinition
Set
typeto"endNode".endNodeEndNodeVizDefinition
Set
typeto"frequency".frequencyFrequencyChartDefinition
Set
typeto"geo".geoGeoVizDefinition
Set
typeto"geo3d".geo3dGeo3dDefinition
Set
typeto"heatExchanger".heatExchangerHeatExchangerVizDefinition
Set
typeto"histogram".histogramHistogramChartDefinition
Set
typeto"image".imageImageVizDefinition
Set
typeto"instrument".instrumentInstrumentVizDefinition
Set
typeto"log".logLogPanelDefinition
Set
typeto"markdown".markdownMarkdownPanelDefinition
Set
typeto"numberInput".numberInputNumberInputVizDefinition
Set
typeto"orifice".orificeOrificeVizDefinition
Set
typeto"plotly".plotlyPlotlyPanelDefinition
Set
typeto"procedure".procedureProcedureVizDefinition
Set
typeto"pump".pumpPumpVizDefinition
Set
typeto"regulator".regulatorRegulatorVizDefinition
Set
typeto"shape".shapeShapeVizDefinition
Set
typeto"tank".tankTankVizDefinition
Set
typeto"thrustChamber".thrustChamberThrustChamberVizDefinition
Set
typeto"timeSeries".timeSeriesTimeSeriesChartDefinition
Set
typeto"timeSeriesTable".timeSeriesTableTimeSeriesTablePanelDefinition
Set
typeto"valueTable".valueTableValueTableDefinition
Set
typeto"valve".valveValveVizDefinition
Set
typeto"video".videoVideoVizDefinition
settingsWorkbookSettings
Fields of
WorkbookSettingsassetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
dataScopeInputsWorkbookDataScopeInputs
Set
typeto"v1".timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
Fields of
TimeRangeInputlabelstringThe label of the input for display purposes.
timeRangeRange
timeRangeTypeWorkbookTimeRangeTypeThe type of time range to use for the input.
timeRangesmap of string toTimeRange
Set
typeto"timeRangeV1".timeRangeV1TimeRangeV1
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
contentV2UnifiedWorkbookContent
Set
typeto"workbook".workbookWorkbookContent
Set
typeto"comparisonWorkbook".comparisonWorkbookComparisonWorkbookContent
Fields of
ComparisonWorkbookContentchannelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariable
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionvisualizations. Charts is a legacy term.
Set
typeto"reportWorkbook".reportWorkbookWorkbookContent
eventRefsarray ofEventReference
Fields of
EventReferenceeventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID)The event’s unique identifier.
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
Fields of
CheckAlertReferencecheckAlertRidstring (RID)
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/duplicate" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"workspace": "<workspace rid>"
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/duplicate",
headers={"Authorization": "Bearer <api key>"},
json={"workspace": "<workspace rid>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/duplicate",
headers={"Authorization": "Bearer <api key>"},
json={"workspace": "<workspace rid>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/<rid>/duplicate",
headers={"Authorization": "Bearer <api key>"},
json={"workspace": "<workspace rid>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"rid": "<notebook rid>",
"snapshotRid": "<snapshot rid>",
"snapshotAuthorRid": "<user rid>",
"snapshotCreatedAt": "2026-01-01T00:00:00Z",
"snapshotDataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"snapshotMessage": "<snapshot message>",
"metadata": {
"runRid": "<run rid>",
"dataScope": {
"type": "runRids",
"runRids": [
"<run rid>"
]
},
"notebookType": "WORKBOOK",
"title": "<title>",
"description": "<description>",
"isDraft": true,
"isArchived": true,
"lock": {
"isLocked": true,
"updatedAt": "2026-01-01T00:00:00Z",
"updatedByRid": "<user rid>"
},
"createdByRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-01T00:00:00Z",
"properties": {
"<key>": "<property value>"
},
"labels": [
"<label>"
],
"previewImage": {
"light": "<attachment rid>",
"dark": "<attachment rid>"
}
},
"stateAsJson": "<state as json>",
"charts": [
{
"rid": "<viz id>",
"version": 1,
"overlays": {}
}
],
"layout": {
"type": "v1",
"v1": {
"rootPanel": {
"type": "viz",
"viz": {
"type": "v1",
"v1": {
"id": "<panel id>",
"vizId": "<viz id>",
"hideLegend": true,
"hideLabel": true
}
}
}
}
},
"content": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
},
"contentV2": {
"type": "workbook",
"workbook": {
"channelVariables": {
"<key>": {
"displayName": "<display name>",
"variableName": "<channel variable name>",
"computeSpec": {
"type": "v1",
"v1": "<compute spec v1>"
},
"computeSpecV2": {
"computeNode": {
"type": "enum",
"enum": {
"type": "aggregate",
"aggregate": {
"function": "MIN"
}
}
},
"context": {
"variables": {
"<key>": {
"type": "variable",
"variable": "<variable name>"
}
}
},
"computeExpression": {
"type": "v1",
"v1": {
"type": "python",
"python": {
"expression": "<expression>",
"inputMap": {
"<key>": {
"value": {
"type": "variable",
"variable": "<channel variable name>"
},
"dataType": "NUMERIC_SERIES"
}
},
"nominalComputePythonVersion": "<nominal compute python version>"
}
}
}
}
}
},
"inputs": {
"type": "v1",
"v1": {
"inputs": [
{
"id": "<id>",
"label": "<label>",
"value": {
"type": "tag",
"tag": {
"key": {
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
},
"values": [
{
"type": "literal",
"literal": {
"id": "<id>",
"value": "<value>"
}
}
]
}
}
}
]
}
},
"charts": {
"<key>": {
"type": "boundary",
"boundary": {
"type": "v1",
"v1": {
"title": "<title>",
"type": {
"type": "source",
"source": {}
},
"fillColor": "<hex color>"
}
}
}
},
"settings": {
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
},
"runSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"assetSettings": {
"<key>": {
"offset": {
"duration": 1,
"unit": "DAYS"
},
"dataScopeOffsets": {
"<key>": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
},
"timeSettings": {
"type": "v1",
"v1": {
"timeRangeType": "ABSOLUTE",
"globalTimeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"isGlobalTime": true,
"tabTimeRanges": {
"<key>": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
}
},
"relativeTimestampFormat": {
"type": "inherit",
"inherit": {}
}
}
},
"offsets": {
"type": "v1",
"v1": {
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"inputs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
},
"runs": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"assets": {
"<key>": {
"offset": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
},
"dataSources": {
"<key>": {
"type": "custom",
"custom": {
"duration": 1,
"unit": "DAYS"
}
}
}
}
}
}
}
}
}
}
},
"defaultStalenessConfiguration": {
"threshold": {
"seconds": 1,
"nanos": 1
},
"connectStalePoints": true
},
"fillStrategy": {
"type": "forwardFill",
"forwardFill": {
"duration": 1,
"unit": "DAYS"
}
},
"alignmentStrategy": {
"type": "driverSeries",
"driverSeries": {}
},
"statsPanelScope": {
"type": "selectedTab",
"selectedTab": {}
}
},
"dataScopeInputs": {
"type": "v1",
"v1": {
"inputs": {
"<key>": {
"name": "<workbook data scope input name>",
"label": "<label>",
"value": {
"type": "asset",
"asset": {
"assetRid": "<asset rid>"
}
},
"colorMode": {
"type": "byChannel",
"byChannel": {}
},
"alignment": {
"type": "run",
"run": {
"type": "intervalStart",
"intervalStart": {}
}
},
"filters": [
{
"type": "tag",
"tag": {
"id": "<id>",
"key": {
"type": "literal",
"literal": "<literal>"
},
"operator": "IN",
"values": [
{
"type": "literal",
"literal": "<literal>"
}
]
}
}
]
}
}
}
},
"timeRangeInputs": {
"<key>": {
"label": "<label>",
"timeRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE"
}
},
"timeRanges": {
"<key>": {
"type": "timeRangeV1",
"timeRangeV1": {
"label": "<label>",
"time": {
"absoluteRange": {
"start": {
"seconds": 1,
"nanos": 1
},
"end": {
"seconds": 1,
"nanos": 1
}
},
"timeRangeType": "ABSOLUTE",
"t0": {
"seconds": 1,
"nanos": 1
}
}
}
}
},
"reportContent": "<report content>",
"version": "<version>"
}
},
"eventRefs": [
{
"eventUuid": "<event uuid>",
"rid": "<event rid>"
}
],
"checkAlertRefs": [
{
"checkAlertRid": "<check alert rid>"
}
]
}
Get snapshot history#
POST /scout/v2/notebook/snapshot-history
Retrieves the snapshot history for a given workbook. These are sorted in reverse chronological order. Results are limited by page size.
Body
ridstring (RID) requiredThe RID of the workbook to get snapshots for.
pageSizeintegerDefaults to 100. Will throw if larger than 1000.
nextPageTokenstring
Response
snapshotsarray ofSnapshotSummary
Fields of
SnapshotSummaryridstring (RID)
notebookRidstring (RID)
authorRidstring (RID)
createdAtstring (date-time)
snapshotMessagestringDescribes what the save changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
nextPageTokenstring
Request
curl -X POST "https://api.gov.nominal.io/api/scout/v2/notebook/snapshot-history" \
-H "Authorization: Bearer <api key>" \
-H "Content-Type: application/json" \
--data '{
"rid": "<notebook rid>"
}'
import requests
response = requests.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/snapshot-history",
headers={"Authorization": "Bearer <api key>"},
json={"rid": "<notebook rid>"},
)
response.raise_for_status()
print(response.json())
import httpx
response = httpx.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/snapshot-history",
headers={"Authorization": "Bearer <api key>"},
json={"rid": "<notebook rid>"},
)
response.raise_for_status()
print(response.json())
import asyncio
import aiohttp
async def main() -> None:
async with aiohttp.ClientSession() as session:
async with session.post(
"https://api.gov.nominal.io/api/scout/v2/notebook/snapshot-history",
headers={"Authorization": "Bearer <api key>"},
json={"rid": "<notebook rid>"},
) as response:
response.raise_for_status()
print(await response.json())
asyncio.run(main())
Response: 200
{
"snapshots": [
{
"rid": "<snapshot rid>",
"notebookRid": "<notebook rid>",
"authorRid": "<user rid>",
"createdAt": "2026-01-01T00:00:00Z",
"snapshotMessage": "<snapshot message>"
}
],
"nextPageToken": "<token>"
}
Errors#
Errors shows how these errors are sent.
Each error’s errorName is Scout: followed by its name below.
Status |
Name |
Notes |
|---|---|---|
400 |
|
|
400 |
|
|
400 |
|
|
400 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
404 |
|
|
409 |
|
|
409 |
|
|
409 |
|
|
500 |
|
|
500 |
|
|
500 |
|
Types#
Abs#
Computes the absolute value of each point in the series.
xNumericSeriesrequiredInput numeric series.
AbsoluteThreshold#
Threshold defined as a real number corresponding the unit of a series.
valueDoubleConstantrequiredAllowed spread, in the series’ own unit.
AbsoluteTimestampSeries#
Replaces values in a series with the absolute timestamps.
Acos#
Computes the arccosine of each value, returning radians.
xNumericSeriesrequiredInput numeric series (values in [-1, 1]).
Add#
Adds two numeric series pointwise.
leftNumericSeriesrequiredLeft-hand operand.
rightNumericSeriesrequiredRight-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.
inputEnumSeriesrequired
functionEnumAggregationFunctionrequired
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.
inputNumericSeriesrequired
functionNumericAggregationFunctionrequired
groupByTagsarray ofStringConstantTags 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.
aggregateByAllGroupingsbooleanThis 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.
interpolationConfigurationInterpolationConfigurationdeprecatedIf 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.
inputNumericSeriesrequired
rangesRangeSeriesrequired
operationNumericAggregationFunctionrequired deprecatedDeprecated: 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.
rollingTimeRollingTimeAggregationBuilder
rollingPointsRollingPointsAggregationBuilder
groupByGroupByAggregationBuilder
AggregationType#
Set type to the name of one of the other fields, and set only that field.
maxMax
minMin
meanMean
standardDeviationcomparisonnotebook.api.StandardDeviation
countcomparisonnotebook.api.Count
rootMeanSquarecomparisonnotebook.api.RootMeanSquare
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.
driverSeriesDriverSeries
unionUnion
AlignmentConfiguration#
interpolationConfigurationInterpolationConfigurationrequiredThe interpolation rules to use when aligning the non-driver series.
driverSeriesAlignmentDriverSeriesrequiredThe series whose timestamps drive alignment.
AlignmentDriverSeries#
FIRST
SECOND
AllowNegativeValues#
An empty JSON object, {}.
AllTabsStatsPanelScope#
An empty JSON object, {}.
AlwaysConnectDisconnectedValues#
This option indicates that disconnected values will always be connected with a line.
An empty JSON object, {}.
AnalystLayout#
A layout for analyst backing workbooks. Panels render inline in the conversation, so entries carry no positioning — only per-panel settings, keyed by the panel’s viz id in WorkbookContent.charts.
idstring (UUID) required
panelsmap ofVizIdtoAnalystPanel
AnalystPanel#
timeRangeInputIdstring (UUID)
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.
inputDatasetrequiredThe dataset to align.
anchorDatasetAnchorrequiredSelects the timestamp each anchored portion of the input is aligned by.
referenceAnchorReferenceWhen 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.
earliestAnchorEarliestAnchorReferenceAligns 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.
leftBooleanSeriesrequired
rightBooleanSeriesrequired
api.AssetsFilter#
for an exact match, use the exactAssetRids filter
operatorSetOperatorrequired
assetsarray of string (RID)
api.EventDispositionStatus#
PENDING_REVIEW
CLOSED_IGNORED
CLOSED_REQUIRES_FURTHER_ACTION
NO_DISPOSITION
api.EventTimeFilter#
timestampTimestampConstantrequired
timestampConditionapi.EventTimeFilterConditionrequired
api.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
api.EventType#
INFO
FLAG
ERROR
SUCCESS
api.SearchEventOriginType#
WORKBOOK
TEMPLATE
API
DATA_REVIEW
PROCEDURE
ApproximateThresholdOperator#
EQUAL_TO
NOT_EQUAL_TO
ApproximateThresholdRanges#
Produces a list of ranges for which the threshold condition is satisfied.
inputNumericSeriesrequired
thresholdDoubleConstantrequired
toleranceDoubleConstantrequired
operatorApproximateThresholdOperatorrequired
persistenceWindowConfigurationPersistenceWindowConfiguration
ArithmeticSeries#
inputsmap ofLocalVariableNametoNumericSeries
expressionstring required
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults 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.
numeric1dNumeric1dArraySeries
enum1dEnum1dArraySeries
Asin#
Computes the arcsine of each value, returning radians.
xNumericSeriesrequiredInput 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.
ridStringConstantrequiredResource identifier of an asset
AssetChannel#
assetRidStringConstantrequired
dataScopeNameStringConstantrequiredUsed to disambiguate when multiple data scopes within this asset contain channels with the same name.
channelStringConstantrequired
additionalTagsmap of string toStringConstantdeprecatedDeprecated: Use additionalTagFilters
additionalTagFiltersTagFiltersTags 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.
tagsToGroupByarray of string deprecatedDeprecated: Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.
groupByTagsarray ofStringConstantTags 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.
AssetDataScopeInputValue#
An asset data scope input value.
assetRidstring (RID) required
AssetListDataScopeInputValue#
A data scope input value resolving to an explicit list of assets.
assetRidsarray of string (RID)
AssetOffset#
An offset that can be applied to an asset.
offsetworkbookcommon.api.Offset
dataSourcesmap ofDataSourceRefNametoworkbookcommon.api.Offset
AssetQueryDataScopeInputValue#
A data scope input value resolving to the assets matching a search query.
queryResourceSearchQueryrequired
AssetSettings#
offsetUserDuration
dataScopeOffsetsmap ofDataSourceRefNametoUserDuration
AssetsSearchTarget#
Search assets. Each match expands to one grouping per data scope on that asset.
queryResourceSearchQueryrequiredPredicate tree used to filter matching assets.
AssigneesFilter#
operatorSetOperatorrequired
assigneesarray of string (RID)
Atan2#
Computes the two-argument arctangent atan2(y, x) using signs to determine the quadrant.
yNumericSeriesrequiredY-coordinate series.
xNumericSeriesrequiredX-coordinate series.
Average#
A average that gives the same weight to each observation inside the time window
An empty JSON object, {}.
AxisDisplayOptions#
showTitleboolean required
axisWidthnumber
scaleTypeAxisScaleTypeThe scale type of the axis. If not specified, the default is LINEAR.
AxisDomainType#
NUMERIC
CATEGORICAL
AxisPosition#
LEFT
RIGHT
AxisRange#
startnumber
endnumber
AxisScaleType#
LINEAR
LOG
AxisThresholdGroup#
Set type to the name of one of the other fields, and set only that field.
lineThresholdsLineThresholdGroup
AxisThresholdVisualization#
axisIdstring required
visibilityboolean requiredDetermines it’s current visibility in the time series chart.
thresholdsAxisThresholdGrouprequired
BandPassConfiguration#
lowPassbandFrequencyDoubleConstantrequired
highPassbandFrequencyDoubleConstantrequired
BandStopConfiguration#
lowStopbandFrequencyDoubleConstantrequired
highStopbandFrequencyDoubleConstantrequired
BinaryArithmeticOperation#
ATAN2Calculates 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.
input1NumericSeriesrequired
input2NumericSeriesrequired
operationBinaryArithmeticOperationrequired
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults 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.
inputNumericSeriesrequiredInput numeric series (values cast to int64).
operandIntegerConstantrequiredThe value to AND with each point.
BitAndFunction#
operandinteger (int64) required
BitFlag#
The settings for a bit flag mapping. Each position should be unique. Position 0 represents the least significant bit and position 31 represents the most significant bit.
positioninteger required
labelstring required
BitFlagMapCellConfig#
visualisationBitFlagMapVisualisation
BitFlagMapRawVisualisation#
The settings for a raw bit flag map visualisation.
highColorstringThe color when any bit is high
lowColorstringThe color when all bits are low
bitFlagsarray ofBitFlag
BitFlagMapVisualisation#
Set type to the name of one of the other fields, and set only that field.
BitOperationFunction#
Set type to the name of one of the other fields, and set only that field.
andBitAndFunction
orBitOrFunction
xorBitXorFunction
shiftRightBitShiftRightFunction
shiftLeftBitShiftLeftFunction
bitTestBitTestFunction
BitOperationSeries#
Casts input series values to long before applying the bitwise operation.
inputNumericSeriesrequired
functionBitOperationFunctionrequired
BitOr#
Applies a bitwise OR between each value (cast to int64) and the operand.
inputNumericSeriesrequiredInput numeric series (values cast to int64).
operandIntegerConstantrequiredThe value to OR with each point.
BitOrFunction#
operandinteger (int64) required
BitShiftLeft#
Left-shifts the bits in each value (cast to int64) by the given number of positions.
inputNumericSeriesrequiredInput numeric series (values cast to int64).
operandIntegerConstantrequiredNumber of positions to shift left.
BitShiftLeftFunction#
Shifts the bits in each value left according to the given operand.
operandinteger required
BitShiftRight#
Right-shifts the bits in each value (cast to int64) by the given number of positions.
inputNumericSeriesrequiredInput numeric series (values cast to int64).
operandIntegerConstantrequiredNumber of positions to shift right.
BitShiftRightFunction#
Right shifts the bits in each value right according to the given operand.
operandinteger required
BitTest#
Returns the bit at the specified index for each value (cast to int64), where index 0 is the least significant bit.
inputNumericSeriesrequiredInput numeric series (values cast to int64).
indexIntegerConstantrequiredZero-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.
indexinteger required
BitXor#
Applies a bitwise XOR between each value (cast to int64) and the operand.
inputNumericSeriesrequiredInput numeric series (values cast to int64).
operandIntegerConstantrequiredThe value to XOR with each point.
BitXorFunction#
operandinteger (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.
inputBooleanSeriesrequiredThe condition whose true regions become ranges.
minPointsIntegerConstantMinimum number of matching points. Defaults to 1.
minDurationcompute.api.DurationMinimum matching duration. Defaults to one nanosecond.
rangeStartRangeStartSelects 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.
greaterThanGreaterThanSeries
lessThanLessThanSeries
equalToEqualToSeries
notEqualToNotEqualToSeries
greaterThanOrEqualToGreaterThanOrEqualToSeries
lessThanOrEqualToLessThanOrEqualToSeries
andAndSeries
orOrSeries
BoundaryType#
The boundary type, with type-specific configuration.
Set type to the name of one of the other fields, and set only that field.
sourceSourceBoundary
sinkSinkBoundary
BoundaryVizDefinition#
Set type to the name of one of the other fields, and set only that field.
BoundaryVizDefinitionV1#
titlestringThe label displayed on the boundary.
typeBoundaryTyperequiredWhether the boundary is a source or a sink, with type-specific configuration.
fillColorstringFill color of the boundary. A pipe coming out of a source boundary inherits this color.
BucketDisplayConfig#
Set type to the name of one of the other fields, and set only that field.
defaultBucketDisplayConfigDefault
singleStatBucketDisplayConfigSingleStat
BucketDisplayConfigDefault#
Default bucket display configuration, which renders a shaded min/max region per bucket with a stair-step line from first point through mean to last point.
An empty JSON object, {}.
BucketDisplayConfigSingleStat#
statBucketDisplayStatrequired
BucketDisplayStat#
Set type to the name of one of the other fields, and set only that field.
meanNoConfigDisplayStat
minNoConfigDisplayStat
maxNoConfigDisplayStat
countNoConfigDisplayStat
sumNoConfigDisplayStat
percentileBucketDisplayStatPercentile
lttbNoConfigDisplayStat
BucketDisplayStatPercentile#
valuestring requiredPercentile value as a string (e.g. “0.95”) to avoid floating-point precision issues. Must be between 0 and 1.
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.
mathMathConstant
physicalPhysicalConstant
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).
independentVariableCurveFitVariablerequiredThe
xaxis the target is fit against — either relative sample time or another series.
BurstDiscVizDefinition#
Set type to the name of one of the other fields, and set only that field.
BurstDiscVizDefinitionV1#
titlestringThe label displayed on the burst disc.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
ByChannelColorMode#
Every trace of the same channel shares that channel’s own color across all of the input’s sources.
An empty JSON object, {}.
BySeriesColorMode#
Every individual trace (channel × source) gets its own color from the palette rotation. This is the original, default rendering.
An empty JSON object, {}.
BySourceColorMode#
Every trace from the same asset/run shares one color across all channels and panels.
An empty JSON object, {}.
CanvasConnection#
Set type to the name of one of the other fields, and set only that field.
CanvasConnectionRouting#
A manually edited route. When absent, clients calculate an automatic route.
Set type to the name of one of the other fields, and set only that field.
orthogonalOrthogonalConnectionRouting
CanvasConnectionStrokeStyle#
Visual stroke style for a canvas connection.
Set type to the name of one of the other fields, and set only that field.
solidSolidStrokeStyle
dashDashStrokeStyle
CanvasConnectionStyle#
User-configurable visual styling for a canvas connection.
strokeStyleCanvasConnectionStrokeStyleDefaults to solid when absent.
lineColorstringExplicit color override for the connection line. When absent, clients use the default connection color, or the source object’s boundary color when one applies.
lineWidthintegerStroke width of the connection line, in logical canvas pixels, so it scales with canvas zoom. Must be positive. Absent means the client’s default width.
hideArrowbooleanDraws the connection as a plain line with no arrowhead. When omitted, treat as false.
CanvasConnectionV1#
A connection between two canvas objects. Drawn as a one-way arrow from start to end unless style.hideArrow is true; swap those endpoints to reverse it.
startCanvasEndpointrequiredThe source endpoint.
endCanvasEndpointrequiredThe target endpoint.
styleCanvasConnectionStyleVisual styling for the connection. If absent, clients use defaults.
routingCanvasConnectionRoutingManual routing. When absent, clients calculate an automatic route.
CanvasEndpoint#
An endpoint of a canvas connection, identifying an attachment point (anchor) on a canvas object.
objectIdstring (UUID) requiredThe canvas object containing the referenced anchor.
anchorIdstring requiredIdentifier of the attachment point on the canvas object. Kept as a string so clients can add custom anchors later without an API change. The initial well-known values are left, top, bottom, and right.
CanvasLayout#
A layout of elements freely placed on a canvas. CanvasPanel entries represent visualization nodes, and connection entries represent relationships between nodes.
idstring (UUID) required
objectsmap of string toCanvasObject
CanvasObject#
Set type to the name of one of the other fields, and set only that field.
panelCanvasPanel
connectionCanvasConnection
CanvasPanel#
A panel node or HMI widget placed on a canvas. Other CanvasObject variants may represent different node types and have their own behavior.
rectCanvasRectrequired
hideLegendboolean deprecatedDeprecated: Deprecated.
CanvasRect#
xnumber required
ynumber required
widthnumber required
heightnumber required
CartesianChartDefinition#
Set type to the name of one of the other fields, and set only that field.
CartesianChartDefinitionV1#
plotsarray ofCartesianPlot
eventsarray ofEventdeprecatedDeprecated: Please use the workbook’s eventRefs field instead.
comparisonRunGroupsarray ofComparisonRunGroup
titlestring
valueAxesarray ofValueAxis
decimationScatterDecimationThe strategy for bucketing points together.
connectPointsbooleanIf toggled true, will visually connect the points of the series
floatingLegendsConfigFloatingLegendConfigConfig for showing a floating legend in the chart. If undefined, defaults to hiding.
CartesianPlot#
xVariableNamestring required
yVariableNamestring required
secondaryVariablesarray ofSecondaryVariable
enabledboolean
xAxisIdstring required
yAxisIdstring required
colorstring requiredDefault color for points
colorByColorByConfiguration for dynamic coloring. Overrides color if specified.
CategoricalEqualityRangesV2#
Produces ranges where all categorical inputs are equal or are not all equal.
inputsarray ofEnumSeriesThe series compared against each other. At least two are required.
minPointsIntegerConstantMinimum number of matching points. Defaults to 1.
minDurationcompute.api.DurationMinimum matching duration. Defaults to one nanosecond.
rangeStartRangeStartSelects whether the output begins at the first match or after persistence is satisfied.
equalityOperatorEqualityOperatorrequired
CategoricalOnChangeRangesV2#
Produces a zero-duration range whenever a categorical input changes value.
inputEnumSeriesrequired
CategoricalStaleRangesV2#
Produces ranges where a categorical input has no data for at least a duration.
inputEnumSeriesrequired
thresholdcompute.api.DurationrequiredMinimum gap without data that produces an output range.
CategoryFilterRangesV2#
Produces ranges where a categorical input matches a set of values.
inputEnumSeriesrequired
valuesarray ofStringConstantCategory labels matched against each input point.
minPointsIntegerConstantMinimum number of matching points. Defaults to 1.
minDurationcompute.api.DurationMinimum matching duration. Defaults to one nanosecond.
rangeStartRangeStartSelects whether the output begins at the first match or after persistence is satisfied.
operatorEnumFilterOperatorrequired
CenteredInstrumentLayout#
A single row of text centered in the bubble. There is never a divider.
textstring
ChannelLocator#
dataSourceRefstring required
channelstring required
tagsmap ofTagNameto string
assetstring
runstring
inputIdstring
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.
dataSourceDataSourceChannel
assetAssetChannel
runRunChannel
ChannelVariableComputeExpression#
Set type to the name of one of the other fields, and set only that field.
ChannelVariableComputeExpressionInput#
valueChannelVariableComputeExpressionInputValuerequired
dataTypeChannelVariableComputeExpressionInputDataTyperequired
ChannelVariableComputeExpressionInputDataType#
NUMERIC_SERIES
ENUM_SERIES
RANGE_SERIES
BOOLEAN_SERIES
ChannelVariableComputeExpressionInputValue#
Set type to the name of one of the other fields, and set only that field.
variablestring
ChannelVariableComputeExpressionV1#
Set type to the name of one of the other fields, and set only that field.
ChannelVariableComputeExpressionV1Python#
expressionstring requiredThe python code string representing the compute for this variable. Can be up to 25000 characters long.
inputMapmap of string toChannelVariableComputeExpressionInputA map of inputs by the name they’re referenced by in the expression. Inputs can be other channel variables.
nominalComputePythonVersionstringThe Nominal compute python version identifier which the expression was written in. Used to determine if any migrations are needed to later versions of the python compute syntax. If not present, assumes the oldest version.
channelvariables.api.ChannelVariable#
displayNamestring
variableNamestring required
computeSpecComputeSpecrequired
computeSpecV2channelvariables.api.ComputeNodeWithContextoptional for backcompatibility. If empty, fall back to computeSpec.
channelvariables.api.ComputeNodeWithContext#
computeNodeComputeNoderequiredGraph representation of the compute for a channel variable.
contextWorkbookContextrequired
computeExpressionChannelVariableComputeExpressionCode representation of the compute for a channel variable. Should be equivalent to the computeNode.
channelvariables.api.VariableLocator#
Set type to the name of one of the other fields, and set only that field.
variablestring
seriesChannelLocator
chartdefinition.api.Threshold#
valuenumber requiredThe minimum value a number must be to trigger the threshold color. If used in a staleness cell, this value is in milliseconds.
colorstring requiredThe color to apply to the cell when the threshold is active.
labelstringA name for this threshold to display while editing.
latchThresholdLatchOptions for pinning an indicator that data was within the threshold range while streaming.
chartdefinition.api.VizDefinition#
Set type to the name of one of the other fields, and set only that field.
boundaryBoundaryVizDefinition
burstDiscBurstDiscVizDefinition
buttonButtonVizDefinition
cartesianCartesianChartDefinition
checklistChecklistChartDefinition
endNodeEndNodeVizDefinition
frequencyFrequencyChartDefinition
geoGeoVizDefinition
geo3dGeo3dDefinition
heatExchangerHeatExchangerVizDefinition
histogramHistogramChartDefinition
imageImageVizDefinition
instrumentInstrumentVizDefinition
logLogPanelDefinition
markdownMarkdownPanelDefinition
numberInputNumberInputVizDefinition
orificeOrificeVizDefinition
plotlyPlotlyPanelDefinition
procedureProcedureVizDefinition
pumpPumpVizDefinition
regulatorRegulatorVizDefinition
shapeShapeVizDefinition
tankTankVizDefinition
thrustChamberThrustChamberVizDefinition
timeSeriesTimeSeriesChartDefinition
timeSeriesTableTimeSeriesTablePanelDefinition
valueTableValueTableDefinition
valveValveVizDefinition
videoVideoVizDefinition
ChartPanel#
Set type to the name of one of the other fields, and set only that field.
v1ChartPanelV1
ChartPanelV1#
idstring required
chartRidVersionedVizIdrequired
hideLegendboolean required deprecatedDeprecated: No longer used.
hideLabelbooleanWhen omitted, treat as false.
ChartWithOverlays#
ridstring required
versioninteger required
overlaysany JSON value required
CheckAlertReference#
checkAlertRidstring (RID) required
ChecklistChartDefinition#
Set type to the name of one of the other fields, and set only that field.
ChecklistChartDefinitionV1#
selectedChecklistRidsarray of string
titlestring
CheckValve#
A check valve, rendered with the check valve symbol. Static: it has no feedback or actions, and rotationDegrees sets the flow direction.
An empty JSON object, {}.
ColorBy#
Set type to the name of one of the other fields, and set only that field.
secondaryVariablestringColor by a secondary variable configured on the trace.
ColorByVariableConfiguration#
locatorcomparisonnotebook.api.VariableLocatorrequired
aggregationTypeAggregationTyperequired
lowerBoundnumber required
upperBoundnumber required
ColorScheme#
TURBO
MAGMA
VIRIDIS
PLASMA
INFERNO
ColorStyle#
Set type to the name of one of the other fields, and set only that field.
mappedmap of string to stringDefines specific colors for specific values
singlestringA single color to apply to the whole plot
ColumnTableState#
A union so a later shape arrives as a new arm rather than a retype of ValueTableLayoutColumn.columnTableState, which would break the wire once the field holds data. Same pattern as ValueTableDefinition.
Set type to the name of one of the other fields, and set only that field.
ColumnTableStateV1#
statemap of string to any JSON valueClient-owned table state payload: a JSON object of sort, column order, width, visibility, and filters. Unmodelled so the client grid library’s own shapes never freeze into this API.
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.
inputsarray ofDatasetThe 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.
inputsmap of string toSeriesInput series keyed by struct field name.
interpolationConfigurationInterpolationConfigurationdeprecatedOptional interpolation rules used when aligning input series before combining them. Deprecated: Setting interpolation on this node is deprecated.
CommandConfirmation#
titlestring required
descriptionstring
confirmLabelstringLabel for the confirm action. Clients provide a default when absent.
CommandTarget#
A channel that receives a value the user enters.
variableNamestring requiredChannel variable naming the commandable series, resolved by the document hosting this visualization. Must resolve to a physical series (VariableLocator.series).
CommandValue#
A command payload. The variant must match the target channel’s data type: floatValue for DOUBLE channels, intValue for INT channels, and enumValue for STRING channels.
Set type to the name of one of the other fields, and set only that field.
floatValuenumber
intValuestring
enumValuestring
comparisonnotebook.api.ChannelVariable#
displayNamestring
variableNamestring required
valuecomparisonnotebook.api.ComputeNodeWithContextrequired
dataScopeComparisonWorkbookDataScoperequired
comparisonnotebook.api.ComputeNodeWithContext#
computeNodeComputeNoderequiredGraph representation of the compute for a variable.
contextComparisonWorkbookContextrequired
supplementalContextSupplementalComparisonWorkbookContextrequired deprecatedDeprecated: migrated into visualization definitions.
computeExpressionChannelVariableComputeExpressionCode representation of the compute for a variable. Should be equivalent to the computeNode.
comparisonnotebook.api.Count#
An empty JSON object, {}.
comparisonnotebook.api.RootMeanSquare#
An empty JSON object, {}.
comparisonnotebook.api.StandardDeviation#
An empty JSON object, {}.
comparisonnotebook.api.VariableLocator#
Set type to the name of one of the other fields, and set only that field.
comparisonWorkbookVariablestring
seriesChannelLocator
comparisonnotebook.api.VizDefinition#
Set type to the name of one of the other fields, and set only that field.
tableComparisonTableDefinition
scatterComparisonScatterPlotDefinition
timeSeriesComparisonTimeSeriesPlotDefinition
ComparisonRun#
runRidstring (RID) required
enabledboolean required
offsetOverridecomparisonrun.api.Offset
comparisonrun.api.Offset#
valueinteger (int64) required
unitTimeUnitrequired
ComparisonRunGroup#
uuidstring (UUID) required
namestring required
offsetcomparisonrun.api.Offsetrequired
offsetAnchorOffsetAnchorrequired
runsarray ofComparisonRun
colorstring
ComparisonScatterPlotColoringOption#
Set type to the name of one of the other fields, and set only that field.
byVariableColorByVariableConfiguration
ComparisonScatterPlotDefinition#
Set type to the name of one of the other fields, and set only that field.
ComparisonScatterPlotDefinitionV1#
an n x n array of scatter plots
titlestring
rangeAggregationRangeAggregationDefinition
variablesarray ofComparisonScatterPlotVariable
axesarray ofScatterPlotValueAxes
visualizationOptionsComparisonScatterPlotVizOptionsoptional for backcompatibility.
ComparisonScatterPlotVariable#
xAxisIdstring requiredthe axisId when the variable is used as the x variable.
yAxisIdstring requiredthe axisId when the variable is used as the y variable.
locatorcomparisonnotebook.api.VariableLocatorrequired
aggregationTypeAggregationTyperequired
ComparisonScatterPlotVizOptions#
coloringComparisonScatterPlotColoringOptionrequired
ComparisonTableColumn#
titlestring
locatorcomparisonnotebook.api.VariableLocatorrequired
visualizationOptionsComparisonTableColumnVisualizationOptionsrequired
aggregationTypeAggregationTypeoptional for backcompatibility.
ComparisonTableColumnOptions#
AXIS
BARS
ComparisonTableColumnVisualizationOptions#
formatComparisonTableColumnOptionsrequired
ComparisonTableDefinition#
Set type to the name of one of the other fields, and set only that field.
ComparisonTableDefinitionV1#
titlestring
rangeAggregationsarray of string
visualizationOptionsComparisonTableVisualizationOptionsrequired
columnsarray ofComparisonTableColumn
ComparisonTableDefinitionV2#
titlestring
rangeAggregationRangeAggregationDefinition
columnsarray ofComparisonTableColumn
ComparisonTableVisualizationOptions#
aggregationColorsmap ofVariableNameto string
ComparisonTimeSeriesDisplayOption#
The display option for the time series plot. A CAROUSEL display option means that each plot grouping is displayed one at a time, while a MULTIROW display option means that multiple plot groupings are displayed simultaneously on different rows.
CAROUSEL
MULTIROW
ComparisonTimeSeriesGroupBy#
The group by option for the time series plot. A RANGE group by option means that all channels on the same time range are plotted together, while a VARIABLE group by option means that all time ranges for the same channel are plotted together.
RANGE
VARIABLE
ComparisonTimeSeriesPlotDefinition#
Set type to the name of one of the other fields, and set only that field.
ComparisonTimeSeriesPlotDefinitionV1#
a cross-range time series plot with configurable range and channel groupings
titlestring
rangeAggregationRangeAggregationDefinition
variablesarray ofComparisonTimeSeriesPlotVariable
valueAxesarray ofValueAxisa list of value ranges, where each variable is assigned to a y-axis
groupByComparisonTimeSeriesGroupByrequired
displayOptionComparisonTimeSeriesDisplayOptionrequired
ComparisonTimeSeriesPlotVariable#
yAxisIdstring requiredthe axisId when the variable is used as the y variable.
locatorcomparisonnotebook.api.VariableLocatorrequired
ComparisonWorkbookContent#
channelVariablesmap ofVariableNametocomparisonnotebook.api.ChannelVariablerequired
chartsmap ofVizIdtocomparisonnotebook.api.VizDefinitionrequiredvisualizations. Charts is a legacy term.
ComparisonWorkbookContext#
variablesmap ofVariableNametocomparisonnotebook.api.VariableLocator
ComparisonWorkbookDataScope#
Set type to the name of one of the other fields, and set only that field.
runsarray of string (RID)
assetsarray of string (RID)
compute.api.ComputeNodeWithContext#
seriesNodeComputeNoderequired
contextContextrequired
compute.api.Count#
The number of points inside the time window.
An empty JSON object, {}.
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.
referenceReference
nanosecondsDurationNanoseconds
millisecondsDurationMilliseconds
secondsDurationSeconds
minutesDurationMinutes
hoursDurationHours
daysDurationDays
addDurationAdd
subtractDurationSubtract
negateDurationNegate
compute.api.RootMeanSquare#
The root mean square of points inside the time window.
An empty JSON object, {}.
compute.api.StandardDeviation#
The standard deviation of points inside the time window.
An empty JSON object, {}.
compute.api.Threshold#
Set type to the name of one of the other fields, and set only that field.
absoluteAbsoluteThreshold
percentagePercentageThreshold
ComputeEventQuery#
Set type to the name of one of the other fields, and set only that field.
searchTextStringConstant
afterTimestampConstantFilters to events after this timestamp, exclusive. This includes events that start before, but end after this time.
beforeTimestampConstantFilters to events before this timestamp, exclusive. This includes events that start before, but end after this time.
advancedTimeFilterapi.EventTimeFilter
assetStringConstant
templateStringConstant
workbookStringConstant
dataReviewStringConstant
originTypeapi.SearchEventOriginType
dataReviewCheckStringConstant
dispositionStatusapi.EventDispositionStatus
priorityStringConstant
assigneeStringConstant
eventTypeapi.EventType
createdByStringConstant
labelStringConstant
propertyrids.api.Property
andarray ofComputeEventQuery
orarray ofComputeEventQuery
notComputeEventQuery
workspaceStringConstant
procedureStringConstant
procedureExecutionStringConstant
stepIdStringConstant
ComputeNode#
Set type to the name of one of the other fields, and set only that field.
enumEnumSeries
numericNumericSeries
logLogSeries
rangesRangeSeries
arrayArraySeries
structStructSeries
curveFitCurveFitDeprecated: use
curveV2(CurveFitV2) instead.curveV2CurveFitV2
videoReference
rawReferencedeprecatedDeprecated: wrap raw references in a typed compute node.
ComputeSpec#
Set type to the name of one of the other fields, and set only that field.
v1string
ConnectingLineConfiguration#
How to draw connecting lines between points
styleConnectingLineStylerequired
alwaysConnectedbooleanWhen true, points connect regardless of the staleness threshold, as if the threshold were infinite. By default, gaps wider than the threshold are left unconnected.
ConnectingLineStyle#
The shape of the connecting line between points
Set type to the name of one of the other fields, and set only that field.
noneNoConnectingLine
forwardFillForwardFillConnectingLine
linearInterpolationLinearInterpolationConnectingLine
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.
doubleDoubleConstantCreate from a floating-point constant.
ContainsSeries#
Maps each log line to 1.0 when operator matches it and 0.0 otherwise.
inputLogSeriesrequired
operatorLogFilterOperatorrequired
Context#
variablesmap ofVariableNametoVariableValue
functionVariablesmap ofFunctionReferencetoFunctionVariablesdeprecatedDeprecated: This field is deprecated and will be removed in a future version.
datasetReferencesmap ofDatasetReferenceNametoDatasetNamed datasets looked up by
DatasetReferencenodes in the compute tree.defaultFillStrategyFillStrategyDefault 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).
defaultAlignmentStrategyAlignmentDefault 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).
applyDataScopeOffsetsbooleanWhen 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.
resolveAssetsThroughDatasetsbooleanWhen true,
Dataset.asset, the asset-typed sources ofDataset.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 reservedDATA_SCOPEtag, so callers must filter and group on those keys; the definition’s own time shifts apply regardless ofapplyDataScopeOffsets; 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).
xNumericSeriesrequiredInput numeric series (radians).
CumulativeSumSeries#
Calculates the running total of the series values.
inputNumericSeriesrequired
startTimestampTimestampConstantrequired
CurveFit#
Deprecated: use CurveFitV2 instead.
curveFitPlotTypeCurveFitPlotTyperequired
curveFitDetailsCurveFitDetailsrequired
curveFitOptionsCurveFitOptionsrequired
CurveFitBoundsConfiguration#
minDoubleConstant
maxDoubleConstant
CurveFitDetails#
Set type to the name of one of the other fields, and set only that field.
exponentialExponentialCurve
logarithmicLogarithmicCurve
polynomialPolynomialCurve
powerPowerCurve
CurveFitOptions#
startTimeTimestampConstantrequired
endTimeTimestampConstantrequired
CurveFitPlotType#
Set type to the name of one of the other fields, and set only that field.
timeSeriesTimeSeriesCurveFit
scatterScatterCurveFit
CurveFitRange#
startTimeTimestampConstantrequired
endTimeTimestampConstantrequired
CurveFitSeriesVariable#
seriesNumericSeriesrequired
boundsConfigCurveFitBoundsConfigurationOptional 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.
numericCurveFitSeriesVariable
CurveFitTimeVariable#
timeUnitTimeUnitThe unit of the time variable in the formula expression. If not specified, the time unit is assumed to be seconds.
CurveFitV2#
targetCurveFitTargetrequiredTarget to fit the equation against.
fitRangeCurveFitRangerequiredThe range to fit the curve over
curveToFitCurveFitV2DetailsrequiredThe 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.
exponentialBuiltInCurveFit
logarithmicBuiltInCurveFit
polynomialPolynomialCurveFit
powerBuiltInCurveFit
customCustomCurveFit
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.
numericCurveFitSeriesVariable
timeCurveFitTimeVariable
CustomCurveFit#
formulaStringConstantrequiredA mathematical expression in terms of variable and parameter names, e.g.
a * x + b * sin(x). Variable names must match keys in thevariablesmap; parameter names must match keys in theparametersmap.variablesmap ofLocalVariableNametoCurveFitVariableNamed input series referenced in the formula. Keys must match the variable names used in the formula expression.
parametersmap of string toDoubleConstantNamed 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
yof the enclosing curve fit (the timeSeries series values, or the scatteryseries).
DashStrokeStyle#
An empty JSON object, {}.
DataRequestMode#
How data is requested from the backend. Currently supports “full rate” and “bucketed”. Full rate means every point is its own timestamp. Bucketed means the window in question is divided into (say, 1000) buckets and only the aggregates within each bucket are returned.
Set type to the name of one of the other fields, and set only that field.
fullRateNoConfigDataRequestMode
bucketedNoConfigDataRequestMode
DataReviewChecksFilter#
dataReviewChecksarray of string (RID)
DataReviewsFilter#
dataReviewsarray of string (RID)
DataScopeInputFilter#
A filter applied to a data scope input.
Set type to the name of one of the other fields, and set only that field.
tagTagDataScopeInputFilter
eventEventDataScopeInputFilter
DataScopeInputValue#
Set type to the name of one of the other fields, and set only that field.
assetAssetDataScopeInputValue
runRunDataScopeInputValue
assetListAssetListDataScopeInputValue
runListRunListDataScopeInputValue
assetQueryAssetQueryDataScopeInputValue
runQueryRunQueryDataScopeInputValue
datasetListDatasetListDataScopeInputValue
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.
assetAssetSingle asset. Expands to one grouping per data scope on the asset. Groupings are tagged by
assetRidanddataScopeso callers can safely compose multiple assets withcombine.runRunSingle 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
runRidanddataScope; asset-typed groupings additionally carryassetRidso callers can safely compose multiple runs withcombine.savedSavedDataset
searchSearchDataset
combineCombinedDataset
tagTaggedDataset
filterFilteredDataset
timeShiftTimeShiftedDataset
alignByAnchorAnchorAlignedDataset
withSeriesWithSeriesDataset
dropSeriesDropSeriesDataset
referenceDatasetReference
withDimensionsDimensionsDataset
DatasetAnchor#
Set type to the name of one of the other fields, and set only that field.
runIntervalAnchorUses the start or end of each run as its anchor. The input dataset must resolve exclusively to run-backed branches.
DatasetListDataScopeInputValue#
A data scope input value resolving to an explicit list of datasets, without an intermediating run or asset.
datasetRidsarray of string (RID)
DatasetReference#
References a named dataset in Context.datasetReferences.
nameStringConstantrequiredName of the dataset reference to resolve from the context.
DataSourceChannel#
dataSourceRidStringConstantrequired
channelStringConstantrequired
tagsmap of string toStringConstantdeprecatedDeprecated: Use tagFilters
tagFiltersTagFiltersTags 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.
tagsToGroupByarray of string deprecatedDeprecated: Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.
groupByTagsarray ofStringConstantTags 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.
DecimalPlaces#
Set type to the name of one of the other fields, and set only that field.
fixedFixedDecimalPlaces
maxMaxDecimalPlaces
DefaultFill#
colorstring required
DerivativeSeries#
Calculates the rate of change between subsequent points.
inputNumericSeriesrequired
timeUnitTimeUnitTime unit used to calculate the derivative. Defaults to seconds if not specified.
negativeValuesConfigurationNegativeValueConfigurationDefines the strategy for handling negative output values. Defaults to allowNegativeValues if not specified.
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.
functionFunctionDerivedSeries
DetrendType#
The type of detrending to apply to the signal. When absent, will default to the detrend behavior for that function.
CONSTANTRemoves the mean value of the signal.
LINEARRemoves a best-fit linear trend from the signal.
NO_OPDoes not perform any detrending.
Dimension#
A value derived per asset or run, injected as a tag.
tagKeyStringConstantThe tag key to inject the value under. Defaults to the key derived by
value.valueDimensionValuerequiredThe 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.
inputDatasetrequiredThe underlying dataset to tag.
dimensionsarray ofDimensionThe 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 withEVENT_LABEL_PREFIX:, or start withNOMINAL_.
DimensionValue#
Set type to the name of one of the other fields, and set only that field.
stringPropertyStringPropertyDimensionThe value of a string property on the asset or run.
identityIdentityDimensionThe value of an asset’s primary key under one of its types.
DisconnectedValueVisualization#
Set type to the name of one of the other fields, and set only that field.
alwaysConnectAlwaysConnectDisconnectedValues
neverNeverConnectDisconnectedValues
thresholdThresholdDisconnectedValues
Divide#
Divides left by right pointwise.
leftNumericSeriesrequiredNumerator.
rightNumericSeriesrequiredDenominator.
DocumentLayout#
A layout of a document with its text editor raw state JSON and node objects such as panels metadata.
idstring (UUID) required
textEditorJsonstring required
nodesmap of string toDocumentNodeObject
DocumentNodeObject#
Set type to the name of one of the other fields, and set only that field.
panelDocumentPanel
DocumentPanel#
dimensionNodeDimensionrequired
timeRangeInputIdstring (UUID) deprecatedDeprecated: Deprecated, use timeRange instead.
timeRangePanelTimeRange
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.
literalnumberCreate from a literal floating-point value.
variablestringCreate from a named reference name.
builtinBuiltinConstantCreate 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, {}.
DriverSeriesAlignment#
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]).
inputDatasetrequiredThe base dataset to drop series from.
namesarray ofStringConstantNames of the series to drop.
DurationAdd#
The sum of two durations.
leftcompute.api.DurationrequiredFirst duration.
rightcompute.api.DurationrequiredSecond 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.
literalrun.api.DurationCreate from a literal duration value.
variablestringCreate from a named reference name.
DurationDays#
Constructs a duration from a number of days.
daysIntegerConstantrequiredThe number of days.
DurationFilterRanges#
Filters a list of ranges down to only those satisfying a threshold condition on the range’s duration.
inputRangeSeriesrequired
thresholdDurationConstantrequired
operatorThresholdOperatorrequired
unboundedBehaviorUnboundedBehavior
DurationFilterRangesV2#
Filters ranges by duration using an authored Duration expression.
inputRangeSeriesrequired
durationcompute.api.DurationrequiredThe duration each input range is compared against.
unboundedBehaviorUnboundedBehaviorHow a range with an open start or end is measured. Defaults to treating the missing bound as the edge of the compute request window.
comparisonThresholdOperatorrequired
DurationHours#
Constructs a duration from a number of hours.
hoursIntegerConstantrequiredThe number of hours.
DurationMilliseconds#
Constructs a duration from a number of milliseconds.
millisecondsIntegerConstantrequiredThe number of milliseconds.
DurationMinutes#
Constructs a duration from a number of minutes.
minutesIntegerConstantrequiredThe 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.
nanosecondsIntegerConstantrequiredThe number of nanoseconds.
DurationNegate#
Negates a duration (reverses its sign).
inputcompute.api.DurationrequiredThe duration to negate.
DurationSeconds#
Constructs a duration from a number of seconds.
secondsIntegerConstantrequiredThe number of seconds.
DurationSubtract#
The difference of two durations (left minus right).
leftcompute.api.DurationrequiredDuration to subtract from.
rightcompute.api.DurationrequiredDuration to subtract.
EarliestAnchorReference#
Selects the earliest anchor resolved from the input.
An empty JSON object, {}.
EllipseShape#
An empty JSON object, {}.
Empty#
An empty JSON object, {}.
EmptyPanel#
Set type to the name of one of the other fields, and set only that field.
v1EmptyPanelV1
EmptyPanelV1#
idstring required
hideLabelbooleanWhen omitted, treat as false.
EndNodeVizDefinition#
Set type to the name of one of the other fields, and set only that field.
EndNodeVizDefinitionV1#
titlestringThe label displayed on the end node.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
Enum1dArraySeries#
Set type to the name of one of the other fields, and set only that field.
channelChannelSeries
rawReference
derivedDerivedSeries
selectEnum1dArraySelectSeries
extractFromStructExtractEnum1dArrayFromStructSeries
toStartOfIntervalEnum1dArrayToStartOfIntervalSeries
timeShiftEnum1dArrayTimeShiftSeries
filterByTagEnum1dArrayTagFilterSeries
selectTagsEnum1dArraySelectTagsSeries
Enum1dArrayTagFilterSeries#
Applies a tag predicate to the enum 1d array series produced by input.
inputEnum1dArraySeriesrequired
predicateTagPredicaterequired
Enum1dArrayTimeShiftSeries#
inputEnum1dArraySeriesrequired
durationDurationConstantrequired
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.
inputEnum1dArraySeriesrequired
windowcompute.api.Durationrequired
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>.
inputAggregationBuilderrequiredThe 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-onlyenum_udf(...)andrust_enum_udf(...)terminals instead.operatorEnumAggregationOperatorrequiredThe 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.
minEmpty
maxEmpty
udfEnumAggregationUdf
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>.
sourceUdfSourcerequired
EnumArrayCellConfig#
visualisationEnumArrayVisualisation
EnumArrayRawVisualisation#
A raw enum array visualisation with optional coloring based on enum thresholds.
An empty JSON object, {}.
EnumArrayVisualisation#
Set type to the name of one of the other fields, and set only that field.
EnumCellConfig#
visualisationEnumValueVisualisation
groupBySortEnumGroupBySortSorting configuration for grouped data rendering in a cell. If undefined, will sort alphabetically by grouping.
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.
constantStringConstantrequired
EnumCountDuplicateSeries#
Counts the number of points along each timestamp in the input series.
inputsarray ofEnumSeries
EnumDisplayStyle#
Set type to the name of one of the other fields, and set only that field.
stackedEnumDisplayStyleStacked
inlineEnumDisplayStyleInline
barEnumDisplayStyleBar
lineEnumDisplayStyleLine
EnumDisplayStyleBar#
An empty JSON object, {}.
EnumDisplayStyleInline#
An empty JSON object, {}.
EnumDisplayStyleLine#
An empty JSON object, {}.
EnumDisplayStyleStacked#
An empty JSON object, {}.
EnumFilterOperator#
IS_INTrue when the value is contained in the set.
IS_NOT_INTrue when the value is not contained in the set.
MATCHES_ANY_REGEXTrue 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.
inputEnumSeriesrequired
operatorEnumFilterOperatorrequired
valuesStringSetConstantrequiredThe set of literal values (for IS_IN / IS_NOT_IN) or RE2 regex patterns (for MATCHES_ANY_REGEX) to match against.
persistenceWindowConfigurationPersistenceWindowConfiguration
EnumFilterTransformationSeries#
Outputs categorical input values that fall within the supplied ranges.
inputEnumSeriesrequired
filterRangeSeriesrequiredKeeps only input points whose timestamp falls inside one of these ranges.
EnumGroupBySort#
Set type to the name of one of the other fields, and set only that field.
customEnumGroupBySortCustom
alphabeticalValueSort
EnumGroupBySortCustom#
orderarray of stringSpecify the values in the order they should appear. Unspecified values will be sorted to the bottom.
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.
inputEnumSeriesrequired
nIntegerConstantrequiredKeep every Nth point starting from the earliest in each series. Must be >= 1.
EnumRawVisualisation#
The settings for a raw enum visualisation.
colorMapmap of string to string
EnumResampleConfiguration#
intervalDurationConstantrequiredInterval between resampled points
interpolationEnumResampleInterpolationConfigurationInterpolation strategy to use (defaults to forward fill).
EnumResampleInterpolationConfiguration#
Set type to the name of one of the other fields, and set only that field.
forwardFillResampleInterpolationConfigurationForwardFillResampleInterpolationConfiguration
constantResampleInterpolationConfigurationEnumConstantResampleInterpolationConfiguration
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.
inputEnumSeriesrequired
resampleConfigurationEnumResampleConfigurationrequiredThe interval at which to resample the series and interpolation strategy
EnumResampleSeriesV2#
Resamples categorical points at the authored interval using forward-fill interpolation.
inputEnumSeriesrequired
intervalcompute.api.DurationrequiredInterval at which to resample.
EnumSeries#
Set type to the name of one of the other fields, and set only that field.
aggregateAggregateEnumSeriesdeprecatedDeprecated: AggregateEnumSeries is deprecated. Use
enumAggregationwithaggregation.GroupByAggregationBuilderinstead.rawReference
channelChannelSeries
derivedDerivedSeries
resampleEnumResampleSeries
resampleV2EnumResampleSeriesV2
nthPointDownsampleEnumNthPointDownsampleSeries
timeRangeFilterEnumTimeRangeFilterSeries
timeShiftEnumTimeShiftSeries
timeShiftV2EnumTimeShiftSeriesV2
unionEnumUnionSeries
filterTransformationEnumFilterTransformationSeries
valueMapValueMapSeries
select1dArrayIndexSelectIndexFrom1dEnumArraySeries
extractFromStructExtractEnumFromStructSeries
eventAggregationEventsEnumSeries
enumAggregationEnumAggregation
selectEnumSelectSeries
selectCategoricalPropertySelectProperty
filterByTagEnumTagFilterSeries
selectTagsEnumSelectTagsSeries
scalarUdfScalarUdfSeries
toStartOfIntervalEnumToStartOfIntervalSeries
EnumSeriesEqualityRanges#
Produces a list of ranges for which provided enum series are all equal (or are not all equal).
inputarray ofEnumSeries
equalityOperatorEqualityOperatorrequired
persistenceWindowConfigurationPersistenceWindowConfiguration
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults 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.
inputEnumSeriesrequired
predicateTagPredicaterequired
EnumTimeRangeFilterSeries#
Filters the series to points within the specified time range.
inputEnumSeriesrequired
startTimeTimestampConstantRepresents the start time (inclusive) of the time range.
endTimeTimestampConstantRepresents the end time (inclusive) of the time range.
EnumTimeShiftSeries#
inputEnumSeriesrequired
durationDurationConstantrequired
EnumTimeShiftSeriesV2#
Shifts the timestamps in the input series by the resolved duration.
inputEnumSeriesrequired
durationcompute.api.DurationrequiredDuration to shift the input series by.
EnumToNumericSeries#
Maps an enumerated series to a numeric series by mapping each string value to a double.
inputEnumSeriesrequired
mappingmap of string toDoubleConstantThe mapping from enum values to doubles.
defaultValueDoubleConstantThe 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.
inputEnumSeriesrequired
windowcompute.api.Durationrequired
EnumUnionOperation#
THROWThrows an exception if two series contain points with a duplicate timestamp.
MAXAggregates duplicates by String MAX.
MINAggregates 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.
inputarray ofEnumSeries
operationEnumUnionOperationrequiredThe strategy to merge points with duplicate timestamps.
EnumValueChannel#
variableNamestring required
visualisationEnumValueVisualisationrequired
EnumValueVisualisation#
Set type to the name of one of the other fields, and set only that field.
rawEnumRawVisualisation
EqualityOperator#
ALL_EQUAL
NOT_ALL_EQUAL
EqualToSeries#
Compares two numeric series point-wise, producing true where left == right and false otherwise.
leftNumericSeriesrequired
rightNumericSeriesrequired
Event#
displayNamestring
eventUuidstring (UUID) required
isPinnedboolean required
event.AssetsFilter#
operatorSetOperatorrequired
assetsarray of string (RID)
event.EventDispositionStatus#
PENDING_REVIEW
CLOSED_IGNORED
CLOSED_REQUIRES_FURTHER_ACTION
NO_DISPOSITION
event.EventTimeFilter#
timestampTimestamprequired
timestampConditionevent.EventTimeFilterConditionrequired
event.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
event.EventType#
INFO
FLAG
ERROR
SUCCESS
event.SearchEventOriginType#
WORKBOOK
TEMPLATE
API
DATA_REVIEW
PROCEDURE
STREAMING_CHECKLIST
EventAlignment#
An offset that is defined relative to the first target event found by query.
targetRunRidstring (RID) required
alignToEventAlignTorequired
eventQuerySearchQueryrequired
EventAlignTo#
The align to value for an event offset. If the queried event is a moment, the offset will be the moment timestamp regardless of the align to value.
START
END
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.
queryComputeEventQueryrequired
indexIntegerConstantZero-based event index after sorting. Defaults to zero and must be non-negative.
sortOrderEventSortOrderOrdering by event start timestamp before selecting the index. Defaults to ASC.
EventDataScopeInputFilter#
Restricts an input to all time ranges of events matching a query.
idstring (UUID) requiredStable client-provided identifier for the filter.
queryComputeEventQueryrequiredEvent search query, using the same query type as event-based input alignment.
EventIntervalSource#
Intervals come from an event query. Each event defines [timestamp, timestamp+duration).
queryComputeEventQueryrequired
tagByarray ofEventTagSourceNon-empty ordered list of tag sources. Each contributes a tag key-value pair per event interval.
EventLabelTag#
labelStringConstantrequired
EventLevelTag#
An empty JSON object, {}.
EventPropertyTag#
propertyNameStringConstantrequired
EventReference#
eventUuidstring (UUID) deprecatedDeprecated: Please use the rid field instead.
ridstring (RID) requiredThe event’s unique identifier.
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).
queryComputeEventQueryrequired
valueSourceEventsEnumValueSourcerequired
EventsEnumValueSource#
Set type to the name of one of the other fields, and set only that field.
propertyStringConstantName of the event property whose value should be used as the enum value.
levelEmptyThe 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.
queryComputeEventQueryrequired
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.
queryComputeEventQueryrequired
indexIntegerConstantZero-based event index after sorting. Defaults to zero and must be non-negative.
sortOrderEventSortOrderOrdering by event start timestamp before selecting the index. Defaults to ASC.
EveryNthPerSeriesSampling#
Returns every Nth timestamp-ordered point from each distinct series.
nIntegerConstantrequiredKeep every Nth point starting from the earliest in each series. Must be > 1.
ExcludeNegativeValues#
An empty JSON object, {}.
ExponentialCurve#
An empty JSON object, {}.
ExtractEnum1dArrayFromStructSeries#
inputStructSeriesrequired
fieldPatharray ofStringConstant
ExtractEnumFromStructSeries#
inputStructSeriesrequired
fieldPatharray ofStringConstantPath 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 like0refers 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#
inputStructSeriesrequired
fieldPatharray ofStringConstant
ExtractNumericFromStructSeries#
inputStructSeriesrequired
fieldPatharray ofStringConstantPath 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 like0refers 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.dataTypeNumericDataTypeThe type the numeric data will be cast to, defaults to FLOAT64
ExtractStructFromStructSeries#
inputStructSeriesrequired
fieldPatharray ofStringConstantPath 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 like0refers 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.
inputNumericSeriesrequired
minimumProminenceDoubleConstantThe minimum topographic prominence for an extrema to be returned.
selectionPeakTyperequired
FftWindow#
BLACKMAN
HANN
HAMMING
RECT
Figure#
The root figure definition for a plotly instance
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.
durationDurationConstant
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.
forwardFillForwardFill
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.
basestring requiredThe 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.
inputsmap ofLocalVariableNametoNumericSeriesA map containing all the numeric series present in the expression.
expressionstring requiredAn expression that evaluates to a boolean. For example - a > 5.
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults 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.
inputDatasetrequiredThe underlying dataset to filter.
predicateTagPredicaterequiredConjunctive 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, {}.
FixedDecimalPlaces#
Format the number to a fixed number of decimal places, padding with zeroes or rounding as needed.
placesinteger required
FloatingLegend#
Set type to the name of one of the other fields, and set only that field.
perRowPerRowFloatingLegends
FloatingLegendConfig#
hiddenbooleanWhether to hide the floating legend. Defaults to false.
legendFloatingLegendrequired
hideEmptySeriesHideEmptySeriesWhen to omit series that have no points in the visible time range from the legend. If undefined, defaults to never.
FloatingLegendPosition#
Set type to the name of one of the other fields, and set only that field.
presetFloatingLegendPresetPosition
FloatingLegendPresetPosition#
TOP_LEFT
TOP_RIGHT
BOTTOM_LEFT
BOTTOM_RIGHT
FloatNumberInput#
Accepts finite floating-point values. All present constraints must be finite, and min must be less than or equal to max.
minnumberInclusive lower bound. Absent means unbounded below.
maxnumberInclusive upper bound. Absent means unbounded above.
stepnumberMust be greater than zero. Valid values are min + k * step for an integer k, or k * step when min is absent. Also the increment for stepper controls. Absent means any value is accepted.
FloorDivide#
Divides left by right pointwise and rounds down to the nearest integer.
leftNumericSeriesrequiredNumerator.
rightNumericSeriesrequiredDenominator.
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.
limitFillLimitrequired
ForwardFillConnectingLine#
An empty JSON object, {}.
ForwardFillInterpolation#
interpolationRadiusDurationConstantrequired
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, {}.
FrequencyChartDefinition#
Set type to the name of one of the other fields, and set only that field.
FrequencyChartDefinitionV1#
plotsarray ofFrequencyPlot
eventsarray ofEventdeprecatedDeprecated: Please use the workbook’s eventRefs field instead.
comparisonRunGroupsarray ofComparisonRunGroup
titlestring
valueAxesarray ofValueAxis
plotTypeFrequencyPlotTypeThe type of plot to display. If not specified, the default is FFT.
FrequencyChartDefinitionV2#
plotsarray ofFrequencyPlotV2
eventsarray ofEventdeprecatedDeprecated: Please use the workbook’s eventRefs field instead.
comparisonRunGroupsarray ofComparisonRunGroup
titlestring
valueAxesarray ofValueAxis
plotTypeFrequencyPlotTypeThe type of plot to display. If not specified, the default is FFT.
FrequencyPlot#
A frequency plot that displays a real value against the frequency domain.
variableNamestring required
enabledboolean
yAxisIdstring required
colorstring required
lineStyleLineStylerequired
FrequencyPlotMultivariate#
A plot that performs an analysis on an multiple signals and returns data mapped to the frequency domain.
titlestring
variableNamesarray of string
axesIdsarray of string
enabledboolean
colorstring required
lineStyleLineStylerequired
FrequencyPlotType#
Set type to the name of one of the other fields, and set only that field.
fftFrequencyPlotTypeFft
periodogramFrequencyPlotTypePeriodogram
psdFrequencyPlotTypePsd
cpsdFrequencyPlotTypeCpsd
nyquistFrequencyPlotTypeNyquist
bodeFrequencyPlotTypeBode
FrequencyPlotTypeBode#
alignmentConfigurationAlignmentConfigurationWhen present, aligns one Bode input to the other using the configured interpolation and driver series before estimating the frequency response. For Bode, FIRST uses the input timestamps and SECOND uses the output timestamps.
stftOptionsStftOptions
magnitudeScalingMagnitudeScaling
outputFrequencyTypeOutputFrequencyType
unwrapPhaseboolean
displayModeMagnitudeAndPhaseDisplayModeWhether to the magnitude or phase of the output. Defaults to MAGNITUDE if not specified.
FrequencyPlotTypeCpsd#
stftOptionsStftOptions
magnitudeScalingMagnitudeScaling
outputFrequencyTypeOutputFrequencyType
unwrapPhaseboolean
outputPhaseUnitOutputPhaseUnit
displayModeMagnitudeAndPhaseDisplayModeWhether to the magnitude or phase of the output. Defaults to MAGNITUDE if not specified.
FrequencyPlotTypeFft#
windowFftWindow
peakDetectionModePeakDetectionModeThe aggregate amplitude to render for bucketed FFT data. If not specified, clients should treat this as the legacy mean behavior.
nfftintegerLength of the FFT. When nfft < input length, the input is truncated to the first nfft samples before windowing and transforming. When nfft > input length, the windowed input is zero-padded up to nfft before transforming. When nfft is unset, defaults to the input length, producing the same result as setting nfft to the input length. The output contains nfft/2 + 1 single-sided frequency bins with spacing fs/nfft. For best performance, prefer a power of 2 (e.g. 512, 1024, 2048).
FrequencyPlotTypeNyquist#
stftOptionsStftOptions
FrequencyPlotTypePeriodogram#
methodPeriodogramMethodrequired
FrequencyPlotTypePsd#
stftOptionsStftOptions
magnitudeScalingMagnitudeScaling
outputFrequencyTypeOutputFrequencyType
displayModePsdDisplayModeHow to render bucketed PSD data, or NONE to disable bucketing. If not specified, clients should default to AVERAGE.
FrequencyPlotV2#
Set type to the name of one of the other fields, and set only that field.
singleFrequencyPlot
multivariateFrequencyPlotMultivariate
FullSizeMarkerAppearance#
Full-size, opaque point markers.
An empty JSON object, {}.
FunctionDerivedSeries#
A reference to a derived series resulting from applying a function to a set of arguments.
moduleNameStringConstantrequired
functionNameStringConstantrequired
versionReferenceModuleVersionReferencerequired
functionArgsmap ofFunctionParameterNametoFunctionParameterValueMap 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.
variablestring
valueVariableValue
FunctionVariables#
variablesmap ofVariableNametoVariableValue
subFunctionVariablesmap ofFunctionReferencetoFunctionVariables
Geo3dCrs#
Coordinate reference system for spatial assets (point clouds, meshes) in a Geo3d panel. Expressed as a union so future variants (e.g. UTM, local ENU with a known origin) can carry their own parameters without a breaking change.
Set type to the name of one of the other fields, and set only that field.
ecefGeo3dCrsEcef
localGeo3dCrsCartesian
Geo3dCrsCartesian#
Local Cartesian coordinate frame with no geographic reference. Coordinates are treated as scene-relative (metres).
An empty JSON object, {}.
Geo3dCrsEcef#
Earth-Centered Earth-Fixed Cartesian coordinates (X/Y/Z in metres from Earth’s centre).
An empty JSON object, {}.
Geo3dCustomModel#
attachmentRidstring (RID) required
fileExtensionstring required
Geo3dDefaultModel#
FICTIONAL_FIGHTER
SATELLITE
QUADCOPTER
FIXEDWING
Geo3dDefinition#
Set type to the name of one of the other fields, and set only that field.
Geo3dDefinitionV1#
plotsarray ofGeoPlot3d
titlestring
spatialPlotsarray ofGeoPlot3dSpatialSpatial dataset or channel plots in the 3D viewport.
crsGeo3dCrsCoordinate reference system for spatial assets in this panel. Absent means ECEF (the original default).
tileSourceGeo3dTileSourceTile provider for the terrain basemap and height.
Geo3dDisplayVector#
A display for a vector direction
vectorIdstring required
kindGeo3dDisplayVectorKindrequired
enabledboolean required
Geo3dDisplayVectorKind#
Set type to the name of one of the other fields, and set only that field.
Geo3dDisplayVectorSun#
An empty JSON object, {}.
Geo3dModel#
Set type to the name of one of the other fields, and set only that field.
defaultGeo3dDefaultModel
customGeo3dCustomModel
Geo3dModelAxis#
X
Y
Z
NEG_X
NEG_Y
NEG_Z
Geo3dModelLocalOrientation#
Static orientation correction for the 3D model’s native coordinate system. Defines which model axis points forward and which points up.
forwardGeo3dModelAxisrequired
upGeo3dModelAxisrequired
Geo3dOrientation#
Set type to the name of one of the other fields, and set only that field.
principalAxesGeo3dOrientationPrincipalAxes
Geo3dOrientationEulerAngles#
Orientation specified as Euler angles yaw/pitch/roll in degrees.
yawVariableStaticOrChannelrequired
pitchVariableStaticOrChannelrequired
rollVariableStaticOrChannelrequired
Geo3dOrientationPrincipalAxes#
headingVariableNamestring
pitchVariableNamestring
rollVariableNamestring
Geo3dPosition#
Set type to the name of one of the other fields, and set only that field.
wgs84Geo3dPositionWgs84
ecefGeo3dPositionEcef
localGeo3dPositionLocal
Geo3dPositionEcef#
ecefXVariableNamestring required
ecefYVariableNamestring required
ecefZVariableNamestring required
Geo3dPositionLocal#
Position in a local Cartesian coordinate frame. Useful when data is expressed in a scene-relative reference frame rather than a global geographic one (WGS84 / ECEF).
xVariableNamestring
yVariableNamestring
zVariableNamestring
Geo3dPositionWgs84#
latitudeVariableNamestring required
longitudeVariableNamestring required
heightVariableNamestring
Geo3dSensor#
Sensor configuration for 3D scene.
sensorIdstring required
enabledboolean
namestringThe name of the sensor.
positionOffsetGeo3dSensorPositionOffsetPosition offset from the parent model origin, in the model’s local frame after orientation.
orientationGeo3dSensorOrientationConfigThe orientation of the sensor.
colorstringThe color of the sensor.
viewShapeGeo3dSensorShapeThe shape of the sensor’s view volume.
upMarkerbooleanWhen set, the sensor renders with a small triangular up marker on top of its shape.
Geo3dSensorOrientationConfig#
Sensor orientation configuration.
Set type to the name of one of the other fields, and set only that field.
eulerAnglesGeo3dOrientationEulerAngles
nadirGeo3dSensorOrientationNadir
zenithGeo3dSensorOrientationZenith
Geo3dSensorOrientationNadir#
An empty JSON object, {}.
Geo3dSensorOrientationZenith#
An empty JSON object, {}.
Geo3dSensorPositionOffset#
Position offset in a parent model’s local frame.
modelOffsetXnumber required
modelOffsetYnumber required
modelOffsetZnumber required
Geo3dSensorShape#
Sensor shape configuration.
Set type to the name of one of the other fields, and set only that field.
conicGeo3dSensorShapeConic
rectangularGeo3dSensorShapeRectangular
sphericalGeo3dSensorShapeSpherical
Geo3dSensorShapeConic#
A conic frustum shaped sensor volume.
fovVariableStaticOrChannelrequiredFull field-of-view (FOV) angle, in degrees.
lengthVariableStaticOrChannelrequiredLength for the projection, in meters.
Geo3dSensorShapeRectangular#
A rectangular frustum shaped sensor volume.
Set type to the name of one of the other fields, and set only that field.
includedFovGeo3dSensorShapeRectangularIncludedFov
Geo3dSensorShapeRectangularIncludedFov#
A rectangular frustum shaped sensor volume, defined by included angles.
xFovVariableStaticOrChannelrequiredFull field-of-view (FOV) angle in the sensor’s horizontal direction, in degrees.
yFovVariableStaticOrChannelrequiredFull field-of-view (FOV) angle in the sensor’s vertical direction, in degrees.
lengthVariableStaticOrChannelrequiredLength for the projection, in meters.
videoVariablestringWorkbook variable naming a video channel painted on the sensor’s image plane.
Geo3dSensorShapeSpherical#
A spherical sensor volume.
radiusVariableStaticOrChannelrequiredRadius of the sphere, in meters.
Geo3dTileSource#
Tile provider for the terrain basemap and height.
Set type to the name of one of the other fields, and set only that field.
presetGeo3dTileSourcePreset
customGeo3dTileSourceCustom
Geo3dTileSourceCustom#
A user-supplied XYZ tile provider.
colorTemplatestring requiredImagery tiles. Must be a valid URL containing {z}, {x}, and {y} exactly once each.
heightTemplatestringElevation tiles for terrain. Must be a valid URL containing {z}, {x}, and {y} exactly once each.
tokenstringReplaces the {token} placeholder in the tile URLs. Visible to anyone with access to the field.
Geo3dTileSourcePreset#
A built-in tile provider.
presetIdstring requiredPreset identifier.
tokenstringReplaces the {token} placeholder in the tile URLs. Visible to anyone with access to the field.
GeoAdditionalTileset#
A standard tileset to overlay on the base map.
VFR
BATHYMETRY
GeoArrowStyle#
SOLID
HOLLOW
NONE
GeoBaseTileset#
The base map style. Default STREET if unspecified.
STREET
SATELLITE
GeoCoordinate#
latitudenumber required
longitudenumber required
GeoCustomFeature#
Additional static objects on the map, such as a point representing a tower
Set type to the name of one of the other fields, and set only that field.
pointGeoPoint
GeoCustomMeasurement#
A custom distance annotation on the map. Units for distance are inherited from GeoVizDefinitionV1
idstring (UUID)
labelstring
enabledboolean
startCoordinateGeoCoordinaterequired
endCoordinateGeoCoordinaterequired
visualizationOptionsGeoPlotVisualizationOptionsrequired
GeoLine3dStyle#
SOLID
DASH
NONE
GeoLineStyle#
POINTSdeprecatedDeprecated: Use SOLID instead.
SOLID
DASH
NONE
GeoOverlaySourceFormat#
KML
GeoPlot3d#
plotIdstring required
enabledboolean
labelstring
visualizationOptionsGeoPlot3dVisualizationOptionsrequired
positionGeo3dPositionrequired
orientationGeo3dOrientationrequired
modelLocalOrientationGeo3dModelLocalOrientation
plotSensorsarray ofGeo3dSensor
displayVectorsarray ofGeo3dDisplayVector
GeoPlot3dSpatial#
3D plot for a spatial dataset or channel (point cloud, BVH mesh, etc.) loaded by RID.
plotIdstring required
enabledboolean
labelstring
spatialRidstring (RID) required
coloringSpatialColoringdeprecatedHow to color the asset. If omitted, renderers use a +Z direction ramp with colormap VIRIDIS and default bounds (
SpatialColoringGeometryAxiswith axis { x: 0, y: 0, z: 1 }). Deprecated: Use properties instead.propertiesGeoPlot3dSpatialPropertiesFull versioned appearance and time-binding properties. Takes precedence over the deprecated coloring field when present. Absent on plots created before this field was added; clients should migrate via resolveGeo3dSpatialAppearance.
GeoPlot3dSpatialProperties#
Versioned container for all persisted spatial plot properties.
Set type to the name of one of the other fields, and set only that field.
GeoPlot3dSpatialPropertiesV1#
All user-configurable properties for a spatial plot. Mirrors the frontend SpatialPropertiesV1 type — any new field added to one must be added to both.
pointSizenumberSplat diameter in scene units. Defaults to 0.05.
splatModeSpatialSplatModeShape rendered for each point. Defaults to PARABOLIC.
coloringSpatialAppearanceColoringHow to color the point cloud. Defaults to Z-axis gradient with VIRIDIS.
filterSpatialVolumetricFilterVolumetric visibility filter applied before rendering. Defaults to none.
timeBindingSpatialTimeBindingPlayhead-driven time-visibility binding. Absent means no time filtering.
GeoPlot3dVisualizationOptions#
colorstring required
lineStyleGeoLine3dStylerequired
modelGeo3dModel
GeoPlotFromLatLong#
idstring (UUID)
latitudeVariableNamestring required
longitudeVariableNamestring required
secondaryVariablesarray ofSecondaryVariable
enabledboolean
labelstring
visualizationOptionsGeoPlotVisualizationOptionsrequired
GeoPlotFromOverlay#
idstring (UUID)
attachmentRidstring (RID) required
sourceFormatGeoOverlaySourceFormatrequired
enabledboolean
labelstring
visualizationOptionsGeoPlotVisualizationOptionsrequired
GeoPlotSecondaryVisibilityConfig#
visibleboolean required
variableNamestring
GeoPlotVisualizationOptions#
colorstring required
lineStyleGeoLineStylerequired
arrowStyleGeoArrowStyle
secondaryColorVisualizationGeoPlotSecondaryVisibilityConfigIf visible, overwrites any existing visualization options on the geo plot.
GeoPoint#
A static coordinate on the map
labelstring
iconstring required
latitudenumber required
longitudenumber required
variablesarray ofSecondaryVariable
GeoUnitSystem#
Unit system used for distance measurements.
METRIC
IMPERIAL
NAUTICAL_MILES
GeoVizDefinition#
Set type to the name of one of the other fields, and set only that field.
GeoVizDefinitionV1#
plotsarray ofGeoPlotFromLatLong
backgroundOverlaysarray ofGeoPlotFromOverlay
titlestring
customFeaturesarray ofGeoCustomFeature
customMeasurementsarray ofGeoCustomMeasurement
baseTilesetGeoBaseTileset
additionalTilesetGeoAdditionalTileset
unitSystemGeoUnitSystem
GreaterThanOrEqualToSeries#
Compares two numeric series point-wise, producing true where left >= right and false otherwise.
leftNumericSeriesrequired
rightNumericSeriesrequired
GreaterThanSeries#
Compares two numeric series point-wise, producing true where left > right and false otherwise.
leftNumericSeriesrequired
rightNumericSeriesrequired
GroupByAggregationBuilder#
Groups points by a tag selection and a timestamp policy and applies the operator.
inputSeriesrequiredThe series to group and aggregate.
tagsGroupByTagsrequiredSelects which tag keys form the grouping key:
GroupByTags.Current()keeps the input series’ currently selected tags, orGroupByTags.Subset([...])restricts the grouping to a subset of them.timestampGroupByTimestamprequiredSelects how timestamps participate in the grouping key:
GroupByTimestamp.Current()groups on existing timestamps, andGroupByTimestamp.Every(duration)buckets points into fixed-size, epoch-aligned tumbling windows.alignmentGroupByAlignmentOptionally 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.
contextDefaultsEmptyUse the compute context’s
defaultAlignmentStrategyanddefaultFillStrategy.
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.
currentEmptyUse the current timestamps.
everycompute.api.DurationBucket 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.
inputNumericSeriesrequired
rangesRangeSeriesrequiredOne output point is emitted per range, at the range’s start.
aggregationNumericAggregationOperatorrequired
HashSubsampleSampling#
Keeps approximately 1/N of raw points via a stateless hash of each point’s timestamp.
nIntegerConstantrequiredKeep approximately one out of every N points. Must be > 1.
HeatExchangerVizDefinition#
Set type to the name of one of the other fields, and set only that field.
HeatExchangerVizDefinitionV1#
titlestringThe label displayed on the heat exchanger.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
HideEmptySeries#
Set type to the name of one of the other fields, and set only that field.
alwaysHideEmptySeriesAlways
whileStreamingHideEmptySeriesWhileStreaming
neverHideEmptySeriesNever
HideEmptySeriesAlways#
Always omit empty series from the legend.
An empty JSON object, {}.
HideEmptySeriesNever#
Never omit empty series from the legend.
An empty JSON object, {}.
HideEmptySeriesWhileStreaming#
Omit empty series from the legend only while the chart streams live data.
An empty JSON object, {}.
HighPassConfiguration#
cutoffFrequencyDoubleConstantrequired
HistogramChartDefinition#
Set type to the name of one of the other fields, and set only that field.
HistogramChartDefinitionV1#
plotsarray ofHistogramPlot
titlestring
displaySettingsHistogramDisplaySettingsrequired
numericBucketStrategyNumericHistogramBucketStrategy
valueAxisValueAxis
HistogramDisplaySettings#
stackedboolean required
sortHistogramSortOrderrequired
HistogramPlot#
variableNamestring required
enabledboolean
colorstring required
HistogramSortOrder#
The order in which the histogram should be sorted. Default is VALUE_ASCENDING.
VALUE_ASCENDING
VALUE_DESCENDING
FREQUENCY_ASCENDING
FREQUENCY_DESCENDING
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.
typeRidStringConstantrequiredResource identifier of the type whose primary key identifies the asset.
ImageAnchor#
A connection point, positioned on an unrotated image.
xnumber requiredHorizontal position from 0 to 1 across the unrotated image, left to right.
ynumber requiredVertical position from 0 to 1 down the unrotated image, top to bottom.
ImageObjectFit#
How the image is scaled inside its container. CONTAIN fits the image without cropping; COVER fills the container, cropping if needed.
CONTAIN
COVER
ImageVizDefinition#
Set type to the name of one of the other fields, and set only that field.
ImageVizDefinitionV1#
titlestring
attachmentRidstring (RID)The uploaded image attachment. Absent until an image has been uploaded.
altstringAlternative text for the image, for accessibility.
objectFitImageObjectFitHow the image fills its container. Clients provide a default when absent.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
anchorsmap of string toImageAnchorConnection points, keyed by the id CanvasEndpoint.anchorId references.
InheritRelativeTimestampFormat#
Inherit the user-level relative timestamp display format.
An empty JSON object, {}.
InputOffset#
offsetworkbookcommon.api.OffsetAn offset applied to every child of a dataScope input.
assetsmap ofAssetRidtoAssetOffsetAdditive offsets to specific assets
runsmap ofRunRidtoRunOffsetAdditive offsets to specific runs
InputType#
Set type to the name of one of the other fields, and set only that field.
tagTag
InstrumentDivider#
Set type to the name of one of the other fields, and set only that field.
solidSolidInstrumentDivider
InstrumentLayout#
Set type to the name of one of the other fields, and set only that field.
centeredCenteredInstrumentLayout
twoRowTwoRowInstrumentLayout
InstrumentVizDefinition#
Set type to the name of one of the other fields, and set only that field.
InstrumentVizDefinitionV1#
A P&ID instrument bubble: a circle holding either one centered row of text or two rows of text. The layout is designed for up to 4 characters per row. Longer text is allowed, and the client shrinks it to fit. The bubble’s size comes from its canvas rect.
titlestringThe label displayed on the instrument.
layoutInstrumentLayoutHow text is arranged inside the bubble. Absent means an empty bubble.
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.
literalintegerCreate from a literal integer value.
variablestringCreate from a named reference name.
IntegerNumberInput#
Accepts whole numbers only. min must be less than or equal to max.
mininteger (int64)Inclusive lower bound. Absent means unbounded below.
maxinteger (int64)Inclusive upper bound. Absent means unbounded above.
stepinteger (int64)Must be at least 1. Valid values are min + k * step for an integer k, or k * step when min is absent. Also the increment for stepper controls. Absent is treated as 1.
IntegralSeries#
Calculates the running sum of the area underneath a series using the trapezoidal rule.
inputNumericSeriesrequired
startTimestampTimestampConstantrequired
timeUnitTimeUnitTime 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.
forwardFillInterpolationForwardFillInterpolation
IntersectAlignment#
An empty JSON object, {}.
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.
inputsarray ofRangeSeries
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.
intervalStartIntervalStartTimeShiftUses the interval’s start timestamp.
intervalEndIntervalEndTimeShiftUses the interval’s end timestamp.
eventInIntervalEventAnchor
rangeInIntervalRangesAnchor
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.
eventsEventIntervalSource
rangesRangeIntervalSource
IntervalStartTimeShift#
Shift by each tagging interval’s resolved start; resolution throws if start is missing.
An empty JSON object, {}.
IntervalStartTimestampTag#
An empty JSON object, {}.
LabelsFilter#
operatorSetOperatorrequired
labelsarray of string
Layout#
plotlyLayoutstring requiredThe json layout definition according to plotly’s schema https://plotly.com/python/figure-structure/#the-toplevel-layout-attribute
LessThanOrEqualToSeries#
Compares two numeric series point-wise, producing true where left <= right and false otherwise.
leftNumericSeriesrequired
rightNumericSeriesrequired
LessThanSeries#
Compares two numeric series point-wise, producing true where left < right and false otherwise.
leftNumericSeriesrequired
rightNumericSeriesrequired
LinearInterpolationConnectingLine#
An empty JSON object, {}.
LineStyle#
Set type to the name of one of the other fields, and set only that field.
v1LineStyleV1
LineStyleV1#
SOLID
DASH
LineThreshold#
valuenumber required
labelstring
colorstring required
lineStyleThresholdLineStylerequired
LineThresholdGroup#
Line thresholds are used to mark values or demarcate regions along a single axis.
shadingConfigThresholdShadingConfigrequired
linesarray ofLineThreshold
defaultFillDefaultFillTo supplement a set of line thresholds, the default fill configures how the remaining space (either above or below) should be colored. Transparent if empty.
LiteralRange#
A literal range of values.
startTimestampTimestampConstant
endTimestampTimestampConstant
tagsmap of string to string
LiteralRanges#
A list of literal ranges.
literalRangesarray ofLiteralRange
LiteralTimeRange#
A standard definition of a time range, optional t0 defined for relative time ranges.
absoluteRangeRangerequired
timeRangeTypeTimeRangeTyperequired
t0Timestamp
Ln#
Computes the natural logarithm (base e) of each value.
xNumericSeriesrequiredInput numeric series (positive values).
Lock#
isLockedboolean required
updatedAtstring (date-time)
updatedByRidstring (RID)
Log10#
Computes the base-10 logarithm of each value.
xNumericSeriesrequiredInput numeric series (positive values).
LogArgFilterOperator#
Matches against a single log arg.
keyStringConstantrequired
operatorLogRegexFilterOperatorrequired
LogarithmicCurve#
An empty JSON object, {}.
LogChannel#
A field to save additional column names on log panels with support for multiple variables
logChannelVariableNamestring required
visibleLogColumnNamesarray of string
tagFiltersmap of string to array of string required
LogColumnTagFilters#
Tag field to filter log series data by.
Set type to the name of one of the other fields, and set only that field.
literalmap of string to array of string
LogExactMatchCaseInsensitiveFilter#
Filters points such that the log message in each point contains an exact case-insensitive match of the provided token.
tokenstring required
LogFilterOperator#
Set type to the name of one of the other fields, and set only that field.
regexFilterLogRegexFilterOperator
exactMatchCaseInsensitiveFilterLogExactMatchCaseInsensitiveFilter
argLogArgFilterOperator
andarray ofLogFilterOperator
orarray ofLogFilterOperator
notLogFilterOperator
LogFilterSeries#
Outputs only values of the log plot that satisfy the filter.
inputLogSeriesrequired
operatorLogFilterOperatorrequired
LogPanelDefinition#
Set type to the name of one of the other fields, and set only that field.
LogPanelDefinitionV1#
titlestring
logChannelsarray of string
logChannelsV2array ofLogChannel
LogRegexFilterOperator#
Matches a text value against the given re2 regular expression. Regular expression syntax: https://github.com/google/re2/wiki/Syntax.
regexstring required
LogSeries#
Set type to the name of one of the other fields, and set only that field.
rawReference
channelChannelSeries
derivedDerivedSeries
selectLogsSelectSeries
unionLogUnionSeries
filterLogFilterSeries
timeShiftLogTimeShiftSeries
toStartOfIntervalLogToStartOfIntervalSeries
filterByTagLogTagFilterSeries
selectTagsLogSelectTagsSeries
LogTagFilterSeries#
Applies a tag predicate to the log series produced by input.
inputLogSeriesrequired
predicateTagPredicaterequired
LogTimeShiftSeries#
inputLogSeriesrequired
durationDurationConstantrequired
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.
inputLogSeriesrequired
windowcompute.api.Durationrequired
LogUnionOperation#
KEEP_ALLKeeps 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.
inputarray ofLogSeries
operationLogUnionOperationrequiredThe strategy to merge points with duplicate timestamps.
LowPassConfiguration#
cutoffFrequencyDoubleConstantrequired
MagnitudeAndPhaseDisplayMode#
MAGNITUDE
PHASE
MagnitudeScaling#
LINEARLinear scaling of the magnitude.
MAGNITUDE_DB_10Scales the magnitude via 10 * log10(magnitude).
MAGNITUDE_DB_20Scales the magnitude via 20 * log10(magnitude).
MarkdownPanelDefinition#
Set type to the name of one of the other fields, and set only that field.
MarkdownPanelDefinitionV1#
titlestring
contentstringThe markdown content to display in the panel.
MarkerAppearance#
How point markers are drawn on numeric plots
Set type to the name of one of the other fields, and set only that field.
fullSizeFullSizeMarkerAppearance
hiddenHiddenMarkerAppearance
MathConstant#
Math constants referenceable by name.
PIThe circle constant π (dimensionless).
TAUThe circle constant τ = 2π (dimensionless).
EEuler’s number e (dimensionless).
Max#
An empty JSON object, {}.
MaxDecimalPlaces#
Format the number to a maximum number of decimal places, rounding numbers that have greater precision.
placesinteger required
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.
inputsarray ofNumericSeriesInput series across which to take the pointwise maximum
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.
Mean#
An empty JSON object, {}.
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.
inputsarray ofNumericSeriesInput series across which to take the pointwise mean
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.
Min#
An empty JSON object, {}.
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.
inputNumericSeriesrequired
lowerBoundDoubleConstantrequired
upperBoundDoubleConstantrequired
operatorMinMaxThresholdOperatorrequired
persistenceWindowConfigurationPersistenceWindowConfiguration
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.
inputsarray ofNumericSeriesInput series across which to take the pointwise minimum
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults 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.
pinnedPinnedModuleVersionReference
Modulo#
Computes the remainder of left divided by right pointwise.
leftNumericSeriesrequiredDividend.
rightNumericSeriesrequiredDivisor.
Multiply#
Multiplies two numeric series pointwise.
leftNumericSeriesrequiredLeft-hand operand.
rightNumericSeriesrequiredRight-hand operand.
NamedSeries#
nameStringConstantrequiredName of the new derived series.
definitionSeriesrequiredCompute expression defining the series values.
Negate#
Negates each value in the series pointwise (multiplies by -1).
xNumericSeriesrequiredInput numeric series.
NegativeValueConfiguration#
Set type to the name of one of the other fields, and set only that field.
allowNegativeValuesAllowNegativeValuesInclude negative output values
setNegativeValuesToZeroSetNegativeValuesToZeroSet negative output values to zero
excludeNegativeValuesExcludeNegativeValuesExclude points with negative output values
NeverConnectDisconnectedValues#
This option indicates that disconnected values are never connected with a line.
An empty JSON object, {}.
NoConfigAggregation#
An empty JSON object, {}.
NoConfigDataRequestMode#
An empty JSON object, {}.
NoConfigDisplayStat#
An empty JSON object, {}.
NoConfigIndicator#
An empty JSON object, {}.
NoConnectingLine#
This option indicates that points are never connected with a line.
An empty JSON object, {}.
NodeDimension#
Dimension of a node in pixels.
widthnumber required
heightnumber required
nominal.api.Property#
namestring required
valuestring required
NormallyClosedValvePosition#
An empty JSON object, {}.
NormallyOpenValvePosition#
An empty JSON object, {}.
Notebook#
ridstring (RID) required
snapshotRidstring (RID) required
snapshotAuthorRidstring (RID) required
snapshotCreatedAtstring (date-time) required
snapshotDataScopeNotebookDataScopeThe data scope recorded when this snapshot was created. Populated only for exact snapshot reads requested with a snapshot RID, and absent when the historic snapshot predates scope recording.
metadata.dataScoperemains the workbook’s current mutable scope and must not be treated as historic snapshot evidence.snapshotMessagestringDescribes what the save that produced this snapshot changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
metadataNotebookMetadatarequired
stateAsJsonstring required
chartsarray ofChartWithOverlaysdeprecatedDeprecated: charts are now stored in contentV2
layoutWorkbookLayoutrequired
contentWorkbookContentdeprecatedDeprecated: use contentV2 instead
contentV2UnifiedWorkbookContentrequired
eventRefsarray ofEventReference
checkAlertRefsarray ofCheckAlertReferencedeprecatedDeprecated: CheckAlerts are no longer supported and will be removed in the future. Use eventRefs to pin events to workbooks instead.
NotebookArchiveTarget#
Selects the workbooks an archive or unarchive request applies to. Only an explicit set of rids is supported today; a query variant can be added later without breaking callers.
Set type to the name of one of the other fields, and set only that field.
ridsarray of string (RID)The workbooks to act on. Will throw if more than 1_000 rids are provided.
NotebookDataScope#
Set type to the name of one of the other fields, and set only that field.
runRidsarray of string (RID)
assetRidsarray of string (RID)
NotebookMetadata#
runRidstring (RID)deprecated. Use dataScope instead
dataScopeNotebookDataScoperequired
notebookTypeNotebookTyperequired
titlestring required
descriptionstring required
isDraftboolean required
isArchivedboolean required
lockLockrequired
createdByRidstring (RID) required
createdAtstring (date-time) required
updatedAtstring (date-time)The timestamp when the workbook was last updated
propertiesmap ofPropertyNameto string
labelsarray of string
previewImageThemeAwareImage
NotebookMetadataWithRid#
ridstring (RID) required
metadataNotebookMetadatarequired
NotebookType#
The kind of workbook. Persisted on metadata, so it is readable without loading content and filterable through notebookTypes.
WORKBOOK
COMPARISON_WORKBOOK
ANALYST_EPHEMERAL_WORKBOOK
REPORT
NotebookTypesFilter#
returns notebooks that match any of the provided notebook types
typesarray ofNotebookType
NotEqualToSeries#
Compares two numeric series point-wise, producing true where left != right and false otherwise.
leftNumericSeriesrequired
rightNumericSeriesrequired
NotRanges#
The not ranges node will invert the ranges, filling the negative space in time.
inputRangeSeriesrequired
NumberFormat#
Number format for numeric cells, eg 1e4 | 10000 | 10,000.
sigFigsintegerInclude the specified number of significant figures, rounding if needed.
displayOptionNumberFormatDisplayOptionThe base display format for the number.
fixedDecimalPlacesinteger deprecatedDeprecated: use decimalPlaces instead
decimalPlacesDecimalPlacesOptions for formatting the decimal part of number.
NumberFormatDisplayOption#
SCIENTIFIC
SUCCINCT
LOCALE
PLAIN
NumberInputAction#
What the entered value does, and when.
Set type to the name of one of the other fields, and set only that field.
sendCommandsNumberInputSendCommandsAction
NumberInputCommitTrigger#
Fires when the user commits an edited value, by blurring the input or pressing Enter.
An empty JSON object, {}.
NumberInputSendCommandsAction#
When trigger fires, sends the entered value to every entry in targets as a single command service SendCommands request.
triggerNumberInputTriggerAbsent means commit.
targetsarray ofCommandTargetThe channels that receive the value. Must be non-empty, contain at most 32 entries, and name each variable at most once. Every target receives the same value, so each target’s data type must match numberType.
confirmationCommandConfirmationIf present, the frontend must show a confirmation dialog and receive an explicit confirmation before sending the value.
NumberInputTrigger#
When an action applies the entered value.
Set type to the name of one of the other fields, and set only that field.
commitNumberInputCommitTrigger
NumberInputType#
The number type the input accepts. Determines the constraints applied to the entered value and, for sendCommands, the CommandValue variant sent.
Set type to the name of one of the other fields, and set only that field.
floatFloatNumberInputsendCommands sends CommandValue.floatValue; command targets must be DOUBLE channels.
integerIntegerNumberInputsendCommands sends CommandValue.intValue; command targets must be INT channels.
NumberInputVizDefinition#
Set type to the name of one of the other fields, and set only that field.
NumberInputVizDefinitionV1#
A number input whose entered value is applied by action. A value that violates the constraints of numberType is never applied.
titlestringThe label displayed with the input.
numberTypeNumberInputTyperequired
unitstringUnit label rendered beside the input, such as “psi”. Display only; the value is applied as entered.
actionNumberInputActionrequired
Numeric1dArraySeries#
Set type to the name of one of the other fields, and set only that field.
channelChannelSeries
rawReference
derivedDerivedSeries
selectNumeric1dArraySelectSeries
extractFromStructExtractNumeric1dArrayFromStructSeries
toStartOfIntervalNumeric1dArrayToStartOfIntervalSeries
timeShiftNumeric1dArrayTimeShiftSeries
filterByTagNumeric1dArrayTagFilterSeries
selectTagsNumeric1dArraySelectTagsSeries
Numeric1dArrayTagFilterSeries#
Applies a tag predicate to the numeric 1d array series produced by input.
inputNumeric1dArraySeriesrequired
predicateTagPredicaterequired
Numeric1dArrayTimeShiftSeries#
inputNumeric1dArraySeriesrequired
durationDurationConstantrequired
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.
inputNumeric1dArraySeriesrequired
windowcompute.api.Durationrequired
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.
inputAggregationBuilderrequiredThe aggregation shape to apply the operator over: a rolling time window, a rolling point-count window, or a group-by.
operatorNumericAggregationOperatorrequiredThe 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.
sumSummation
averageAverage
minMinimum
maxMaximum
countcompute.api.Count
standardDeviationcompute.api.StandardDeviation
rootMeanSquarecompute.api.RootMeanSquare
percentilePercentile
udfNumericAggregationUdf
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.
sourceUdfSourcerequired
NumericApproximateFilterSeries#
Outputs the values of the numeric plot value that are approximately equal to the threshold value.
inputNumericSeriesrequired
thresholdDoubleConstantrequired
toleranceDoubleConstantrequired
operatorApproximateThresholdOperatorrequired
NumericArrayCellConfig#
visualisationNumericArrayVisualisation
numberFormatNumberFormat
NumericArrayRawVisualisation#
A raw numeric array visualisation with optional coloring based on numeric thresholds.
An empty JSON object, {}.
NumericArrayVisualisation#
Set type to the name of one of the other fields, and set only that field.
NumericBarGaugeVisualisation#
The settings for a bar gauge visualisation.
lowThresholdnumber required
highThresholdnumber required
NumericBarVisualisationV2#
A numeric visualisation that will fill the cell from left to right with a colored background representing where the value falls inside a set range. The lowest and highest values in the thresholds determine the start and end of the range. Middle threshold values will still affect the cell’s coloration.
thresholdsarray ofchartdefinition.api.ThresholdModifies the visualisation based on the highest threshold value that the computed value equals or surpasses. The lowest and highest value will determine the 0% and 100% values of the bar.
NumericBetweenPredicate#
Matches when lower < value < upper; both bounds are exclusive. Bounds must be finite and lower must be strictly less than upper.
lowernumber required
uppernumber required
NumericCellConfig#
visualisationNumericValueVisualisationV2
numberFormatNumberFormat
groupBySortNumericGroupBySortSorting configuration for grouped data rendering in a cell. If undefined, will sort alphabetically by grouping.
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.
constantDoubleConstantrequired
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.
inputsarray ofNumericSeriesThe series compared against each other. At least two are required.
toleranceDoubleConstantMaximum spread between the inputs still counted as equal. Defaults to zero, i.e. exact equality.
minPointsIntegerConstantMinimum number of matching points. Defaults to 1.
minDurationcompute.api.DurationMinimum matching duration. Defaults to one nanosecond.
rangeStartRangeStartSelects whether the output begins at the first match or after persistence is satisfied.
equalityOperatorEqualityOperatorrequired
NumericFilterTransformationSeries#
Outputs the input points whose timestamps fall within the supplied ranges.
inputNumericSeriesrequired
filterRangeSeriesrequiredKeeps input points whose timestamps fall inside any of these ranges.
NumericFilterWhereSeries#
Outputs numeric input values where the provided Boolean expression evaluates to true.
inputNumericSeriesrequired
conditionBooleanSeriesrequiredCondition evaluated point-wise at each input timestamp. A point is only kept where the condition is true.
NumericGroupBySort#
Set type to the name of one of the other fields, and set only that field.
valueValueSort
NumericHistogramBucketStrategy#
Set type to the name of one of the other fields, and set only that field.
bucketCountIntegerConstantThe number of buckets to use in the histogram. Width is automatically calculated from the range of the input series, with the lower and upper bounds of the histogram being multiples of the width.
bucketWidthAndOffsetNumericHistogramBucketWidthAndOffset
NumericHistogramBucketWidthAndOffset#
widthDoubleConstantrequiredThe width of each bucket. If offset is not specified, the left and right bounds of each bucket are multiples of the width. If offset is specified, the left and right bounds of each bucket are shifted right by the offset value.
offsetDoubleConstantThe rightward shift to apply to the left and right bounds of each bucket. If not specified, the offset will be 0. The offset must be non-negative.
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.
conditionBooleanSeriesrequiredBoolean series evaluated at each point to choose between the
trueValueandfalseValuebranches.trueValueNumericSeriesrequiredValue emitted at points where
conditionis true.falseValueNumericSeriesrequiredValue emitted at points where
conditionis 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.
inputNumericSeriesrequired
maxPointsToReturnIntegerConstantrequiredMaximum 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.
inputNumericSeriesrequiredInput 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.
inputNumericSeriesrequired
nIntegerConstantrequiredKeep every Nth point starting from the earliest in each series. Must be >= 1.
NumericPresetColorRange#
Color interpolation for numeric values using a preset color scheme.
lownumber required
highnumber required
presetColorSchemerequired
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.
namestring required
valuenumber required
operatorPropertyComparisonOperatorrequired
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.
namestring required
minnumber
maxnumber
operatorNumericPropertyRangeOperatorrequired
NumericRawVisualisation#
An empty JSON object, {}.
NumericRawVisualisationV2#
A raw numeric visualisation with optional coloring based on numeric thresholds.
thresholdsarray ofchartdefinition.api.ThresholdModifies the visualisation based on the highest threshold value that the computed value surpasses.
NumericResampleConfiguration#
intervalDurationConstantrequiredInterval between resampled points
interpolationNumericResampleInterpolationConfigurationInterpolation strategy to use (defaults to forward fill).
NumericResampleInterpolationConfiguration#
Set type to the name of one of the other fields, and set only that field.
forwardFillResampleInterpolationConfigurationForwardFillResampleInterpolationConfiguration
constantResampleInterpolationConfigurationNumericConstantResampleInterpolationConfiguration
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.
inputNumericSeriesrequired
resampleConfigurationNumericResampleConfigurationrequiredThe interpolation strategy and interval at which to resample the series
NumericResampleSeriesV2#
Resamples the input series at the authored interval using forward-fill.
inputNumericSeriesrequired
intervalcompute.api.DurationrequiredInterval at which to resample.
NumericSeries#
Set type to the name of one of the other fields, and set only that field.
absAbs
negateNegate
cosCos
sinSin
tanTan
acosAcos
asinAsin
lnLn
log10Log10
sqrtSqrt
addAdd
subtractSubtract
multiplyMultiply
divideDivide
floorDivideFloorDivide
powerPower
moduloModulo
atan2Atan2
maxMaxSeries
meanMeanSeries
minMinSeries
sumSumSeries
unionNumericUnionSeries
productProductSeries
constantConstantNumericSeries
selectNewestPointsSelectNewestPointsSeries
selectNumericSelectSeries
selectNumericPropertySelectProperty
selectOldestPointsSelectOldestPointsSeries
bitAndBitAnd
bitOrBitOr
bitXorBitXor
bitShiftRightBitShiftRight
bitShiftLeftBitShiftLeft
bitTestBitTest
ifElseNumericIfElseSeries
numericAggregationNumericAggregation
countDuplicateEnumCountDuplicateSeries
cumulativeSumCumulativeSumSeries
derivativeDerivativeSeries
integralIntegralSeries
zScoreZscoreSeries
rawReference
derivedDerivedSeries
resampleNumericResampleSeries
resampleV2NumericResampleSeriesV2
nthPointDownsampleNumericNthPointDownsampleSeries
largestTriangleThreeBucketsNumericLargestTriangleThreeBucketsSeries
signalFilterSignalFilterSeries
timeDifferenceTimeDifferenceSeries
absoluteTimestampAbsoluteTimestampSeries
timeRangeFilterNumericTimeRangeFilterSeries
timeShiftNumericTimeShiftSeries
timeShiftV2NumericTimeShiftSeriesV2
unitConversionUnitConversionSeries
unitOverrideUnitOverrideSeries
valueDifferenceValueDifferenceSeries
filterTransformationNumericFilterTransformationSeries
filterWhereNumericFilterWhereSeries
thresholdFilterNumericThresholdFilterSeries
approximateFilterNumericApproximateFilterSeries
dropNanNumericNanFilter
select1dArrayIndexSelectIndexFrom1dNumericArraySeries
aggregateUnderRangesAggregateUnderRangesSeries
rangeDurationRangeDurationSeries
groupWithinRangesV2GroupWithinRangesSeriesV2
filterByExpressionFilterByExpressionSeries
scalarUdfScalarUdfSeries
enumToNumericEnumToNumericSeries
containsContainsSeries
refpropRefpropSeries
refpropV2RefpropSeriesV2
extractFromStructExtractNumericFromStructSeries
tagByIntervalsTagByIntervalsSeries
filterByTagNumericTagFilterSeries
selectTagsNumericSelectTagsSeries
toStartOfIntervalNumericToStartOfIntervalSeries
phaseUnwrapPhaseUnwrapSeries
aggregateAggregateNumericSeriesdeprecatedDeprecated: AggregateNumericSeries is deprecated. Use
numericAggregationwithaggregation.GroupByAggregationBuilderinstead.rollingOperationRollingOperationSeriesdeprecatedDeprecated: RollingOperationSeries is deprecated. Use
numericAggregationwithaggregation.RollingTimeAggregationBuilderinstead.bitOperationBitOperationSeriesdeprecatedDeprecated: BitOperationSeries is deprecated in favor of individual nodes for each operation.
channelChannelSeriesdeprecatedDeprecated: Deprecated in favor of the SelectSeries node
offsetOffsetSeriesdeprecatedDeprecated: OffsetSeries is deprecated in favor of add with a constant.
scaleScaleSeriesdeprecatedDeprecated: ScaleSeries is deprecated in favor of multiply with a constant.
arithmeticArithmeticSeriesdeprecatedDeprecated: ArithmeticSeries is deprecated in favor of individual nodes for each operation.
unaryArithmeticUnaryArithmeticSeriesdeprecatedDeprecated: UnaryArithmeticSeries is deprecated in favor of individual nodes for each operation.
binaryArithmeticBinaryArithmeticSeriesdeprecatedDeprecated: 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.
inputNumericSeriesrequired
thresholdcompute.api.DurationrequiredMinimum gap without data that produces an output range.
NumericTagFilterSeries#
Applies a tag predicate to the numeric series produced by input.
inputNumericSeriesrequired
predicateTagPredicaterequired
NumericThresholdFilterSeries#
Outputs only the values of the numeric plot value that satisfy the threshold condition.
inputNumericSeriesrequired
thresholdDoubleConstantrequired
operatorThresholdOperatorrequired
NumericTimeRangeFilterSeries#
Filters the series to points within the specified time range.
inputNumericSeriesrequired
startTimeTimestampConstantRepresents the start time (inclusive) of the time range.
endTimeTimestampConstantRepresents the end time (inclusive) of the time range.
NumericTimeShiftSeries#
inputNumericSeriesrequired
durationDurationConstantrequired
NumericTimeShiftSeriesV2#
Shifts the timestamps in the input series by the resolved duration.
inputNumericSeriesrequired
durationcompute.api.DurationrequiredDuration 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.
inputNumericSeriesrequired
windowcompute.api.Durationrequired
NumericUnionOperation#
DEPRECATED: apply aggregations as a separate step over the unioned output.
MINCombines multiple points by taking the minimum value
MAXCombines multiple points by taking the maximum value
MEANCombines multiple points by taking the mean of the values
SUMCombines multiple points by taking the sum of the values
COUNTCombines multiple points by taking the count of the values
STANDARD_DEVIATIONCombines multiple points by taking the standard deviation of the values
ROOT_MEAN_SQUARECombines multiple points by taking the root mean square of the values
THROWThrows 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.
inputarray ofNumericSeriesInput series to union
operationNumericUnionOperationdeprecatedThe strategy to merge points with duplicate timestamps. Deprecated: Apply aggregations as a separate step over the unioned output.
NumericValueChannel#
variableNamestring required
visualisationNumericValueVisualisationrequired
NumericValuePredicate#
Numeric comparisons against a value. All operands must be finite floating-point numbers. Non-finite input values do not match. Equality is exact, without a tolerance.
Set type to the name of one of the other fields, and set only that field.
equalsnumber
lessThannumber
greaterThannumber
gtenumber
ltenumber
notEqualnumber
betweenNumericBetweenPredicate
NumericValueVisualisation#
Set type to the name of one of the other fields, and set only that field.
rawNumericRawVisualisation
barGaugeNumericBarGaugeVisualisation
NumericValueVisualisationV2#
Set type to the name of one of the other fields, and set only that field.
OffsetAnchor#
Set type to the name of one of the other fields, and set only that field.
runOffsetRunAnchor
seriesOffsetSeriesAnchor
OffsetRunAnchor#
An empty JSON object, {}.
OffsetSeries#
For every timestamp specified in the input series, offset it by a constant factor.
inputNumericSeriesrequired
scalarDoubleConstantrequiredThe constant to add to each point
OffsetSeriesAnchor#
seriesVariablestring required
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.
inputSeriesrequired
OrificeVizDefinition#
Set type to the name of one of the other fields, and set only that field.
OrificeVizDefinitionV1#
titlestringThe label displayed on the orifice.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
OriginTypesFilter#
operatorSetOperatorrequired
originTypesarray ofevent.SearchEventOriginType
OrSeries#
Combines two boolean series point-wise using logical OR, producing true where either input is true and false otherwise.
leftBooleanSeriesrequired
rightBooleanSeriesrequired
OrthogonalConnectionRouting#
A right-angle route. Each entry is the fixed coordinate of one interior segment, in logical canvas coordinates: x for vertical segments, y for horizontal ones. Entries alternate axis, starting perpendicular to the stub of the lexicographically smaller (objectId, anchorId) endpoint, and are independent of arrow direction. Values must be finite.
segmentPositionsarray of number
OutputFrequencyType#
LINEARFrequency in Hertz.
ANGULARFrequency in radians per second.
NORMALIZED_LINEARNormalized frequency, in the range [0, 0.5] for real-valued signals.
NORMALIZED_ANGULARNormalized angular frequency, in the range [0, π] for real-valued signals.
OutputPhaseUnit#
RADIANS
DEGREES
OutputRangeStart#
Set type to the name of one of the other fields, and set only that field.
firstPointMatchingConditionFirstPointMatchingConditionThe first point in the output range will be the first point where the condition evaluates to true.
afterPersistenceWindowAfterPersistenceWindowThe output range will contain points where the condition has been true for at least the min duration and min points.
OverlayScope#
ROW
PANEL
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.
inputRangeSeriesrequired
paddingDurationConstantrequired
paddingConfigurationRangePaddingConfigurationConfiguration 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.
inputRangeSeriesrequired
durationcompute.api.DurationrequiredHow far to extend each range on every padded side.
paddingConfigurationRangePaddingConfigurationrequired
Panel#
Set type to the name of one of the other fields, and set only that field.
vizVizPanel
chartChartPanel
emptyEmptyPanel
splitSplitPanel
tabbedTabbedPanel
canvasCanvasLayout
documentDocumentLayout
analystAnalystLayout
PanelBucketStrategy#
Set type to the name of one of the other fields, and set only that field.
autoPanelBucketStrategyAuto
fixedPanelBucketStrategyFixed
durationPanelBucketStrategyDuration
PanelBucketStrategyAuto#
An empty JSON object, {}.
PanelBucketStrategyDuration#
durationUserDurationrequired
PanelBucketStrategyFixed#
bucketCountinteger required
PanelTimeRange#
Panel’s time range, either a literal time range or a time range input.
Set type to the name of one of the other fields, and set only that field.
inputstring (UUID)
literalLiteralTimeRange
PeakDetectionMode#
POSITIVE
NEGATIVE
MEAN
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.
inputNumericSeriesrequired
returnsPeaksboolean deprecatedTrue if returning peaks, else troughs. Deprecated: No longer used, use returnType instead
returnTypePeakTypeOptional for backcompatibility.
minimumProminenceDoubleConstantThe 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.
valueDoubleConstantrequiredAllowed spread, as a percentage of the window’s mean value.
Percentile#
The value at the specified percentile.
percentileDoubleConstantrequiredPercentile to compute, in range [0, 1]. E.g. 0.5 for median, 0.95 for p95.
PeriodogramMethod#
WELCH_BLACKMAN
WELCH_HANN
WELCH_HAMMING
WELCH_RECT
PerRowFloatingLegends#
Show a separate floating legend for the series in each row of the chart.
positionFloatingLegendPositionPosition of the floating legend in the chart. If undefined, defaults to preset BOTTOM_LEFT.
PersistAll#
An empty JSON object, {}.
PersistByValue#
valuesarray of string
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.
minPointsIntegerConstantThe 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.
minDurationDurationConstantThe 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.
outputRangeStartOutputRangeStartrequiredWhich point to use as the start of the output range. Defaults to firstPointMatchingCondition if not specified.
PersistValueOverlay#
Set type to the name of one of the other fields, and set only that field.
byValuePersistByValue
allPersistAll
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.
inputNumericSeriesrequired
periodDoubleConstantrequiredThe wrapping period of the signal (e.g. 2*pi for radians, 360 for degrees). A jump between consecutive samples greater than
period/2in magnitude is corrected by adding/subtracting a whole multiple ofperiod.
PhysicalConstant#
Physical constants referenceable by name. The server resolves the symbol to its numeric value in SI units.
SPEED_OF_LIGHTSpeed of light in vacuum, 299792458 m/s (exact).
AVOGADROAvogadro constant, 6.02214076e23 mol^-1 (exact).
BOLTZMANNBoltzmann constant, 1.380649e-23 J/K (exact).
PLANCKPlanck constant, 6.62607015e-34 J*s (exact).
ELEMENTARY_CHARGEElementary charge, 1.602176634e-19 C (exact).
GAS_CONSTANTMolar gas constant, 8.31446261815324 J/(mol*K) (exact, Avogadro times Boltzmann).
STANDARD_GRAVITYStandard acceleration of gravity, 9.80665 m/s^2 (exact by convention).
STANDARD_ATMOSPHEREStandard atmosphere, 101325 Pa (exact by convention).
ABSOLUTE_ZERO_CELSIUSAbsolute zero expressed in degrees Celsius, -273.15 (exact).
GRAVITATIONAL_CONSTANTNewtonian constant of gravitation, 6.67430e-11 m^3/(kg*s^2) (CODATA 2022, measured).
STEFAN_BOLTZMANNStefan-Boltzmann constant, 5.670374419e-8 W/(m^2*K^4) (exact derived).
PinnedModuleVersionReference#
versionStringConstantrequired
PlotColoringConfiguration#
Set type to the name of one of the other fields, and set only that field.
rowIndependentRowIndependentPlotColoringConfigurationSeries plotted on each row is colored independently of series in other rows.
rowSharedRowSharedPlotColoringConfigurationSeries plotted on each row will be colored using the same order of colors as the plots in the other rows in the panel.
PlotlyPanelDefinition#
Set type to the name of one of the other fields, and set only that field.
PlotlyPanelDefinitionV1#
titlestring
presetPlotlyPresetA preset that will render a nominal-defined plotly figure with minimum necessary inputs
figureFigurerequiredThe plotly instance definition, with extra fields for nominal-specific inputs
PlotlyPreset#
SCATTER_3D
PolynomialCurve#
degreeIntegerConstantrequiredThe highest allowable degree of the fit polynomial.
interceptDoubleConstantThe 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).
independentVariableCurveFitVariablerequiredThe
xaxis the target is fit against — either relative sample time or another series.degreeIntegerConstantrequiredThe highest allowable degree of the fit polynomial.
interceptDoubleConstantThe y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.
Position#
TOP
BOTTOM
Power#
Raises base to the power of exponent pointwise.
baseNumericSeriesrequiredBase values.
exponentNumericSeriesrequiredExponent values.
PowerCurve#
An empty JSON object, {}.
Priority#
P0
P1
P2
P3
P4
ProcedureVizDefinition#
Set type to the name of one of the other fields, and set only that field.
ProcedureVizDefinitionV1#
titlestring
executionRidstring (RID)
ProcedureVizDefinitionV2#
titlestring
procedureProcedureVizIdA workbook can save either an execution or a template. Workbook templates should only use the latter.
ProcedureVizId#
Set type to the name of one of the other fields, and set only that field.
executionRidstring (RID)
templateRidstring (RID)
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.
inputsarray ofNumericSeriesInput series across which to take the pointwise product
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.
PropertiesFilter#
namestring required
valuesarray of string
PropertyComparisonOperator#
EQ
NEQ
GT
GTE
LT
LTE
PsdDisplayMode#
AVERAGE
MAX
MIN
MIN_MAX_ENVELOPE
NONE
Pump#
The pump type, with type-specific configuration.
Set type to the name of one of the other fields, and set only that field.
standardStandardPump
PumpVizDefinition#
Set type to the name of one of the other fields, and set only that field.
PumpVizDefinitionV1#
titlestringThe label displayed on the pump.
pumpPumprequiredThe pump variation to render, with variation-specific configuration.
feedbackVariableNamestring requiredWorkbook channel variable providing the pump feedback.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
Range#
Deprecated for new APIs. Define an API-owned range with the endpoint semantics it needs instead.
RangeAggregationContext#
variablesToAggregatearray ofVariableWithAggregation
RangeAggregationDefinition#
Every range aggregation must be defined by a data scope and set of conditions. This type should be used by every comparison workbook viz definition.
dataScopeComparisonWorkbookDataScoperequired
conditioncomparisonnotebook.api.ComputeNodeWithContextrequired
timeWindowTimeWindowdetermines the window of data included in the visualization. Currently only applied on assets.
RangeAggregationOperation#
Set type to the name of one of the other fields, and set only that field.
sumSummation
rootMeanSquarecompute.api.RootMeanSquare
averageAverage
minMinimum
maxMaximum
standardDeviationcompute.api.StandardDeviation
countcompute.api.Count
allEmpty
RangeCellConfig#
visualisationRangeValueVisualisation
groupBySortRangeGroupBySortSorting configuration for grouped data rendering in a cell. If undefined, will sort alphabetically by grouping.
RangeDurationSeries#
Outputs a numeric series with one point per range: timestamp = range start, value = range duration.
inputRangeSeriesrequired
unboundedRangeBehaviorUnboundedRangeBehaviorrequiredHow to handle ranges with a missing start or end.
timeUnitTimeUnitThe time unit of the duration. Defaults to seconds if not specified.
RangeGroupBySort#
Set type to the name of one of the other fields, and set only that field.
valueValueSort
RangeIntervalSource#
Intervals come from a range series. Must resolve to literal ranges.
rangesRangeSeriesrequired
tagByarray ofRangeTagSourceNon-empty ordered list of tag sources. Each contributes a tag key-value pair per range interval.
RangeMap#
startDoubleConstantInclusive start value. If not specified, the start is the prior range’s end value, or negative infinity.
endDoubleConstantExclusive end value. If not specified, the end value is the next range’s start value, or positive infinity.
outputStringConstantrequiredThe value to map to if the input value is within the range.
RangePaddingConfiguration#
PAD_START
PAD_END
PAD_START_AND_END
RangeRawVisualisation#
The settings for a raw range visualisation.
rangeColorstring
rangeLabelstringThe string to display when the condition defined by the variable’s function spec is met.
noRangeColorstring
noRangeLabelstringThe string to display when the condition defined by the variable’s function spec is not met.
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.
rangesRangeSeriesrequiredThe range series evaluated per interval to locate the anchor range.
indexIntegerConstantZero-based range index after sorting. Defaults to zero and must be non-negative.
sortOrderRangeSortOrderOrdering 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.
approximateThresholdApproximateThresholdRanges
booleanRangesBooleanRanges
thresholdRangesV2ThresholdRangesV2
durationFilterDurationFilterRanges
durationFilterV2DurationFilterRangesV2
enumFilterEnumFilterRanges
categoryFilterRangesV2CategoryFilterRangesV2
categoricalOnChangeRangesV2CategoricalOnChangeRangesV2
categoricalStaleRangesV2CategoricalStaleRangesV2
categoricalEqualityRangesV2CategoricalEqualityRangesV2
enumSeriesEqualityRangesNodeEnumSeriesEqualityRanges
eventsSearchEventsSearchRanges
intersectRangeIntersectRanges
literalRangesLiteralRanges
minMaxThresholdMinMaxThresholdRangesComputes ranges where the input time series matches a filter defined by lower and upper bounds, and an operator.
notNotRanges
onChangeOnChangeRanges
peakPeakRanges
extremaRangesV2ExtremaRangesV2
rangeNumericAggregationRangesNumericAggregation
rawReference
derivedDerivedSeries
seriesCrossoverRangesNodeSeriesCrossoverRanges
seriesEqualityRangesNodeSeriesEqualityRanges
numericEqualityRangesV2NumericEqualityRangesV2
stabilityDetectionStabilityDetectionRanges
stabilityDetectionV2StabilityDetectionRangesV2
staleRangeStaleRanges
numericStaleRangesV2NumericStaleRangesV2
thresholdThresholdingRangesComputes ranges where the input time series matches a filter defined by a single threshold and an operator.
unionRangeUnionRanges
paddedRangesPaddedRanges
paddedRangesV2PaddedRangesV2
RangesNumericAggregation#
Aggregates the values of a numeric series at each range specified by the input ranges.
rangesRangeSeriesrequired
inputNumericSeriesrequired
operationRangeAggregationOperationrequired
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
RangeValueChannel#
variableNamestring required
visualisationRangeValueVisualisationrequired
RangeValueVisualisation#
Set type to the name of one of the other fields, and set only that field.
RectangleShape#
An empty JSON object, {}.
Reference#
namestring requiredA 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.
inputsmap of string toNumericSeriesA map that maps a REFPROP property to its numeric series.
outputPropertyRefpropPropertyrequiredThe desired output property. This should not be one of the input properties.
substanceRefpropSubstancerequiredThe substance for REFPROP calculations.
interpolationConfigurationInterpolationConfigurationdeprecatedDeprecated: Setting interpolation on this node is deprecated.
RefpropSeriesV2#
Computes a REFPROP output property from the supplied substance and output property.
inputsmap of string toNumericSeriesMap of REFPROP property to its numeric series.
substanceRefpropSubstancerequiredThe substance for REFPROP calculations.
outputPropertyRefpropPropertyrequiredThe 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
RegulatorVizDefinition#
Set type to the name of one of the other fields, and set only that field.
RegulatorVizDefinitionV1#
titlestringThe label displayed on the regulator.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
ReliefValve#
A pressure relief valve, rendered with the relief valve symbol. Shows feedback only; it is not commandable.
feedbackValveFeedbackLive open/closed state. Absent renders unknown.
ResourceSearchQuery#
Predicate tree for filtering.
Set type to the name of one of the other fields, and set only that field.
propertiesPropertiesFilter
numericPropertyNumericPropertyPredicate
numericPropertyRangeNumericPropertyRangePredicateMatches resources using an inclusive numeric property range.
labelsLabelsFilter
workspaceStringConstant
andarray ofResourceSearchQuery
orarray ofResourceSearchQuery
notResourceSearchQuery
rids.api.Property#
nameStringConstantrequired
valueStringConstantrequired
RollingOperationSeries#
DEPRECATED. Use numericAggregation with aggregation.RollingTimeAggregationBuilder instead.
inputNumericSeriesrequired
windowWindowrequired
operatorNumericAggregationOperatorrequired
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.
inputSeriesrequired
pointsIntegerConstantrequired
RollingTimeAggregationBuilder#
Rolling time-window aggregation: for each point in the input, aggregate the values within the preceding time window.
inputSeriesrequired
windowcompute.api.Durationrequired
RowIndependentPlotColoringConfiguration#
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.
ridStringConstantrequiredResource identifier of a run
run.api.Duration#
secondsinteger (int64) required
nanosinteger (int64) required
RunAlignment#
An offset that is defined relative to a target run.
alignToRunAlignTorequired
targetRunRidstring (RID) required
RunAlignTo#
The align to value for a run offset.
START
END
RunChannel#
runRidStringConstantrequired
assetRidStringConstantUsed 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.
dataScopeNameStringConstantrequiredUsed to disambiguate when multiple data scopes within this run contain channels with the same name.
channelStringConstantrequired
additionalTagsmap of string toStringConstantdeprecatedDeprecated: Use additionalTagFilters
additionalTagFiltersTagFiltersTags 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.
tagsToGroupByarray of string deprecatedDeprecated: Use groupByTags instead. Throws if both tagsToGroupBy and groupByTags are specified.
groupByTagsarray ofStringConstantTags 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.
RunDataScopeInputValue#
A run data scope input value.
runRidstring (RID) required
RunListDataScopeInputValue#
A data scope input value resolving to an explicit list of runs.
runRidsarray of string (RID)
RunOffset#
An offset that can be applied to a run.
offsetworkbookcommon.api.Offset
assetsmap ofAssetRidtoAssetOffset
RunQueryDataScopeInputValue#
A data scope input value resolving to the runs matching a search query.
queryResourceSearchQueryrequired
RunSettings#
offsetUserDuration
assetSettingsmap ofAssetRidtoAssetSettings
RunsFilter#
operatorSetOperatorrequired
runsarray of string (RID)
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.
queryResourceSearchQueryrequiredPredicate tree used to filter matching runs.
RustUdfSource#
Rust source code defining the UDF entrypoint and any helper functions.
sourceCodestring requiredRust 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].
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.
everyNthPerSeriesEveryNthPerSeriesSampling
hashSubsampleHashSubsampleSampling
SavedDataset#
A persisted source of data, named by its RID. Can be a catalog dataset, pipeline, connection, etc.
ridStringConstantrequiredA 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.
ScaleSeries#
For every timestamp specified in the input series, multiply it by a constant factor.
inputNumericSeriesrequired
scalarDoubleConstantrequiredThe constant to multiply each point by
scalarUnitstringThe 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.
xNumericSeriesrequired
yNumericSeriesrequired
Scatter3dDecimationStrategy#
SPATIAL
TEMPORAL
Scatter3dTraceComputeConfig#
decimationStrategyScatter3dDecimationStrategyBucket computed data points by their proximity in space or in time
ScatterCurveFit#
Fits a curve to the scatter between two series.
scatterScatterrequiredThe x and y series to fit to.
optionsScatterFitOptionsrequired
ScatterDecimation#
Set type to the name of one of the other fields, and set only that field.
temporalTemporalDecimation
spatialSpatialDecimation
ScatterFitOptions#
minXDoubleConstantInclusive 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).
maxXDoubleConstantInclusive 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).
minYDoubleConstantInclusive 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).
maxYDoubleConstantInclusive 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).
ScatterPlotValueAxes#
specifies the axes configurations for a given x and y axis.
SearchDataset#
Resolves matching assets or runs from search, creating a combined dataset tagged by source rid and data scope.
targetSearchTargetrequiredWhether to search assets or runs and with which query.
maxResultsintegerMaximum number of assets or runs returned from search. Defaults to 10000 when omitted.
SearchNotebooksQuery#
Set type to the name of one of the other fields, and set only that field.
andarray ofSearchNotebooksQuery
orarray ofSearchNotebooksQuery
notSearchNotebooksQuery
exactMatchstringPerforms case insensitive exact match search on the title.
searchTextstring
labelstring deprecatedDeprecated: use labels
labelsLabelsFilter
propertynominal.api.PropertydeprecatedDeprecated: use properties
propertiesPropertiesFilter
assetRidstring (RID) deprecatedDeprecated: use assetRids
assetRidsapi.AssetsFilter
exactAssetRidsarray of string (RID)Requires the set of assets in the query to exactly match the set of assets in the notebook. To do a partial match, use an assetRids query.
authorRidstring (RID)
runRidstring (RID) deprecatedDeprecated: use runRids
runRidsRunsFilter
notebookTypeNotebookTypedeprecatedDeprecated: use notebook types
notebookTypesNotebookTypesFilter
draftStateboolean
archivedboolean
workspacestring (RID)
authorIsCurrentUserboolean
authorRidsarray of string (RID)
SearchQuery#
Set type to the name of one of the other fields, and set only that field.
archivedboolean
searchTextstringSearch text to perform fuzzy searching against.
exactMatchstringSearch text to perform exact matching against on the event name and description.
afterTimestampFilters to events after this timestamp, exclusive. This includes events that start before, but end after this time.
beforeTimestampFilters to events before this timestamp, exclusive. This includes events that start before, but end after this time.
advancedTimeFilterevent.EventTimeFilter
assetstring (RID) deprecatedDeprecated: use assetRids
assetsevent.AssetsFilter
templatestring (RID)
workbookstring (RID)
dataReviewstring (RID) deprecatedDeprecated: use dataReviews instead
dataReviewsDataReviewsFilter
originTypeevent.SearchEventOriginTypedeprecatedDeprecated: use originTypes instead
originTypesOriginTypesFilter
dataReviewCheckstring (RID) deprecatedDeprecated: use dataReviewChecks instead
dataReviewChecksDataReviewChecksFilter
dispositionStatusevent.EventDispositionStatusdeprecatedDeprecated: use dispositionStatuses instead
dispositionStatusesarray ofevent.EventDispositionStatus
priorityPrioritydeprecatedDeprecated: use priorities instead
prioritiesarray ofPriority
assigneestring (RID) deprecatedDeprecated: use assignees instead
assigneesAssigneesFilter
eventTypeevent.EventTypedeprecatedDeprecated: use eventTypes instead
eventTypesarray ofevent.EventType
createdBystring (RID)
createdByAnyOfarray of string (RID)
labelstring deprecatedDeprecated: use labels instead
labelsLabelsFilter
propertynominal.api.PropertydeprecatedDeprecated: use properties instead
propertiesPropertiesFilter
andarray ofSearchQuery
orarray ofSearchQuery
notSearchQuery
workspacestring (RID)
procedurestring (RID)
procedureExecutionstring (RID)
stepIdstring
streamingCheckliststring (RID)Filters to events created from a checklist executing in streaming. Use
assetsto further filter to a specific streaming checklist instance.streamingCheckstring (RID)Filters to events created from the check of a checklist executing in streaming. Use
assetsto further filter to a specific streaming checklist instance.numericPropertyNumericPropertyPredicateMatches events using a numeric property comparison.
numericPropertyRangeNumericPropertyRangePredicateMatches events using an inclusive numeric property range.
SearchTarget#
Set type to the name of one of the other fields, and set only that field.
assetsAssetsSearchTarget
runsRunsSearchTarget
SecondaryVariable#
A secondary variable to associate with a trace
variableNamestring required
labelstring
enabledbooleanDefault true
visualizationOptionSecondaryVariableOptions
SecondaryVariableOptions#
Specifies how values of a secondary channel should be visualized.
Set type to the name of one of the other fields, and set only that field.
asColorsValueToColorMap
SelectedTabStatsPanelScope#
An empty JSON object, {}.
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.
inputEnum1dArraySeriesrequired
indexIntegerConstantrequired
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.
inputNumeric1dArraySeriesrequired
indexIntegerConstantrequired
SelectNewestPointsSeries#
Select the most recent N points from the input series by timestamp.
inputNumericSeriesrequiredThe input series to select the newest points from.
numPointsIntegerConstantrequiredThe number of points to select.
SelectOldestPointsSeries#
Select the earliest N points from the input series by timestamp.
inputNumericSeriesrequiredThe input series to select the oldest points from.
numPointsIntegerConstantrequiredThe 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.
propertyNamestring required
datasetDataset
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.
nameStringConstantThe identifying series name to query
datasetDatasetThe dataset providing the data to query. May be omitted inside a
WithSeriesDatasetseries definition, in which case it defaults to that node’s wrappinginput; required everywhere else.samplingSamplingRaw-series sampling options. Supported for numeric and enum raw series.
SendCommandsAction#
commandsarray ofVizCommandThe commands to send when the action is activated. Must be non-empty and contain at most 32 entries. Translated at activation time into a command service SendCommands request.
Series#
Set type to the name of one of the other fields, and set only that field.
rawReferencedeprecatedDeprecated: use typed value of series instead.
enumEnumSeries
numericNumericSeries
logLogSeries
arrayArraySeries
structStructSeries
videoReference
SeriesCrossoverRanges#
Produces a list of zero-duration ranges at the first point where two series cross over one another
inputANumericSeriesrequired
inputBNumericSeriesrequiredThe series
inputAis compared against.
SeriesEqualityRanges#
Produces a list of ranges for which provided series are all equal (or are not all equal).
inputarray ofNumericSeries
equalityOperatorEqualityOperatorrequired
toleranceDoubleConstant
persistenceWindowConfigurationPersistenceWindowConfiguration
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults 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.
selectSelectSeriesrequired
groupByTagsarray ofStringConstantTags 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
Shape#
Set type to the name of one of the other fields, and set only that field.
rectangleRectangleShape
ellipseEllipseShape
triangleTriangleShape
ShapeVizDefinition#
Set type to the name of one of the other fields, and set only that field.
ShapeVizDefinitionV1#
titlestring
shapeShapeThe shape to render, with shape-specific configuration.
fillColorstring
textstringText rendered inside the shape. Absent means no text. The client picks the text color, and whether the shape needs an edge to stay visible, from the fill color and its own theme; neither is stored.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
SignalFilterConfiguration#
Set type to the name of one of the other fields, and set only that field.
lowPassLowPassConfiguration
highPassHighPassConfiguration
bandPassBandPassConfiguration
bandStopBandStopConfiguration
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.
inputNumericSeriesrequired
signalFilterConfigurationSignalFilterConfigurationrequiredFilter type and cutoff frequencies.
orderIntegerConstantrequiredOrder of filter. Must be a positive integer, and is effectively doubled for bidirectional filters.
samplingFrequencyDoubleConstantThe 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).
xNumericSeriesrequiredInput numeric series (radians).
SingleTab#
Set type to the name of one of the other fields, and set only that field.
v1SingleTabV1
SingleTabV1#
titlestring required
panelPanelrequired
SinkBoundary#
An empty JSON object, {}.
SnapshotSummary#
ridstring (RID) required
notebookRidstring (RID) required
authorRidstring (RID) required
createdAtstring (date-time) required
snapshotMessagestringDescribes what the save changed. Absent on snapshots written before messages were recorded, and on saves that do not supply one.
SolidInstrumentDivider#
An empty JSON object, {}.
SolidStrokeStyle#
An empty JSON object, {}.
SortBy#
isDescendingboolean required
fieldSortByFieldrequired
SortByField#
NAME
CREATED_AT
UPDATED_AT
SourceBoundary#
An empty JSON object, {}.
SpatialAppearanceColoring#
Coloring strategy for a spatial point cloud.
Set type to the name of one of the other fields, and set only that field.
matCapSpatialAppearanceColoringMatCap
solidSpatialAppearanceColoringSolid
geometrySpatialAppearanceColoringGeometry
gradientSpatialAppearanceColoringGradient
attributeRgbSpatialAppearanceColoringAttributeRgb
SpatialAppearanceColoringAttributeRgb#
Color each point using per-point RGB attribute values.
attributestring requiredName of the per-point attribute that encodes color (e.g. “rgb”).
SpatialAppearanceColoringGeometry#
Color by a per-point scalar attribute mapped through a colormap.
attributestring requiredName of the per-point attribute to ramp (e.g. “intensity”).
colormapSpatialColorMaprequired
rangeMinnumberColormap lower bound; omit to use the attribute’s data minimum.
rangeMaxnumberColormap upper bound; omit to use the attribute’s data maximum.
SpatialAppearanceColoringGradient#
Color by world-space position along a cardinal axis using a colormap.
axisSpatialColorAxisrequired
colormapSpatialColorMaprequired
extentsSpatialGradientExtentsrequired
SpatialAppearanceColoringMatCap#
Color using a baked matcap texture from the renderer’s atlas.
nameSpatialMatcaprequired
SpatialAppearanceColoringSolid#
Uniform solid color for all points.
rinteger required
ginteger required
binteger required
ainteger required
SpatialColorAxis#
Cardinal axis used for gradient coloring.
X
Y
Z
SpatialColoring#
How to color spatial geometry for display.
Set type to the name of one of the other fields, and set only that field.
geometryAxisSpatialColoringGeometryAxis
solidstringSingle solid color for all points (hex).
SpatialColoringGeometryAxis#
Color by world-space position along an axis direction using a named colormap.
axisVec3drequired
colormapSpatialColorMaprequired
dataMinnumberColor ramp lower bound; omit for renderer default.
dataMaxnumberColor ramp upper bound; omit for renderer default.
SpatialColorMap#
Named perceptually uniform scales (matplotlib-style set plus TURBO).
MAGMA
INFERNO
PLASMA
VIRIDIS
CIVIDIS
TURBO
SpatialDecimation#
Bucket points together by proximity in value.
An empty JSON object, {}.
SpatialGradientExtents#
Whether the gradient ramp spans one model or the whole scene.
LOCAL
GLOBAL
SpatialMatcap#
One of the baked matcaps in the volumesight atlas.
SOAP
SILVER
GOLD
PLASTIC
TILE
VIOLET_CHROME
TRAFFIC_CONE
EMERALD
AMETHYST
BLUE_PAINT
RED_CAR
BEETLE
BUBBLE
PEARL
WAX
MARBLE
SpatialSplatMode#
Shape rendered for each point in the cloud.
BALL
PARABOLIC
DISC
SpatialTimeBinding#
Drives point-cloud visibility from the workbook playhead. When enabled, only points with a time attribute value ≤ the mapped playhead position are shown, revealing the cloud progressively as the playhead advances.
enabledboolean required
attributestring requiredName of the per-point attribute that encodes time (e.g. “timestamp”).
unitSpatialTimeUnitrequired
relativeStartUsinteger (int64)User-supplied start of the point cloud’s time range in µs. Used as a fallback when the ingest pipeline has not yet populated the spatial asset’s relative_start_us property.
relativeEndUsinteger (int64)User-supplied end of the point cloud’s time range in µs. Used as a fallback when the ingest pipeline has not yet populated the spatial asset’s relative_end_us property.
timeWindowSpatialTimeWindowControls which returns are visible relative to the playhead. Defaults to accumulated.
SpatialTimeUnit#
Unit that the per-point time attribute is stored in.
NS
US
MS
S
SpatialTimeWindow#
Controls which point cloud returns are visible relative to the playhead.
Set type to the name of one of the other fields, and set only that field.
accumulatedSpatialTimeWindowAccumulated
trailingSpatialTimeWindowTrailing
symmetricSpatialTimeWindowSymmetric
SpatialTimeWindowAccumulated#
All returns from the scan origin through the playhead.
An empty JSON object, {}.
SpatialTimeWindowSymmetric#
Returns within halfWidthSec seconds of the playhead in each direction.
halfWidthSecnumber required
SpatialTimeWindowTrailing#
The most recent durationSec seconds of returns leading up to the playhead.
durationSecnumber required
SpatialVolumetricFilter#
Visibility filter applied to points before rendering.
Set type to the name of one of the other fields, and set only that field.
noneSpatialVolumetricFilterNone
valueRangeSpatialVolumetricFilterValueRange
stringEqualsSpatialVolumetricFilterStringEquals
SpatialVolumetricFilterNone#
No filter — all points are visible.
An empty JSON object, {}.
SpatialVolumetricFilterStringEquals#
Show only points whose attribute value equals a given string.
attributestring required
valuestring required
SpatialVolumetricFilterValueRange#
Show only points whose attribute value falls within [min, max].
attributestring required
minnumber required
maxnumber required
SplitPanel#
Set type to the name of one of the other fields, and set only that field.
v1SplitPanelV1
SplitPanelOrientation#
HORIZONTAL
VERTICAL
SplitPanelV1#
idstring required
orientationSplitPanelOrientationrequired
sideOnePanelrequired
sideTwoPanelrequired
Sqrt#
Computes the square root of each value.
xNumericSeriesrequiredInput 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.
inputNumericSeriesrequired
windowConfigurationStabilityWindowConfigurationrequired
thresholdcompute.api.Thresholdrequired
StabilityDetectionRangesV2#
Produces ranges where a numeric input is stable within a modern duration window.
inputNumericSeriesrequired
windowcompute.api.DurationrequiredLookback window over which the input’s spread is measured.
minPointsIntegerConstantMinimum number of points in the window. Defaults to 2.
thresholdcompute.api.Thresholdrequired
StabilityWindowConfiguration#
minPointsIntegerConstantThe minimum number of points within the window to create a stable range. Must be non-negative. If not present, will default to 2.
durationDurationConstantrequired
StalenessCellConfig#
visualisationStalenessVisualisation
groupBySortNumericGroupBySortSorting configuration for grouped data rendering in a cell. If undefined, will sort alphabetically by grouping.
StalenessConfiguration#
thresholdrun.api.DurationrequiredThe duration above which points are considered stale. By default this is 1 second.
connectStalePointsboolean requiredWhether or not to visually connect stale points, i.e. points whose distance exceeds that of the configured threshold. By default this is true.
StalenessVisualisation#
Set type to the name of one of the other fields, and set only that field.
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.
inputSeriesrequired
thresholdDurationConstantrequired
startTimestampTimestampConstantThe start timestamp of the range. If not specified, staleness will automatically use view range start.
endTimestampTimestampConstantdeprecatedDeprecated: No longer used and will be removed
StandardPump#
An empty JSON object, {}.
StandardValve#
normalPositionValveNormalPositionThe valve’s position when not powered, which determines the symbol rendered. Absent is treated as normallyClosed.
feedbackValveFeedbackLive open/closed state. Absent renders unknown.
commandingValveCommandingThe valve’s command menu. Absent means the valve is not commandable.
StftOptions#
Options for frequency analyses that are backed by short-time Fourier transforms.
windowFftWindowWindow function type to use
windowSymmetryWindowSymmetryEither DFT_EVEN or SYMMETRIC
samplingFrequencynumberSampling frequency of the series in Hz. If absent, will calculate using the input series.
npersegintegerNumber of points per window segment.
noverlapintegerNumber of points of overlap between windows. Must be less than nperseg.
nfftintegerNumber of points to use in the FFT. Must be greater than or equal to nperseg.
detrendDetrendTypeDetrend the points in each window segment. If absent, will use the default detrend for that function.
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.
literalstringCreate from a literal string value.
variablestringCreate 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.
propertyNameStringConstantrequiredName 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.
literalarray of string
variablestring
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.
literalarray ofStringConstantCreate from a literal set of string constants.
variablestringCreate from a named reference.
StructCellConfig#
visualisationStructVisualisation
StructRawVisualisation#
A raw struct visualisation (renders the JSON as-is)
An empty JSON object, {}.
StructSeries#
Set type to the name of one of the other fields, and set only that field.
channelChannelSeries
rawReference
derivedDerivedSeries
combineCombineStructSeries
selectStructSelectSeries
extractFromStructExtractStructFromStructSeries
toStartOfIntervalStructToStartOfIntervalSeries
timeShiftStructTimeShiftSeries
filterByTagStructTagFilterSeries
selectTagsStructSelectTagsSeries
StructTagFilterSeries#
Applies a tag predicate to the struct series produced by input.
inputStructSeriesrequired
predicateTagPredicaterequired
StructTimeShiftSeries#
inputStructSeriesrequired
durationDurationConstantrequired
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.
inputStructSeriesrequired
windowcompute.api.Durationrequired
StructVisualisation#
Set type to the name of one of the other fields, and set only that field.
Subtract#
Subtracts right from left pointwise.
leftNumericSeriesrequiredLeft-hand operand (minuend).
rightNumericSeriesrequiredRight-hand operand (subtrahend).
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.
inputsarray ofNumericSeriesInput series across which to take the pointwise sum
interpolationConfigurationInterpolationConfigurationdeprecatedDefaults to forward fill interpolation with a 1s interpolation radius Deprecated: Setting interpolation on this node is deprecated.
SupplementalComparisonWorkbookContext#
This is used to allow variables to specify additional context that does not fit well into the general shape of a compute node. For example, a range aggregation variable represents a bulk computation across several inputs, whose context is specified here instead.
Set type to the name of one of the other fields, and set only that field.
noneEmpty
rangeAggregationRangeAggregationContext
TabbedPanel#
Set type to the name of one of the other fields, and set only that field.
v1TabbedPanelV1
TabbedPanelV1#
idstring required
tabsarray ofSingleTab
TableColumn#
namestring required
typedConfigTableColumnTypedConfig
columnWidthnumber
TableColumnEnumAggregation#
Set type to the name of one of the other fields, and set only that field.
firstNoConfigAggregation
lastNoConfigAggregation
allDistinctNoConfigAggregation
countDistinctNoConfigAggregation
valueCountsNoConfigAggregation
TableColumnEnumConfig#
aggregationTableColumnEnumAggregationrequired
summaryRowAggregationTableColumnEnumAggregation
TableColumnLogAggregation#
Set type to the name of one of the other fields, and set only that field.
countNoConfigAggregation
TableColumnLogConfig#
aggregationTableColumnLogAggregationrequired
summaryRowAggregationTableColumnLogAggregation
visibleLogFieldsarray of string
tagFiltersLogColumnTagFilters
TableColumnNumericAggregation#
Set type to the name of one of the other fields, and set only that field.
firstNoConfigAggregation
lastNoConfigAggregation
meanNoConfigAggregation
minNoConfigAggregation
maxNoConfigAggregation
stddevNoConfigAggregation
countNoConfigAggregation
TableColumnNumericConfig#
aggregationTableColumnNumericAggregationrequired
summaryRowAggregationTableColumnNumericAggregation
numberFormatNumberFormatOptional per-column number formatting. If unset, the panel-level default formatting is used.
indicatorTableColumnNumericIndicatorHow a numeric cell visualises its value beyond the number itself. If unset, the default is bars.
thresholdsarray ofchartdefinition.api.ThresholdColors the cell with the highest threshold whose value the displayed value equals or surpasses. Values below every threshold are left uncolored. Only read when indicator is color, but kept when the indicator changes so switching back restores them.
TableColumnNumericIndicator#
Bars scales a comparison bar to the column’s displayed range, color paints the cell from the column’s thresholds, and none shows only the number.
Set type to the name of one of the other fields, and set only that field.
noneNoConfigIndicator
barsNoConfigIndicator
colorNoConfigIndicator
TableColumnRangeAggregation#
Set type to the name of one of the other fields, and set only that field.
percentTrueNoConfigAggregation
allDistinctNoConfigAggregation
valueCountsNoConfigAggregation
TableColumnRangeConfig#
aggregationTableColumnRangeAggregationrequired
summaryRowAggregationTableColumnRangeAggregation
TableColumnTypedConfig#
Any configuration that is specific to the type in question
Set type to the name of one of the other fields, and set only that field.
numericTableColumnNumericConfig
enumTableColumnEnumConfig
rangeTableColumnRangeConfig
logTableColumnLogConfig
Tag#
A tag input contains tag key and tag value information that can apply to a channel’s compute tree. Applies the tag to both the tag filter and tag group by fields of the series node in the compute tree.
TagAnd#
Conjunction of two tag predicates (both must hold).
leftTagPredicaterequired
rightTagPredicaterequired
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.
inputNumericSeriesrequired
intervalsIntervalSourcerequired
timeShiftTagByIntervalsTimeShiftWhen 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.
intervalStartIntervalStartTimeShift
intervalEndIntervalEndTimeShift
eventTimeShiftEventTimeShift
TagDataScopeInputFilter#
Filters an input’s datasets by a tag key and set of values. The key and values can be literals or workbook variable references. For IN, the tag must match at least one value. For NOT_IN, it must not match any value.
idstring (UUID) requiredStable client-provided identifier for the filter.
keyStringConstantrequired
operatorTagFilterOperatorrequired
valuesarray ofStringConstantTag values to include or exclude. An empty set matches no datasets for either operator. Absent values impose no restriction and match all datasets.
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.
keyStringConstantrequired
valuesarray ofStringConstant
operatorTagFilterOperatorrequired
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.
singleTagFilter
andarray ofTagFilters
TaggedDataset#
Injects one ephemeral tag (key and value) onto the underlying dataset.
inputDatasetrequiredThe underlying dataset to tag.
keyStringConstantrequiredTag key to inject onto each series in the dataset.
valueStringConstantrequiredTag value to assign to the injected key.
TagIn#
Constrains a tag key to be in the given set of values.
keyStringConstantrequired
valuesStringSetConstantV2required
TagNotIn#
Constrains a tag key to not be in the given set of values.
keyStringConstantrequired
valuesStringSetConstantV2required
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.
Tan#
Computes the trigonometric tangent of each value (input in radians).
xNumericSeriesrequiredInput numeric series (radians).
Tank#
The tank type, with type-specific configuration.
Set type to the name of one of the other fields, and set only that field.
verticalVerticalTank
TankMarkerPosition#
LEFT
RIGHT
TankVizDefinition#
Set type to the name of one of the other fields, and set only that field.
TankVizDefinitionV1#
titlestringThe label displayed on the tank.
tankTankrequiredThe tank variation to render, with variation-specific configuration.
capacitynumber requiredFull-scale capacity of the tank gauge.
markerPositionTankMarkerPositionrequiredSide of the gauge the level marker renders on.
showMarkerLabelboolean requiredWhether the level marker renders its value label.
fillColorstring requiredFill color of the tank level.
feedbackVariableNamestring requiredWorkbook channel variable providing the tank level feedback.
TemporalDecimation#
Bucket points together by proximity in time.
An empty JSON object, {}.
TemporalSubunitsRelativeTimestampFormat#
Display relative timestamps as temporal subunits, such as 1h 20m 30s.
An empty JSON object, {}.
ThemeAwareImage#
lightstring (RID) required
darkstring (RID) required
ThresholdDisconnectedValues#
NOTE this is deprecated and will be translated to NeverConnectDisconnectedValues by the frontend. This option indicates the duration below which disconnected values will always be connected with a line.
typerun.api.Durationrequired
ThresholdingRanges#
Produces a list of ranges for which the threshold condition is satisfied.
inputNumericSeriesrequired
thresholdDoubleConstantrequired
operatorThresholdOperatorrequired
persistenceWindowConfigurationPersistenceWindowConfiguration
ThresholdLatch#
enabledboolean required
ThresholdLineStyle#
DOTTED
SOLID
NONE
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.
ThresholdRangesEqualityComparison#
An equality comparison against a numeric threshold, within an optional tolerance.
thresholdDoubleConstantrequiredThe value each input point is compared against.
toleranceDoubleConstantMaximum 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.
thresholdDoubleConstantrequiredThe value each input point is compared against.
ThresholdRangesV2#
Produces ranges where a numeric input satisfies a threshold comparison.
inputNumericSeriesrequired
minPointsIntegerConstantMinimum number of matching points. Defaults to 1.
minDurationcompute.api.DurationMinimum matching duration. Defaults to one nanosecond.
rangeStartRangeStartSelects whether the output begins at the first match or after persistence is satisfied.
comparisonThresholdRangesComparisonrequired
ThresholdShadingConfig#
Specifies how areas of a plot should be shaded in relation to the defined threshold lines. Will eventually include other shading configurations, like a buffer zone.
ABOVE
BELOW
NONE
ThrustChamberVizDefinition#
Set type to the name of one of the other fields, and set only that field.
ThrustChamberVizDefinitionV1#
titlestringThe label displayed on the thrust chamber.
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
TimeDifferenceSeries#
Outputs a new series where each value is the difference between the time of the current and previous points.
TimeRange#
Set type to the name of one of the other fields, and set only that field.
timeRangeV1TimeRangeV1
TimeRangeInput#
A time range input that can be applied to panel(s) Deprecated: use TimeRange instead.
labelstringThe label of the input for display purposes.
timeRangeRangerequired
timeRangeTypeWorkbookTimeRangeTyperequiredThe type of time range to use for the input.
TimeRangeType#
ABSOLUTE
RELATIVE
TimeRangeV1#
labelstring
timeLiteralTimeRangerequired
TimeSeriesChartDefinition#
Set type to the name of one of the other fields, and set only that field.
TimeSeriesChartDefinitionV1#
rowsarray ofTimeSeriesRow
comparisonRunGroupsarray ofComparisonRunGroup
eventsarray ofEventdeprecatedDeprecated: Please use the workbook’s eventRefs field instead.
titlestring
valueAxesarray ofValueAxis
thresholdsarray ofAxisThresholdVisualization
disconnectedValuesDisconnectedValueVisualizationdeprecatedDetermines when disconnected values should be connected. By default, they are always connected. Deprecated: Use stalenessConfiguration instead
stalenessConfigurationStalenessConfigurationDetermines when to draw lines between points. By default, the staleness threshold is 1s and stale points are connected.
connectingLineConfigurationConnectingLineConfigurationDetermines how to draw connecting lines between points. By default, uses forward fill/stair step connectors bounded by the staleness threshold.
markerAppearanceMarkerAppearanceDetermines how point markers are drawn on numeric plots. By default, uses full-size markers.
plotColoringConfigurationPlotColoringConfigurationConfiguration for coloring time series plots in this chart. By default, plots are colored independently between rows with a unique color if possible when created.
anchorPointTimestampOptional anchor point for fixed bucket alignment. When set, buckets align to this time instead of the viewport start.
bucketStrategyPanelBucketStrategyCustom bucket size to use when loading data.
floatingLegendsConfigFloatingLegendConfigConfig for showing floating legends in the chart. If undefined, defaults to hiding.
bucketDisplayConfigBucketDisplayConfigControls how decimated bucket data is displayed (e.g. show mean, min, max, count, sum, or a specific percentile). If undefined, defaults to BucketDisplayConfigDefault.
TimeSeriesCurveFit#
Fits a curve to a series vs its timestamps.
seriesNumericSeriesrequiredThe 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.
optionsTimeSeriesFitOptionsrequired
TimeSeriesEnumPlot#
colorColorStylerequiredHow to color the value ranges
positionPositionrequiredWhere to place the plot within the row
persistValueOverlaysPersistValueOverlayrequiredRender certain values’ full-row/full-panel color overlays even when not interacting with the plot
overlayScopeOverlayScoperequiredHow far to extend the overlay
displayInlineboolean deprecatedDeprecated: Use displayStyle instead
displayStyleEnumDisplayStyleHow to display the enum values on the chart
TimeSeriesFitOptions#
timeUnitTimeUnitTime unit used for the timestamps to fit against. Defaults to seconds if not specified.
TimeSeriesNumericPlot#
colorstring required
lineStyleLineStylerequired
lineWidthintegerStroke width of the plotted line, in CSS pixels. Absent means the client’s default width.
TimeSeriesPlot#
variableNamestring required
enabledboolean
yAxisIdstring required
colorstring required
lineStyleLineStylerequired
TimeSeriesPlotConfig#
Set type to the name of one of the other fields, and set only that field.
numericTimeSeriesNumericPlot
rangeTimeSeriesRangePlot
enumTimeSeriesEnumPlot
TimeSeriesPlotV2#
variableNamestring required
enabledboolean
yAxisIdstring required
typeTimeSeriesPlotConfigrequired
hideFromTooltipboolean
TimeSeriesRangePlot#
colorstring required
TimeSeriesRow#
titlestring
plotsarray ofTimeSeriesPlot
plotsV2array ofTimeSeriesPlotV2
rowFlexSizenumber required
enabledboolean
TimeSeriesTablePanelDefinition#
Set type to the name of one of the other fields, and set only that field.
TimeSeriesTablePanelDefinitionV1#
titlestring
columnsarray ofTableColumn
numberFormatNumberFormatOptional panel-level number formatting for numeric columns. Per-column number formatting overrides this value.
timestampColumnWidthnumber
summaryRowVisiblebooleanWhether to display the summary row at the bottom of the table. Default is true.
bucketStrategyPanelBucketStrategy
anchorPointTimestampOptional anchor point for fixed bucket alignment. When set, buckets align to this time instead of the viewport start.
dataRequestModeDataRequestModeThe mode to use when requesting data from the backend. Default is full rate.
TimeShiftedDataset#
Transforms a dataset by adding a time offset to all its data.
inputDatasetrequiredThe underlying dataset to time-shift.
offsetcompute.api.DurationrequiredThe 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.
secondsinteger (int64) required
nanosinteger (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.
literalTimestampCreate from a literal timestamp value.
variablestringCreate from a named reference.
TimestampedRange#
TimeUnit#
DAYS
HOURS
MINUTES
SECONDS
MILLISECONDS
MICROSECONDS
NANOSECONDS
TimeWindow#
Set type to the name of one of the other fields, and set only that field.
relativerun.api.Duration
fixedTimestampedRange
TotalSecondsRelativeTimestampFormat#
Display relative timestamps as a total number of seconds.
An empty JSON object, {}.
Trace#
plotlyTracestring requiredThe json trace definition according to plotly’s schema https://plotly.com/python/figure-structure/#the-toplevel-data-attribute
computeTraceComputeInformation needed to substitute computed data arrays into the trace
TraceCompute#
traceChannelVariablesmap of string to stringA map of plotly trace variables to the channel variables that should load into them
configTraceComputeConfig
TraceComputeConfig#
Set type to the name of one of the other fields, and set only that field.
scatter3dScatter3dTraceComputeConfig
TriangleShape#
An empty JSON object, {}.
TwoRowInstrumentLayout#
topTextstringText in the top row, usually the ISA function letters (e.g. “PIT”). Absent means the row is empty.
bottomTextstringText in the bottom row, usually the loop number (e.g. “1234”). Absent means the row is empty.
dividerInstrumentDividerA horizontal line between the two rows. Absent means no line.
UdfSource#
Source provider for a user-defined function.
Set type to the name of one of the other fields, and set only that field.
rustRustUdfSource
UnaryArithmeticOperation#
COSCalculates the trigonometric cosine (input in radians)
SINCalculates the trigonometric sine (input in radians)
TANCalculates the trigonometric tangent (input in radians)
ABSCalculates the absolute value
ASINCalculates the arcsine, returning radians
ACOSCalculates the arccosine, returning radians
LOGCalculates the base 10 logarithm
LNCalculates the natural logarithm (base e)
SQRTCalculates the square root
UnaryArithmeticSeries#
Applies a point-wise transformation to a series. The transformation function is applied to every individual data point.
inputNumericSeriesrequired
operationUnaryArithmeticOperationrequired
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.
UnifiedWorkbookContent#
Set type to the name of one of the other fields, and set only that field.
workbookWorkbookContent
comparisonWorkbookComparisonWorkbookContent
reportWorkbookWorkbookContent
Union#
Uses the union of all input timestamps as the alignment grid.
An empty JSON object, {}.
UnionAlignment#
An empty JSON object, {}.
UnionRanges#
inputsarray ofRangeSeriesThe ranges to union.
UnitConversionSeries#
Convert the given series to a different unit.
inputNumericSeriesrequired
outputUnitstring 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.
inputNumericSeriesrequired
unitstringThe unit to report for the input series. If absent, the input’s unit is cleared.
UserDuration#
Represents a time duration with a unit for user-facing display
durationnumber required
unitTimeUnitrequired
ValueAxis#
idstring required
titlestring required
displayOptionsAxisDisplayOptionsrequired
rangeAxisRangerequired
limitAxisRangerequired
positionAxisPositionrequired
domainTypeAxisDomainTyperequired
tickNumberFormatNumberFormat
tooltipNumberFormatNumberFormat
reversedbooleanWhether the axis direction is reversed. When true, larger values appear on the opposite side (left for X axis, bottom for Y axis). Defaults to false.
tickIntervalnumberSpacing between axis tick labels in data units. Ticks are placed at multiples of this interval within the axis range. If not specified, ticks are chosen automatically. Applies to linear scales only.
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).
inputNumericSeriesrequired
negativeValuesConfigurationNegativeValueConfigurationDefines 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.
inputNumericSeriesrequiredThe input series to map to an enumerated series
mappingarray ofRangeMapThe 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.
defaultStringConstantThe default value if not captured by any range. If not specified, points will be filtered.
ValuePredicate#
A value predicate discriminated by data type. Only numeric values are currently supported; additional types, such as string predicates, can be added as new variants. Missing values or values of a different data type do not match; values are not coerced between types.
Set type to the name of one of the other fields, and set only that field.
numberNumericValuePredicate
ValueSort#
isDescendingboolean requiredIf true, numerics sort high to low, enums sort alphabetically descending, and ranges sort inRange groupings first. If false, the opposite is true for each.
ValueTableCell#
variableNamestring required
uuidstring (UUID)
configValueTableCellConfigrequired
ValueTableCellConfig#
Set type to the name of one of the other fields, and set only that field.
numericNumericCellConfig
enumEnumCellConfig
rangeRangeCellConfig
bitFlagMapBitFlagMapCellConfig
stalenessStalenessCellConfig
numericArrayNumericArrayCellConfig
enumArrayEnumArrayCellConfig
structStructCellConfig
ValueTableChannel#
Set type to the name of one of the other fields, and set only that field.
numericNumericValueChannel
enumEnumValueChannel
rangeRangeValueChannel
ValueTableColumnChannel#
variableNamestring required
displayNamestringThe column header. Falls back to the variable’s own display name.
visualisationNumericValueVisualisationV2Per-column numeric visualisation, such as thresholds. Superseded by
cellConfig, which readers prefer when both are set; writers keep writing the numeric arm’s visualisation here so older readers still see thresholds.cellConfigValueTableCellConfigPer-column typed cell settings, shared by every row of the column — the same union a grid cell persists, so the column view reaches settings parity with the grid (number format, enum color map, range, staleness, bit flags). The populated arm doubles as the channel’s cell type; absent means a numeric channel configured only by
visualisation.
ValueTableDefinition#
Set type to the name of one of the other fields, and set only that field.
ValueTableDefinitionV1#
titlestring
channelsarray ofValueTableChannelEach channel to be displayed. Based on the data type, the visualisation options and settings will be different.
ValueTableDefinitionV2#
titlestringThe display title of the panel.
showUnitsbooleanIf true, display units in the cells when available.
showStalenessIndicatorbooleanIf true, display staleness indicator in the cells when available.
layoutValueTableLayoutrequired
stalenessIndicatorValueTableStalenessConfigConfiguration for showing staleness of values in the value table while streaming.
ValueTableDefinitionV3#
A value table with three explicit layout modes: static, flow, and column. Display settings live here rather than on the layout so a mode switch preserves them; column has no home for them at all. The grid arm is reused verbatim from V2, making a static V3 payload byte-identical to the equivalent V2 one — the v3 union tag is all that distinguishes them.
titlestringThe display title of the panel.
showUnitsbooleanIf true, display units in the cells when available.
showStalenessIndicatorbooleanIf true, display staleness indicator in the cells when available.
showCellLabelsbooleanIf true, display channel names in the cells.
showColumnHeadersbooleanIf true, display column headers.
showRowHeadersbooleanIf true, display row headers.
rowHeaderWidthnumberThe width of the row headers in pixels.
gridDefaultCellConfigsValueTableMultiCellConfigrequiredPanel-level defaults for cell visualisations, applying to every layout mode.
layoutValueTableLayoutV2required
ValueTableFlowCell#
A cell in a flow layout, wrapped with the metadata identifying which grouped fan-out it came from.
cellValueTableCellrequired
groupIdstring (UUID)Stable id shared by every cell of one grouped fan-out. Client-generated, not a RID: there is no server-side registry, and it is meaningful only as a correlation key within a single panel payload.
partitionmap of string to stringTag key to value, selecting which grouping of a grouped compute response this cell renders. Corresponds to
compute.api.Grouping.tagsWithValues. Must be absent whengroupIdis absent.
ValueTableGridRowColumnConfig#
positioninteger requiredThe index of the row or column to apply this configuration to.
headerstring
cellConfigValueTableMultiCellConfig
ValueTableGridValueTableCell#
rowinteger required
columninteger required
cellValueTableCellrequired
ValueTableLayout#
Set type to the name of one of the other fields, and set only that field.
gridValueTableLayoutGrid
ValueTableLayoutColumn#
A layout that renders each channel as a column of a sortable, filterable table.
columnChannelsarray ofValueTableColumnChannelThe channels to display, one column each.
columnTableStateColumnTableStateClient-owned table state. The backend stores and returns it without interpreting it.
ValueTableLayoutFlow#
A flowing layout where order is the data: cells render in list order and wrap onto a new line every wrapWidth cells. A cell’s position is its index — there are no coordinates and no row or column counts.
Deliberately has no rowConfigs: rows are derived wrap lines, so a persisted per-row config would be silently mis-targeted whenever wrapWidth or a fan-out’s cardinality changed. Do not add one for symmetry.
cellsarray ofValueTableFlowCellThe cells to display, in render order.
wrapWidthinteger requiredThe number of cells per wrap line, and therefore the flow’s column count. Never infer that count from
columnConfigs, which is sparse:[]meanswrapWidthcolumns none of which are configured, not zero columns.columnConfigsarray ofValueTableGridRowColumnConfigColumn-level configurations, sparse over the
wrapWidthcolumns: a column with no header and no cell config has no entry.positionis authoritative rather than the array index, and must be less thanwrapWidth. The count-plus-configs pairing mirrorsValueTableLayoutGrid’scolumnCount, though that arm’s list is written densely.groupsmap of string toValueTableMultiCellConfigPer-group cell configuration, keyed by
ValueTableFlowCell.groupId. A group with no entry falls back togridDefaultCellConfigs; entries with no matching cell are tolerated.
ValueTableLayoutGrid#
A 2D grid layout for the value table where cells are laid out in specific rows and columns. Supports hierarchical cell visualisation configurations, favoring when present: the cell’s own definition, then the column’s, then the row’s, then the panel’s.
showRowHeadersbooleanIf true, display row headers.
rowHeaderWidthnumberThe width of the row headers in pixels.
showColumnHeadersbooleanIf true, display column headers.
showCellLabelsbooleanIf true, display channel names in the cells.
gridDefaultCellConfigsValueTableMultiCellConfigrequiredPanel-level defaults for cell visualisations
columnConfigsarray ofValueTableGridRowColumnConfigColumn-level configurations.
rowConfigsarray ofValueTableGridRowColumnConfigRow-level configurations.
rowCountinteger required
columnCountinteger required
cellsarray ofValueTableGridValueTableCellAn array of cells to display in the table.
ValueTableLayoutV2#
Separate from ValueTableLayout so new arms cannot widen ValueTableDefinitionV2.layout, which clients read as v2.layout.grid without checking the tag. The grid arm is the same object.
Set type to the name of one of the other fields, and set only that field.
gridValueTableLayoutGrid
flowValueTableLayoutFlow
columnValueTableLayoutColumn
ValueTableMultiCellConfig#
Configurations for each type of cell in a grouping of heterogenous cells, such as for a row, for a column, or for the entire grid.
rangeRangeCellConfig
enumEnumCellConfig
numericNumericCellConfig
stalenessStalenessCellConfig
numericArrayNumericArrayCellConfig
enumArrayEnumArrayCellConfig
structStructCellConfig
ValueTableStalenessConfig#
Configuration for showing staleness of values while streaming
hideStalenessbooleanIf true, will not show any indication of staleness. Defaults to false
ValueToColorMap#
Color interpolations for numeric and enum values.
Set type to the name of one of the other fields, and set only that field.
numericmap ofHexColorto number
numericPresetNumericPresetColorRange
enummap of string to string
Valve#
The valve variation to render, with variation-specific configuration.
Set type to the name of one of the other fields, and set only that field.
standardStandardValve
reliefReliefValve
checkCheckValve
ValveCommanding#
actionsarray ofVizActionOptionUp to 32 choices in menu order. Clicking opens the menu; explicit selection executes only that choice’s batch. All choices remain available regardless of feedback state.
ValveFeedback#
stateMappingsarray ofValveStateRuleUp to 8 rules evaluated in menu order; first match wins. Missing, non-finite, stale, or unmatched feedback renders unknown.
ValveInputPredicate#
variableNamestring requiredWorkbook channel variable providing numeric valve feedback.
predicateValuePredicaterequired
ValveNormalPosition#
The valve’s position when not powered.
Set type to the name of one of the other fields, and set only that field.
normallyOpenNormallyOpenValvePosition
normallyClosedNormallyClosedValvePosition
ValveState#
OPEN
CLOSED
ValveStateCondition#
Conjunction of one or more input predicates. All predicates must match at the same evaluation timestamp for the condition to match.
allOfarray ofValveInputPredicateMust contain between 1 and 8 predicates.
ValveStateRule#
stateValveStaterequired
conditionValveStateConditionrequired
ValveVizDefinition#
Set type to the name of one of the other fields, and set only that field.
ValveVizDefinitionV1#
titlestringThe label displayed on the valve.
valveValverequired
rotationDegreesintegerClockwise rotation in degrees. Multiples of 90; absent means no rotation.
VariableStaticOrChannel#
Variable to store either a static numerical value or channel string name.
Set type to the name of one of the other fields, and set only that field.
staticNumericnumber
VariableValue#
Set type to the name of one of the other fields, and set only that field.
doublenumber
computeNodecompute.api.ComputeNodeWithContext
durationrun.api.Duration
integerinteger
channelChannelSeriesdeprecatedDeprecated: use series instead.
derivedDerivedSeries
seriesSeriesVariable
stringstring
stringSetarray of string
timestampTimestamp
VariableWithAggregation#
locatorcomparisonnotebook.api.VariableLocatorrequired
aggregationTypeAggregationTyperequired
Vec3d#
A three-dimensional Cartesian vector.
xnumber required
ynumber required
znumber required
VersionedVizId#
ridstring required
versioninteger required
VerticalTank#
An empty JSON object, {}.
VideoPanelDataSource#
Enhanced video panel data source to be compatible with multiple assets
runRidstring (RID)
assetRidstring (RID) required
refNamestring required
VideoVizDefinition#
Set type to the name of one of the other fields, and set only that field.
VideoVizDefinitionV1#
eventsarray ofEventdeprecatedDeprecated: Please use the workbook’s eventRefs field instead.
comparisonRunGroupsarray ofComparisonRunGroup
titlestring
refNamestring deprecatedDeprecated: Datasource field will be preferred over refName field to support multiple assets.
datasourceVideoPanelDataSource
VideoVizDefinitionV2#
Stores a video as a variable rather than the deprecated video datasource rid.
titlestring
variablestring required
annotationsarray of stringWorkbook variables bound to this panel’s image-annotation overlay: struct-typed channels whose samples are messages drawn over the video image.
VizAction#
The action a visualization performs when activated by the user.
Set type to the name of one of the other fields, and set only that field.
sendCommandsSendCommandsAction
VizActionOption#
A labeled action the user can select from a visualization’s action menu.
labelstring requiredMenu label; must be non-empty and at most 128 characters.
actionVizActionrequired
confirmationCommandConfirmationIf present, require explicit confirmation after selection and before execution.
VizCommand#
variableNamestring requiredWorkbook channel variable naming the commandable series. Must resolve to a physical series (VariableLocator.series); looked up in the workbook’s channel-variable map at activation time.
valueCommandValuerequired
VizPanel#
Set type to the name of one of the other fields, and set only that field.
v1VizPanelV1
VizPanelV1#
Deprecated - use ChartPanel instead
idstring required
vizIdstring required
hideLegendboolean required deprecatedDeprecated: No longer used.
hideLabelbooleanWhen omitted, treat as false.
Window#
Set type to the name of one of the other fields, and set only that field.
durationDurationConstant
WindowSymmetry#
DFT_EVENGenerates dft-even/periodic window values.
SYMMETRICGenerates symmetric window values.
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.
inputDatasetrequiredThe base dataset to which the new series will be added.
seriesarray ofNamedSeriesThe named derived series to add.
WorkbookAlignmentStrategy#
Set type to the name of one of the other fields, and set only that field.
driverSeriesDriverSeriesAlignment
unionUnionAlignment
intersectIntersectAlignment
workbookcommon.api.Offset#
Set type to the name of one of the other fields, and set only that field.
customUserDuration
runAlignRunAlignment
eventAlignEventAlignment
WorkbookContent#
channelVariablesmap ofChannelVariableNametochannelvariables.api.ChannelVariablerequired
inputsWorkbookInputs
chartsmap ofVizIdtochartdefinition.api.VizDefinitionrequiredmap of visualizations. Previously termed “charts”
settingsWorkbookSettings
dataScopeInputsWorkbookDataScopeInputs
timeRangeInputsmap of string toTimeRangeInputdeprecatedDeprecated: Deprecated, use timeRanges instead.
timeRangesmap of string toTimeRange
reportContentstring
versionstringSchema version this content was last written with, as a semver string. Used by the client to gate load-time content migrations: migrations introduced after this version are applied on read. Absent for content written before versioning was introduced.
WorkbookContext#
variablesmap ofVariableNametochannelvariables.api.VariableLocator
WorkbookDataScopeInput#
A data scope input that binds a variable name to an asset or run RID. The variable name is the map key.
namestring required deprecatedDeprecated: Deprecated in favor of label.
labelstring
valueDataScopeInputValuerequired
colorModeWorkbookDataScopeInputColorModeHow traces from this input are colored. Absent means bySeries (palette rotation, the original behaviour) for backward compatibility.
alignmentDatasetAnchorStructural dataset alignment applied before any input time shift. Absent means the input uses the dataset’s source timestamps.
filtersarray ofDataScopeInputFilterFilters applied to the input’s datasets. All filters must match. Absent or empty means the input is unfiltered.
WorkbookDataScopeInputColorMode#
How traces originating from this input are colored. Modeled as a union so individual modes can carry their own configuration in the future without a breaking change.
Set type to the name of one of the other fields, and set only that field.
byChannelByChannelColorMode
bySourceBySourceColorMode
bySeriesBySeriesColorMode
WorkbookDataScopeInputs#
Set type to the name of one of the other fields, and set only that field.
WorkbookDataScopeInputsV1#
A map of data scope input variable name to its definition.
inputsmap ofWorkbookDataScopeInputIdtoWorkbookDataScopeInput
WorkbookFillStrategy#
Set type to the name of one of the other fields, and set only that field.
forwardFillUserDuration
linearUserDuration
WorkbookInput#
A workbook input is a value managed at the workbook level that can be applied to multiple elements.
idstring (UUID) requiredThe unique identifier of the input.
labelstringThe label of the input for display purposes.
valueInputTyperequired
WorkbookInputs#
Set type to the name of one of the other fields, and set only that field.
v1WorkbookInputsV1
WorkbookInputsV1#
A list of workbook inputs.
inputsarray ofWorkbookInput
WorkbookLayout#
Set type to the name of one of the other fields, and set only that field.
v1WorkbookLayoutV1
WorkbookLayoutV1#
rootPanelPanelrequiredOnly TabbedPanel supported.
WorkbookOffsets#
Set type to the name of one of the other fields, and set only that field.
WorkbookOffsetsV1#
runsmap ofRunRidtoRunOffsetDeprecated - use dataScope inputs
assetsmap ofAssetRidtoAssetOffsetDeprecated - use dataScope inputs
inputsmap ofWorkbookDataScopeInputIdtoInputOffset
WorkbookRelativeTimestampFormat#
Workbook-level display format for relative timestamps.
Set type to the name of one of the other fields, and set only that field.
inheritInheritRelativeTimestampFormat
temporalSubunitsTemporalSubunitsRelativeTimestampFormat
totalSecondsTotalSecondsRelativeTimestampFormat
WorkbookSettings#
assetSettingsmap ofAssetRidtoAssetSettingsSettings for assets to be used in the workbook. This should be present for asset workbooks.
runSettingsmap ofRunRidtoRunSettingsSettings for runs to be used in the workbook. This should be present for run workbooks.
timeSettingsWorkbookTimeSettingsTime range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.
offsetsWorkbookOffsetsTime offsets that can be applied to the workbook.
defaultStalenessConfigurationStalenessConfigurationDefault staleness configuration for new time series panels in the workbook. When set, new time series panels will use this instead of the 1-second default.
fillStrategyWorkbookFillStrategyWorkbook-wide fill strategy for compute requests. When unset, compute falls back to its default.
alignmentStrategyWorkbookAlignmentStrategyWorkbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.
statsPanelScopeWorkbookStatsPanelScopeWhich panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.
WorkbookStatsPanelScope#
Set type to the name of one of the other fields, and set only that field.
selectedTabSelectedTabStatsPanelScope
allTabsAllTabsStatsPanelScope
WorkbookTimeRangeType#
ABSOLUTE
RELATIVE
WorkbookTimeSettings#
Set type to the name of one of the other fields, and set only that field.
WorkbookTimeSettingsV1#
Time range configuration for workbooks
timeRangeTypeWorkbookTimeRangeTyperequiredThe time range type of the workbook
globalTimeRangeRangeThe global time range a workbook falls back to.
isGlobalTimeboolean requiredIf true, workbook will default to globalTimeRange for all tabs. If false, will attempt to use tabTime to populate the workbook time range.
tabTimeRangesmap of string toRange
relativeTimestampFormatWorkbookRelativeTimestampFormatRelative timestamp display preference. Missing values inherit the user’s preference.
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.
inputNumericSeriesrequired
groupByTagsarray ofStringConstantTags 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.
interpolationConfigurationInterpolationConfigurationdeprecatedConfiguration 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.