Template service#

TemplateService manages templates, which are workbooks that can be re-used across runs. Templates are versioned.

OpenAPI file: TemplateService.json

Endpoints#

Create#

POST /scout/v1/template

Creates a new template.

Body

title string required

​

description string required

​

labels array of string

​

properties map of PropertyName to string

​

isPublished boolean

Default is true

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string required

​

version integer required

​

layout WorkbookLayout required

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel required

Only TabbedPanel supported.

content WorkbookContent required

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable required

​

Fields of ChannelVariable
displayName string

​

variableName string required

​

computeSpec ComputeSpec required

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition required

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range required

​

timeRangeType WorkbookTimeRangeType required

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

message string required

​

previewImage ThemeAwareImage

Theme-aware preview image for the template. Falls back to a default illustration if not provided.

Fields of ThemeAwareImage
light string (RID) required

​

dark string (RID) required

​

workspace string (RID)

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

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "title": "<title>",
  "description": "<description>",
  "layout": {
    "type": "v1",
    "v1": {
      "rootPanel": {
        "type": "viz",
        "viz": {
          "type": "v1",
          "v1": {
            "id": "<panel id>",
            "vizId": "<viz id>",
            "hideLegend": true
          }
        }
      }
    }
  },
  "content": {
    "channelVariables": {
      "<key>": {
        "variableName": "<channel variable name>",
        "computeSpec": {
          "type": "v1",
          "v1": "<compute spec v1>"
        }
      }
    },
    "charts": {
      "<key>": {
        "type": "boundary",
        "boundary": {
          "type": "v1",
          "v1": {
            "type": {
              "type": "source",
              "source": {}
            }
          }
        }
      }
    }
  },
  "message": "<message>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/template",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "layout": {
            "type": "v1",
            "v1": {
                "rootPanel": {
                    "type": "viz",
                    "viz": {
                        "type": "v1",
                        "v1": {
                            "id": "<panel id>",
                            "vizId": "<viz id>",
                            "hideLegend": True,
                        },
                    },
                },
            },
        },
        "content": {
            "channelVariables": {
                "<key>": {
                    "variableName": "<channel variable name>",
                    "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                },
            },
            "charts": {
                "<key>": {
                    "type": "boundary",
                    "boundary": {
                        "type": "v1",
                        "v1": {"type": {"type": "source", "source": {}}},
                    },
                },
            },
        },
        "message": "<message>",
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/template",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "layout": {
            "type": "v1",
            "v1": {
                "rootPanel": {
                    "type": "viz",
                    "viz": {
                        "type": "v1",
                        "v1": {
                            "id": "<panel id>",
                            "vizId": "<viz id>",
                            "hideLegend": True,
                        },
                    },
                },
            },
        },
        "content": {
            "channelVariables": {
                "<key>": {
                    "variableName": "<channel variable name>",
                    "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                },
            },
            "charts": {
                "<key>": {
                    "type": "boundary",
                    "boundary": {
                        "type": "v1",
                        "v1": {"type": {"type": "source", "source": {}}},
                    },
                },
            },
        },
        "message": "<message>",
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/template",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "title": "<title>",
                "description": "<description>",
                "layout": {
                    "type": "v1",
                    "v1": {
                        "rootPanel": {
                            "type": "viz",
                            "viz": {
                                "type": "v1",
                                "v1": {
                                    "id": "<panel id>",
                                    "vizId": "<viz id>",
                                    "hideLegend": True,
                                },
                            },
                        },
                    },
                },
                "content": {
                    "channelVariables": {
                        "<key>": {
                            "variableName": "<channel variable name>",
                            "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                        },
                    },
                    "charts": {
                        "<key>": {
                            "type": "boundary",
                            "boundary": {
                                "type": "v1",
                                "v1": {"type": {"type": "source", "source": {}}},
                            },
                        },
                    },
                },
                "message": "<message>",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Get#

GET /scout/v1/template/{templateRid}

Must only pass one of (branch, commit). If neither are passed, the latest commit on the “main” branch is returned. Throws if the template, branch, or commit doesn’t exist.

Path parameters

templateRid string (RID) required

​

Query parameters

branch string

​

commit string

​

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

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

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

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

import aiohttp


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


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Batch get metadata#

POST /scout/v1/template/batch-get-metadata

Body

The body is an array of string (RID).

Response

The body is an array of TemplateSummary.

Fields of TemplateSummary
rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

Request

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

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

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

import aiohttp


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


asyncio.run(main())

Response: 200

[
  {
    "rid": "<template rid>",
    "metadata": {
      "title": "<title>",
      "description": "<description>",
      "labels": [
        "<label>"
      ],
      "properties": {
        "<key>": "<property value>"
      },
      "isArchived": true,
      "isPublished": true,
      "createdBy": "<user rid>",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "editedAt": "2026-01-01T00:00:00Z",
      "previewImage": {
        "light": "<attachment rid>",
        "dark": "<attachment rid>"
      }
    }
  }
]

Save working state#

POST /scout/v1/template/{templateRid}/save-working-state

Creates a commit that may be compacted, e.g cleaned up and not exist anymore. Throws if the template or branch doesn’t exist. Throws if the latest commit doesn’t match the provided id. Throws if you save to an archived template.

Path parameters

templateRid string (RID) required

​

Query parameters

branch string

Name of the branch to save to. Defaults to “main” if not specified.

Body

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string required

​

version integer required

​

layout WorkbookLayout required

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel required

Only TabbedPanel supported.

content WorkbookContent required

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable required

​

Fields of ChannelVariable
displayName string

​

variableName string required

​

computeSpec ComputeSpec required

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition required

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range required

​

timeRangeType WorkbookTimeRangeType required

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

latestCommit string

If present, will validate that the latest commit matches this id, and otherwise throw CommitConflict.

commitMessage string

Message to record on the working-state commit this save creates. At most 4096 characters. Defaults to “auto-save” when absent or blank.

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/save-working-state" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "layout": {
    "type": "v1",
    "v1": {
      "rootPanel": {
        "type": "viz",
        "viz": {
          "type": "v1",
          "v1": {
            "id": "<panel id>",
            "vizId": "<viz id>",
            "hideLegend": true
          }
        }
      }
    }
  },
  "content": {
    "channelVariables": {
      "<key>": {
        "variableName": "<channel variable name>",
        "computeSpec": {
          "type": "v1",
          "v1": "<compute spec v1>"
        }
      }
    },
    "charts": {
      "<key>": {
        "type": "boundary",
        "boundary": {
          "type": "v1",
          "v1": {
            "type": {
              "type": "source",
              "source": {}
            }
          }
        }
      }
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/save-working-state",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "layout": {
            "type": "v1",
            "v1": {
                "rootPanel": {
                    "type": "viz",
                    "viz": {
                        "type": "v1",
                        "v1": {
                            "id": "<panel id>",
                            "vizId": "<viz id>",
                            "hideLegend": True,
                        },
                    },
                },
            },
        },
        "content": {
            "channelVariables": {
                "<key>": {
                    "variableName": "<channel variable name>",
                    "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                },
            },
            "charts": {
                "<key>": {
                    "type": "boundary",
                    "boundary": {
                        "type": "v1",
                        "v1": {"type": {"type": "source", "source": {}}},
                    },
                },
            },
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/save-working-state",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "layout": {
            "type": "v1",
            "v1": {
                "rootPanel": {
                    "type": "viz",
                    "viz": {
                        "type": "v1",
                        "v1": {
                            "id": "<panel id>",
                            "vizId": "<viz id>",
                            "hideLegend": True,
                        },
                    },
                },
            },
        },
        "content": {
            "channelVariables": {
                "<key>": {
                    "variableName": "<channel variable name>",
                    "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                },
            },
            "charts": {
                "<key>": {
                    "type": "boundary",
                    "boundary": {
                        "type": "v1",
                        "v1": {"type": {"type": "source", "source": {}}},
                    },
                },
            },
        },
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/save-working-state",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "layout": {
                    "type": "v1",
                    "v1": {
                        "rootPanel": {
                            "type": "viz",
                            "viz": {
                                "type": "v1",
                                "v1": {
                                    "id": "<panel id>",
                                    "vizId": "<viz id>",
                                    "hideLegend": True,
                                },
                            },
                        },
                    },
                },
                "content": {
                    "channelVariables": {
                        "<key>": {
                            "variableName": "<channel variable name>",
                            "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                        },
                    },
                    "charts": {
                        "<key>": {
                            "type": "boundary",
                            "boundary": {
                                "type": "v1",
                                "v1": {"type": {"type": "source", "source": {}}},
                            },
                        },
                    },
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Get used ref names#

GET /scout/v1/template/{templateRid}/ref-names

Returns the set of all ref names used by the template.

Path parameters

templateRid string (RID) required

​

Query parameters

branch string

​

commit string

​

Response

The body is an array of string.

Request

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

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v1/template/<template 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/v1/template/<template 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/v1/template/<template 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/v1/template/{templateRid}/update-ref-names

Updates the data source ref names for all variables used in the template.

Path parameters

templateRid string (RID) required

​

Query parameters

branch string

Name of the branch to save to. Defaults to “main” if not specified.

Body

refNameUpdates map of DataSourceRefName to string

​

latestCommit string

If present, will validate that the latest commit matches this id, and otherwise throw CommitConflict.

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

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

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

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

import aiohttp


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


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Commit#

POST /scout/v1/template/{templateRid}/commit

Creates a commit with a commit message. Throws if the template or branch doesn’t exist. Throws if the latest commit doesn’t match the provided id. Throws if you commit to an archived template.

Path parameters

templateRid string (RID) required

​

Query parameters

branch string

Name of the branch to commit to. Defaults to “main” if not specified.

Body

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string required

​

version integer required

​

layout WorkbookLayout required

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel required

Only TabbedPanel supported.

content WorkbookContent required

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable required

​

Fields of ChannelVariable
displayName string

​

variableName string required

​

computeSpec ComputeSpec required

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition required

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range required

​

timeRangeType WorkbookTimeRangeType required

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

message string required

​

latestCommit string

If present, will validate that the latest commit matches this id, and otherwise throw CommitConflict.

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/commit" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "layout": {
    "type": "v1",
    "v1": {
      "rootPanel": {
        "type": "viz",
        "viz": {
          "type": "v1",
          "v1": {
            "id": "<panel id>",
            "vizId": "<viz id>",
            "hideLegend": true
          }
        }
      }
    }
  },
  "content": {
    "channelVariables": {
      "<key>": {
        "variableName": "<channel variable name>",
        "computeSpec": {
          "type": "v1",
          "v1": "<compute spec v1>"
        }
      }
    },
    "charts": {
      "<key>": {
        "type": "boundary",
        "boundary": {
          "type": "v1",
          "v1": {
            "type": {
              "type": "source",
              "source": {}
            }
          }
        }
      }
    }
  },
  "message": "<message>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/commit",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "layout": {
            "type": "v1",
            "v1": {
                "rootPanel": {
                    "type": "viz",
                    "viz": {
                        "type": "v1",
                        "v1": {
                            "id": "<panel id>",
                            "vizId": "<viz id>",
                            "hideLegend": True,
                        },
                    },
                },
            },
        },
        "content": {
            "channelVariables": {
                "<key>": {
                    "variableName": "<channel variable name>",
                    "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                },
            },
            "charts": {
                "<key>": {
                    "type": "boundary",
                    "boundary": {
                        "type": "v1",
                        "v1": {"type": {"type": "source", "source": {}}},
                    },
                },
            },
        },
        "message": "<message>",
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/commit",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "layout": {
            "type": "v1",
            "v1": {
                "rootPanel": {
                    "type": "viz",
                    "viz": {
                        "type": "v1",
                        "v1": {
                            "id": "<panel id>",
                            "vizId": "<viz id>",
                            "hideLegend": True,
                        },
                    },
                },
            },
        },
        "content": {
            "channelVariables": {
                "<key>": {
                    "variableName": "<channel variable name>",
                    "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                },
            },
            "charts": {
                "<key>": {
                    "type": "boundary",
                    "boundary": {
                        "type": "v1",
                        "v1": {"type": {"type": "source", "source": {}}},
                    },
                },
            },
        },
        "message": "<message>",
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/commit",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "layout": {
                    "type": "v1",
                    "v1": {
                        "rootPanel": {
                            "type": "viz",
                            "viz": {
                                "type": "v1",
                                "v1": {
                                    "id": "<panel id>",
                                    "vizId": "<viz id>",
                                    "hideLegend": True,
                                },
                            },
                        },
                    },
                },
                "content": {
                    "channelVariables": {
                        "<key>": {
                            "variableName": "<channel variable name>",
                            "computeSpec": {"type": "v1", "v1": "<compute spec v1>"},
                        },
                    },
                    "charts": {
                        "<key>": {
                            "type": "boundary",
                            "boundary": {
                                "type": "v1",
                                "v1": {"type": {"type": "source", "source": {}}},
                            },
                        },
                    },
                },
                "message": "<message>",
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Update metadata#

POST /scout/v1/template/{templateRid}/metadata

Throws if the template doesn’t exist.

Path parameters

templateRid string (RID) required

​

Body

title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

previewImage ThemeAwareImage

Theme-aware preview image for the template. When provided, replaces the existing preview image.

Fields of ThemeAwareImage
light string (RID) required

​

dark string (RID) required

​

Response

title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/metadata" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "title": "<title>",
  "description": "<description>",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "isArchived": true,
  "isPublished": true,
  "previewImage": {
    "light": "<attachment rid>",
    "dark": "<attachment rid>"
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/metadata",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "labels": ["<label>"],
        "properties": {"<key>": "<property value>"},
        "isArchived": True,
        "isPublished": True,
        "previewImage": {"light": "<attachment rid>", "dark": "<attachment rid>"},
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/metadata",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "description": "<description>",
        "labels": ["<label>"],
        "properties": {"<key>": "<property value>"},
        "isArchived": True,
        "isPublished": True,
        "previewImage": {"light": "<attachment rid>", "dark": "<attachment rid>"},
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/metadata",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "title": "<title>",
                "description": "<description>",
                "labels": ["<label>"],
                "properties": {"<key>": "<property value>"},
                "isArchived": True,
                "isPublished": True,
                "previewImage": {
                    "light": "<attachment rid>",
                    "dark": "<attachment rid>",
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "title": "<title>",
  "description": "<description>",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "isArchived": true,
  "isPublished": true,
  "createdBy": "<user rid>",
  "createdAt": "2026-01-01T00:00:00Z",
  "updatedAt": "2026-01-01T00:00:00Z",
  "editedAt": "2026-01-01T00:00:00Z",
  "previewImage": {
    "light": "<attachment rid>",
    "dark": "<attachment rid>"
  }
}

Batch archive#

POST /scout/v1/template/batch-archive

Archives the provided templates. Templates that are already archived are left unchanged. Throws if any of the templates don’t exist.

Body

target TemplateArchiveTarget required

​

Set type to "rids".

rids array of string (RID)

The templates 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/v1/template/batch-archive" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "target": {
    "type": "rids",
    "rids": [
      "<template rid>"
    ]
  }
}'
import requests

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

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

import aiohttp


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


asyncio.run(main())

Response: 204

No content.

Batch unarchive#

POST /scout/v1/template/batch-unarchive

Unarchives the provided templates. Templates that are not archived are left unchanged. Throws if any of the templates don’t exist.

Body

target TemplateArchiveTarget required

​

Set type to "rids".

rids array of string (RID)

The templates 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/v1/template/batch-unarchive" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "target": {
    "type": "rids",
    "rids": [
      "<template rid>"
    ]
  }
}'
import requests

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

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

import aiohttp


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


asyncio.run(main())

Response: 204

No content.

Search templates#

POST /scout/v1/template/search

Body

query SearchTemplatesQuery required

​

Set type to "and".

and array of SearchTemplatesQuery

​

Set type to "or".

or array of SearchTemplatesQuery

​

Set type to "not".

not SearchTemplatesQuery

​

Set type to "exactMatch".

exactMatch string

Performs case insensitive exact match search on the title.

Set type to "searchText".

searchText string

Searches title and description only

Set type to "label".

label string deprecated

Deprecated: use labels instead

Set type to "labels".

labels LabelsFilter

​

Fields of LabelsFilter
operator SetOperator required

​

Values of SetOperator
AND

​

OR

​

labels array of string

​

Set type to "property".

property nominal.api.Property deprecated

Deprecated: use properties

Fields of nominal.api.Property
name string required

​

value string required

​

Set type to "properties".

properties PropertiesFilter

​

Fields of PropertiesFilter
name string required

​

values array of string

​

Set type to "createdBy".

createdBy string (RID)

​

Set type to "isArchived".

isArchived boolean

​

Set type to "isPublished".

isPublished boolean

​

Set type to "workspace".

workspace string (RID)

​

Set type to "authorIsCurrentUser".

authorIsCurrentUser boolean

​

Set type to "authorRids".

authorRids array of string (RID)

​

sortBy SortBy

EDITED_AT descending by default

Fields of SortBy
isDescending boolean required

​

field SortByField required

​

Values of SortByField
NAME

​

CREATED_AT

​

UPDATED_AT

​

EDITED_AT

​

nextPageToken string

​

pageSize integer

Defaults to 100. Will throw if larger than 1_000.

Response

results array of TemplateSummary

​

Fields of TemplateSummary
rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

nextPageToken string

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template/search" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "query": {
    "type": "and",
    "and": []
  }
}'
import requests

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

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

import aiohttp


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


asyncio.run(main())

Response: 200

{
  "results": [
    {
      "rid": "<template rid>",
      "metadata": {
        "title": "<title>",
        "description": "<description>",
        "labels": [
          "<label>"
        ],
        "properties": {
          "<key>": "<property value>"
        },
        "isArchived": true,
        "isPublished": true,
        "createdBy": "<user rid>",
        "createdAt": "2026-01-01T00:00:00Z",
        "updatedAt": "2026-01-01T00:00:00Z",
        "editedAt": "2026-01-01T00:00:00Z",
        "previewImage": {
          "light": "<attachment rid>",
          "dark": "<attachment rid>"
        }
      }
    }
  ],
  "nextPageToken": "<token>"
}

Get all labels and properties#

GET /scout/v1/template/get-all-labels-properties

Query parameters

workspaces array of string (RID)

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

Response

properties map of PropertyName to array of string

​

labels array of string

​

Request

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

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

Duplicate#

POST /scout/v1/template/{templateRid}/duplicate

Duplicates an existing template, copying its content (layout, charts, variables) and optionally overriding metadata fields such as title, description, labels, and properties. Returns the newly created template.

Path parameters

templateRid string (RID) required

The RID of the source template to duplicate.

Body

title string

Override the title of the duplicated template. If not provided, generates a copy title from the source using the titleSuffix.

titleSuffix string

Custom suffix for generating the copy title (e.g., “v2”). Defaults to “copy”. Ignored if title is explicitly provided.

description string

Override description. Defaults to the source template’s description.

isPublished boolean

Override published status. Defaults to false.

workspace string (RID)

The workspace for the duplicated template. If not provided, the template will be created in the default workspace for the user’s organization.

labels array of string

Override labels. Defaults to the source template’s labels.

properties map of PropertyName to string

Override properties. Defaults to the source template’s properties.

previewImage ThemeAwareImage

Override preview image. Defaults to the source template’s preview image.

Fields of ThemeAwareImage
light string (RID) required

​

dark string (RID) required

​

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/duplicate" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "title": "<title>",
  "titleSuffix": "<title suffix>",
  "description": "<description>",
  "isPublished": true,
  "workspace": "<workspace rid>",
  "labels": [
    "<label>"
  ],
  "properties": {
    "<key>": "<property value>"
  },
  "previewImage": {
    "light": "<attachment rid>",
    "dark": "<attachment rid>"
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/duplicate",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "titleSuffix": "<title suffix>",
        "description": "<description>",
        "isPublished": True,
        "workspace": "<workspace rid>",
        "labels": ["<label>"],
        "properties": {"<key>": "<property value>"},
        "previewImage": {"light": "<attachment rid>", "dark": "<attachment rid>"},
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/duplicate",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "title": "<title>",
        "titleSuffix": "<title suffix>",
        "description": "<description>",
        "isPublished": True,
        "workspace": "<workspace rid>",
        "labels": ["<label>"],
        "properties": {"<key>": "<property value>"},
        "previewImage": {"light": "<attachment rid>", "dark": "<attachment rid>"},
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/duplicate",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "title": "<title>",
                "titleSuffix": "<title suffix>",
                "description": "<description>",
                "isPublished": True,
                "workspace": "<workspace rid>",
                "labels": ["<label>"],
                "properties": {"<key>": "<property value>"},
                "previewImage": {
                    "light": "<attachment rid>",
                    "dark": "<attachment rid>",
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Merge to main#

POST /scout/v1/template/{templateRid}/merge-to-main

Merges the given branch to the “main” branch. Throws if the template or branch doesn’t exist. Throws if the latest commit doesn’t match the provided id. Throws if you merge on an archived template.

Path parameters

templateRid string (RID) required

​

Body

branchName string required

If “main”, the request will throw.

message string required

​

latestCommitOnMain string

If present, will validate that the latest commit matches this id, and otherwise throw CommitConflict.

Response

rid string (RID)

​

metadata TemplateMetadata

​

Fields of TemplateMetadata
title string

​

description string

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean

​

isPublished boolean

​

createdBy string (RID)

​

createdAt string (date-time)

​

updatedAt string (date-time)

​

editedAt string (date-time)

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

Fields of ThemeAwareImage
light string (RID)

​

dark string (RID)

​

commit Commit

​

Fields of Commit
id string

​

resourceRid string (RID)

​

parentCommit string

​

mergeParentCommit string

​

message string

​

isWorkingState boolean

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

committedBy string (RID)

​

committedAt string (date-time)

​

charts array of VersionedVizId deprecated

Deprecated: charts are no longer versioned resources. They are stored in workbook content.

Fields of VersionedVizId
rid string

​

version integer

​

layout WorkbookLayout

​

Set type to "v1".

v1 WorkbookLayoutV1

​

Fields of WorkbookLayoutV1
rootPanel Panel

Only TabbedPanel supported.

content WorkbookContent

​

Fields of WorkbookContent
channelVariables map of ChannelVariableName to ChannelVariable

​

Fields of ChannelVariable
displayName string

​

variableName string

​

computeSpec ComputeSpec

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

inputs WorkbookInputs

​

Set type to "v1".

v1 WorkbookInputsV1

​

charts map of VizId to VizDefinition

map of visualizations. Previously termed “charts”

Set type to "boundary".

boundary BoundaryVizDefinition

​

Set type to "burstDisc".

burstDisc BurstDiscVizDefinition

​

Set type to "button".

button ButtonVizDefinition

​

Set type to "cartesian".

cartesian CartesianChartDefinition

​

Set type to "checklist".

checklist ChecklistChartDefinition

​

Set type to "endNode".

endNode EndNodeVizDefinition

​

Set type to "frequency".

frequency FrequencyChartDefinition

​

Set type to "geo".

geo GeoVizDefinition

​

Set type to "geo3d".

geo3d Geo3dDefinition

​

Set type to "heatExchanger".

heatExchanger HeatExchangerVizDefinition

​

Set type to "histogram".

histogram HistogramChartDefinition

​

Set type to "image".

image ImageVizDefinition

​

Set type to "instrument".

instrument InstrumentVizDefinition

​

Set type to "log".

log LogPanelDefinition

​

Set type to "markdown".

markdown MarkdownPanelDefinition

​

Set type to "numberInput".

numberInput NumberInputVizDefinition

​

Set type to "orifice".

orifice OrificeVizDefinition

​

Set type to "plotly".

plotly PlotlyPanelDefinition

​

Set type to "procedure".

procedure ProcedureVizDefinition

​

Set type to "pump".

pump PumpVizDefinition

​

Set type to "regulator".

regulator RegulatorVizDefinition

​

Set type to "shape".

shape ShapeVizDefinition

​

Set type to "tank".

tank TankVizDefinition

​

Set type to "thrustChamber".

thrustChamber ThrustChamberVizDefinition

​

Set type to "timeSeries".

timeSeries TimeSeriesChartDefinition

​

Set type to "timeSeriesTable".

timeSeriesTable TimeSeriesTablePanelDefinition

​

Set type to "valueTable".

valueTable ValueTableDefinition

​

Set type to "valve".

valve ValveVizDefinition

​

Set type to "video".

video VideoVizDefinition

​

settings WorkbookSettings

​

Fields of WorkbookSettings
assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which panels the workbook’s statistics table collects variables from. When absent, the table shows only the variables plotted on the selected tab.

dataScopeInputs WorkbookDataScopeInputs

​

Set type to "v1".

v1 WorkbookDataScopeInputsV1

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

Fields of TimeRangeInput
label string

The label of the input for display purposes.

timeRange Range

​

timeRangeType WorkbookTimeRangeType

The type of time range to use for the input.

timeRanges map of string to TimeRange

​

Set type to "timeRangeV1".

timeRangeV1 TimeRangeV1

​

reportContent string

​

version string

Schema 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.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/merge-to-main" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "branchName": "<branch name>",
  "message": "<message>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/merge-to-main",
    headers={"Authorization": "Bearer <api key>"},
    json={"branchName": "<branch name>", "message": "<message>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v1/template/<template rid>/merge-to-main",
    headers={"Authorization": "Bearer <api key>"},
    json={"branchName": "<branch name>", "message": "<message>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


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


asyncio.run(main())

Response: 200

{
  "rid": "<template rid>",
  "metadata": {
    "title": "<title>",
    "description": "<description>",
    "labels": [
      "<label>"
    ],
    "properties": {
      "<key>": "<property value>"
    },
    "isArchived": true,
    "isPublished": true,
    "createdBy": "<user rid>",
    "createdAt": "2026-01-01T00:00:00Z",
    "updatedAt": "2026-01-01T00:00:00Z",
    "editedAt": "2026-01-01T00:00:00Z",
    "previewImage": {
      "light": "<attachment rid>",
      "dark": "<attachment rid>"
    }
  },
  "commit": {
    "id": "<commit id>",
    "resourceRid": "<resource rid>",
    "parentCommit": "<commit id>",
    "mergeParentCommit": "<commit id>",
    "message": "<message>",
    "isWorkingState": true,
    "committedBy": "<user rid>",
    "committedAt": "2026-01-01T00:00:00Z"
  },
  "charts": [
    {
      "rid": "<viz id>",
      "version": 1
    }
  ],
  "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>"
  }
}

Errors#

Errors shows how these errors are sent.

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

Status

Name

Notes

400

CommitToArchivedTemplate

400

SearchTemplatesLimitExceeded

400

TooManyTemplatesRequested

404

ChartsNotFound

404

TemplatesNotFound

409

CannotReadTemplateRefNames

Types#

Abs#

Computes the absolute value of each point in the series.

x NumericSeries required

Input numeric series.

AbsoluteThreshold#

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

value DoubleConstant required

Allowed spread, in the series’ own unit.

AbsoluteTimestampSeries#

Replaces values in a series with the absolute timestamps.

input Series required

​

timeUnit TimeUnit required

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

Acos#

Computes the arccosine of each value, returning radians.

x NumericSeries required

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

Add#

Adds two numeric series pointwise.

left NumericSeries required

Left-hand operand.

right NumericSeries required

Right-hand operand.

AfterPersistenceWindow#

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

An empty JSON object, {}.

AggregateEnumSeries#

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

input EnumSeries required

​

function EnumAggregationFunction required

​

AggregateNumericSeries#

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

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

input NumericSeries required

​

function NumericAggregationFunction required

​

groupByTags array of StringConstant

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

aggregateByAllGroupings boolean

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

interpolationConfiguration InterpolationConfiguration deprecated

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

AggregateUnderRangesSeries#

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

input NumericSeries required

​

ranges RangeSeries required

​

operation NumericAggregationFunction required deprecated

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

AggregationBuilder#

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

rollingTime RollingTimeAggregationBuilder

​

rollingPoints RollingPointsAggregationBuilder

​

groupBy GroupByAggregationBuilder

​

Alignment#

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

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

driverSeries DriverSeries

​

union Union

​

AlignmentConfiguration#

interpolationConfiguration InterpolationConfiguration required

The interpolation rules to use when aligning the non-driver series.

driverSeries AlignmentDriverSeries required

The 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.

id string (UUID) required

​

panels map of VizId to AnalystPanel

​

AnalystPanel#

timeRangeInputId string (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.

input Dataset required

The dataset to align.

anchor DatasetAnchor required

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

reference AnchorReference

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

AnchorReference#

Selects the anchor timestamp every other anchor is aligned onto.

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

earliestAnchor EarliestAnchorReference

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

AndSeries#

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

left BooleanSeries required

​

right BooleanSeries required

​

api.EventDispositionStatus#

PENDING_REVIEW

​

CLOSED_IGNORED

​

CLOSED_REQUIRES_FURTHER_ACTION

​

NO_DISPOSITION

​

api.EventTimeFilter#

timestamp TimestampConstant required

​

timestampCondition api.EventTimeFilterCondition required

​

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.

input NumericSeries required

​

threshold DoubleConstant required

​

tolerance DoubleConstant required

​

operator ApproximateThresholdOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

ArithmeticSeries#

inputs map of LocalVariableName to NumericSeries

​

expression string required

​

interpolationConfiguration InterpolationConfiguration deprecated

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

ArraySeries#

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

numeric1d Numeric1dArraySeries

​

enum1d Enum1dArraySeries

​

Asin#

Computes the arcsine of each value, returning radians.

x NumericSeries required

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

Asset#

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

rid StringConstant required

Resource identifier of an asset

AssetChannel#

assetRid StringConstant required

​

dataScopeName StringConstant required

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

channel StringConstant required

​

additionalTags map of string to StringConstant deprecated

Deprecated: Use additionalTagFilters

additionalTagFilters TagFilters

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

tagsToGroupBy array of string deprecated

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

groupByTags array of StringConstant

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

AssetDataScopeInputValue#

An asset data scope input value.

assetRid string (RID) required

​

AssetListDataScopeInputValue#

A data scope input value resolving to an explicit list of assets.

assetRids array of string (RID)

​

AssetOffset#

An offset that can be applied to an asset.

offset workbookcommon.api.Offset

​

dataSources map of DataSourceRefName to workbookcommon.api.Offset

​

AssetQueryDataScopeInputValue#

A data scope input value resolving to the assets matching a search query.

query ResourceSearchQuery required

​

AssetSettings#

offset UserDuration

​

dataScopeOffsets map of DataSourceRefName to UserDuration

​

AssetsFilter#

operator SetOperator required

​

assets array of string (RID)

​

AssetsSearchTarget#

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

query ResourceSearchQuery required

Predicate tree used to filter matching assets.

AssigneesFilter#

operator SetOperator required

​

assignees array of string (RID)

​

Atan2#

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

y NumericSeries required

Y-coordinate series.

x NumericSeries required

X-coordinate series.

Average#

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

An empty JSON object, {}.

AxisDisplayOptions#

showTitle boolean required

​

axisWidth number

​

scaleType AxisScaleType

The scale type of the axis. If not specified, the default is LINEAR.

AxisDomainType#

NUMERIC

​

CATEGORICAL

​

AxisPosition#

LEFT

​

RIGHT

​

AxisRange#

start number

​

end number

​

AxisScaleType#

LINEAR

​

LOG

​

AxisThresholdGroup#

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

lineThresholds LineThresholdGroup

​

AxisThresholdVisualization#

axisId string required

​

visibility boolean required

Determines it’s current visibility in the time series chart.

thresholds AxisThresholdGroup required

​

BandPassConfiguration#

lowPassbandFrequency DoubleConstant required

​

highPassbandFrequency DoubleConstant required

​

BandStopConfiguration#

lowStopbandFrequency DoubleConstant required

​

highStopbandFrequency DoubleConstant required

​

BinaryArithmeticOperation#

ATAN2

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

BinaryArithmeticSeries#

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

input1 NumericSeries required

​

input2 NumericSeries required

​

operation BinaryArithmeticOperation required

​

interpolationConfiguration InterpolationConfiguration deprecated

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

BitAnd#

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

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

The value to AND with each point.

BitAndFunction#

operand integer (int64) required

​

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.

position integer required

​

label string required

​

BitFlagMapCellConfig#

visualisation BitFlagMapVisualisation

​

BitFlagMapRawVisualisation#

The settings for a raw bit flag map visualisation.

highColor string

The color when any bit is high

lowColor string

The color when all bits are low

bitFlags array of BitFlag

​

BitFlagMapVisualisation#

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

raw BitFlagMapRawVisualisation

​

BitOperationFunction#

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

and BitAndFunction

​

or BitOrFunction

​

xor BitXorFunction

​

shiftRight BitShiftRightFunction

​

shiftLeft BitShiftLeftFunction

​

bitTest BitTestFunction

​

BitOperationSeries#

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

input NumericSeries required

​

function BitOperationFunction required

​

BitOr#

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

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

The value to OR with each point.

BitOrFunction#

operand integer (int64) required

​

BitShiftLeft#

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

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

Number of positions to shift left.

BitShiftLeftFunction#

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

operand integer required

​

BitShiftRight#

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

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

Number of positions to shift right.

BitShiftRightFunction#

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

operand integer required

​

BitTest#

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

input NumericSeries required

Input numeric series (values cast to int64).

index IntegerConstant required

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

BitTestFunction#

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

index integer required

​

BitXor#

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

input NumericSeries required

Input numeric series (values cast to int64).

operand IntegerConstant required

The value to XOR with each point.

BitXorFunction#

operand integer (int64) required

​

BooleanRanges#

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

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

input BooleanSeries required

The condition whose true regions become ranges.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

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

BooleanSeries#

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

greaterThan GreaterThanSeries

​

lessThan LessThanSeries

​

equalTo EqualToSeries

​

notEqualTo NotEqualToSeries

​

greaterThanOrEqualTo GreaterThanOrEqualToSeries

​

lessThanOrEqualTo LessThanOrEqualToSeries

​

and AndSeries

​

or OrSeries

​

BoundaryType#

The boundary type, with type-specific configuration.

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

source SourceBoundary

​

sink SinkBoundary

​

BoundaryVizDefinition#

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

v1 BoundaryVizDefinitionV1

​

BoundaryVizDefinitionV1#

title string

The label displayed on the boundary.

type BoundaryType required

Whether the boundary is a source or a sink, with type-specific configuration.

fillColor string

Fill 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.

default BucketDisplayConfigDefault

​

singleStat BucketDisplayConfigSingleStat

​

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#

stat BucketDisplayStat required

​

BucketDisplayStat#

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

mean NoConfigDisplayStat

​

min NoConfigDisplayStat

​

max NoConfigDisplayStat

​

count NoConfigDisplayStat

​

sum NoConfigDisplayStat

​

percentile BucketDisplayStatPercentile

​

lttb NoConfigDisplayStat

​

BucketDisplayStatPercentile#

value string required

Percentile 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.

math MathConstant

​

physical PhysicalConstant

​

BuiltInCurveFit#

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

independentVariable CurveFitVariable required

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

BurstDiscVizDefinition#

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

v1 BurstDiscVizDefinitionV1

​

BurstDiscVizDefinitionV1#

title string

The label displayed on the burst disc.

rotationDegrees integer

Clockwise rotation in degrees. Multiples of 90; absent means no rotation.

ButtonVizDefinition#

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

v1 ButtonVizDefinitionV1

​

ButtonVizDefinitionV1#

label string required

The text rendered on the button.

action VizAction required

​

confirmation CommandConfirmation

If present, the frontend must show a confirmation dialog and receive an explicit confirmation before performing the action.

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.

v1 CanvasConnectionV1

​

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.

orthogonal OrthogonalConnectionRouting

​

CanvasConnectionStrokeStyle#

Visual stroke style for a canvas connection.

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

solid SolidStrokeStyle

​

dash DashStrokeStyle

​

CanvasConnectionStyle#

User-configurable visual styling for a canvas connection.

strokeStyle CanvasConnectionStrokeStyle

Defaults to solid when absent.

lineColor string

Explicit color override for the connection line. When absent, clients use the default connection color, or the source object’s boundary color when one applies.

lineWidth integer

Stroke 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.

hideArrow boolean

Draws 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.

start CanvasEndpoint required

The source endpoint.

end CanvasEndpoint required

The target endpoint.

style CanvasConnectionStyle

Visual styling for the connection. If absent, clients use defaults.

routing CanvasConnectionRouting

Manual routing. When absent, clients calculate an automatic route.

CanvasEndpoint#

An endpoint of a canvas connection, identifying an attachment point (anchor) on a canvas object.

objectId string (UUID) required

The canvas object containing the referenced anchor.

anchorId string required

Identifier 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.

id string (UUID) required

​

objects map of string to CanvasObject

​

CanvasObject#

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

panel CanvasPanel

​

connection CanvasConnection

​

CanvasPanel#

A panel node or HMI widget placed on a canvas. Other CanvasObject variants may represent different node types and have their own behavior.

rect CanvasRect required

​

hideLegend boolean deprecated

Deprecated: Deprecated.

CanvasRect#

x number required

​

y number required

​

width number required

​

height number required

​

CartesianChartDefinition#

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

v1 CartesianChartDefinitionV1

​

CartesianChartDefinitionV1#

plots array of CartesianPlot

​

events array of Event deprecated

Deprecated: Please use the workbook’s eventRefs field instead.

comparisonRunGroups array of ComparisonRunGroup

​

title string

​

valueAxes array of ValueAxis

​

decimation ScatterDecimation

The strategy for bucketing points together.

connectPoints boolean

If toggled true, will visually connect the points of the series

floatingLegendsConfig FloatingLegendConfig

Config for showing a floating legend in the chart. If undefined, defaults to hiding.

CartesianPlot#

xVariableName string required

​

yVariableName string required

​

secondaryVariables array of SecondaryVariable

​

enabled boolean

​

xAxisId string required

​

yAxisId string required

​

color string required

Default color for points

colorBy ColorBy

Configuration for dynamic coloring. Overrides color if specified.

CategoricalEqualityRangesV2#

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

inputs array of EnumSeries

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

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

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

equalityOperator EqualityOperator required

​

CategoricalOnChangeRangesV2#

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

input EnumSeries required

​

CategoricalStaleRangesV2#

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

input EnumSeries required

​

threshold compute.api.Duration required

Minimum gap without data that produces an output range.

CategoryFilterRangesV2#

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

input EnumSeries required

​

values array of StringConstant

Category labels matched against each input point.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

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

operator EnumFilterOperator required

​

CenteredInstrumentLayout#

A single row of text centered in the bubble. There is never a divider.

text string

​

ChannelLocator#

dataSourceRef string required

​

channel string required

​

tags map of TagName to string

​

asset string

​

run string

​

inputId string

​

ChannelSeries#

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

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

dataSource DataSourceChannel

​

asset AssetChannel

​

run RunChannel

​

ChannelVariable#

displayName string

​

variableName string required

​

computeSpec ComputeSpec required

​

computeSpecV2 channelvariables.api.ComputeNodeWithContext

optional for backcompatibility. If empty, fall back to computeSpec.

ChannelVariableComputeExpression#

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

v1 ChannelVariableComputeExpressionV1

​

ChannelVariableComputeExpressionInput#

value ChannelVariableComputeExpressionInputValue required

​

dataType ChannelVariableComputeExpressionInputDataType required

​

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.

variable string

​

ChannelVariableComputeExpressionV1#

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

python ChannelVariableComputeExpressionV1Python

​

ChannelVariableComputeExpressionV1Python#

expression string required

The python code string representing the compute for this variable. Can be up to 25000 characters long.

inputMap map of string to ChannelVariableComputeExpressionInput

A map of inputs by the name they’re referenced by in the expression. Inputs can be other channel variables.

nominalComputePythonVersion string

The 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.ComputeNodeWithContext#

computeNode ComputeNode required

Graph representation of the compute for a channel variable.

context WorkbookContext required

​

computeExpression ChannelVariableComputeExpression

Code representation of the compute for a channel variable. Should be equivalent to the computeNode.

chartdefinition.api.Threshold#

value number required

The minimum value a number must be to trigger the threshold color. If used in a staleness cell, this value is in milliseconds.

color string required

The color to apply to the cell when the threshold is active.

label string

A name for this threshold to display while editing.

latch ThresholdLatch

Options for pinning an indicator that data was within the threshold range while streaming.

ChartPanel#

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

v1 ChartPanelV1

​

ChartPanelV1#

id string required

​

chartRid VersionedVizId required

​

hideLegend boolean required deprecated

Deprecated: No longer used.

hideLabel boolean

When omitted, treat as false.

ChecklistChartDefinition#

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

v1 ChecklistChartDefinitionV1

​

ChecklistChartDefinitionV1#

selectedChecklistRids array of string

​

title string

​

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.

secondaryVariable string

Color by a secondary variable configured on the trace.

ColorScheme#

TURBO

​

MAGMA

​

VIRIDIS

​

PLASMA

​

INFERNO

​

ColorStyle#

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

mapped map of string to string

Defines specific colors for specific values

single string

A 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.

v1 ColumnTableStateV1

​

ColumnTableStateV1#

state map of string to any JSON value

Client-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.

inputs array of Dataset

The datasets to combine.

CombineStructSeries#

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

inputs map of string to Series

Input series keyed by struct field name.

interpolationConfiguration InterpolationConfiguration deprecated

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

CommandConfirmation#

title string required

​

description string

​

confirmLabel string

Label for the confirm action. Clients provide a default when absent.

CommandTarget#

A channel that receives a value the user enters.

variableName string required

Channel 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.

floatValue number

​

intValue string

​

enumValue string

​

Commit#

id string required

​

resourceRid string (RID) required

​

parentCommit string

​

mergeParentCommit string

​

message string required

​

isWorkingState boolean required

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

committedBy string (RID) required

​

committedAt string (date-time) required

​

ComparisonRun#

runRid string (RID) required

​

enabled boolean required

​

offsetOverride comparisonrun.api.Offset

​

comparisonrun.api.Offset#

value integer (int64) required

​

unit TimeUnit required

​

ComparisonRunGroup#

uuid string (UUID) required

​

name string required

​

offset comparisonrun.api.Offset required

​

offsetAnchor OffsetAnchor required

​

runs array of ComparisonRun

​

color string

​

compute.api.ComputeNodeWithContext#

seriesNode ComputeNode required

​

context Context required

​

compute.api.Duration#

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

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

reference Reference

​

nanoseconds DurationNanoseconds

​

milliseconds DurationMilliseconds

​

seconds DurationSeconds

​

minutes DurationMinutes

​

hours DurationHours

​

days DurationDays

​

add DurationAdd

​

subtract DurationSubtract

​

negate DurationNegate

​

compute.api.Threshold#

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

absolute AbsoluteThreshold

​

percentage PercentageThreshold

​

ComputeEventQuery#

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

searchText StringConstant

​

after TimestampConstant

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

before TimestampConstant

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

advancedTimeFilter api.EventTimeFilter

​

asset StringConstant

​

template StringConstant

​

workbook StringConstant

​

dataReview StringConstant

​

originType api.SearchEventOriginType

​

dataReviewCheck StringConstant

​

dispositionStatus api.EventDispositionStatus

​

priority StringConstant

​

assignee StringConstant

​

eventType api.EventType

​

createdBy StringConstant

​

label StringConstant

​

property rids.api.Property

​

and array of ComputeEventQuery

​

or array of ComputeEventQuery

​

not ComputeEventQuery

​

workspace StringConstant

​

procedure StringConstant

​

procedureExecution StringConstant

​

stepId StringConstant

​

ComputeNode#

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

enum EnumSeries

​

numeric NumericSeries

​

log LogSeries

​

ranges RangeSeries

​

array ArraySeries

​

struct StructSeries

​

curveFit CurveFit

Deprecated: use curveV2 (CurveFitV2) instead.

curveV2 CurveFitV2

​

video Reference

​

raw Reference deprecated

Deprecated: wrap raw references in a typed compute node.

ComputeSpec#

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

v1 string

​

ConnectingLineConfiguration#

How to draw connecting lines between points

style ConnectingLineStyle required

​

alwaysConnected boolean

When 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.

none NoConnectingLine

​

forwardFill ForwardFillConnectingLine

​

linearInterpolation LinearInterpolationConnectingLine

​

ConstantNumericSeries#

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

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

double DoubleConstant

Create from a floating-point constant.

ContainsSeries#

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

input LogSeries required

​

operator LogFilterOperator required

​

Context#

variables map of VariableName to VariableValue

​

functionVariables map of FunctionReference to FunctionVariables deprecated

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

datasetReferences map of DatasetReferenceName to Dataset

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

defaultFillStrategy FillStrategy

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

defaultAlignmentStrategy Alignment

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

applyDataScopeOffsets boolean

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

resolveAssetsThroughDatasets boolean

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

Cos#

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

x NumericSeries required

Input numeric series (radians).

Count#

The number of points inside the time window.

An empty JSON object, {}.

CumulativeSumSeries#

Calculates the running total of the series values.

input NumericSeries required

​

startTimestamp TimestampConstant required

​

CurveFit#

Deprecated: use CurveFitV2 instead.

curveFitPlotType CurveFitPlotType required

​

curveFitDetails CurveFitDetails required

​

curveFitOptions CurveFitOptions required

​

CurveFitBoundsConfiguration#

min DoubleConstant

​

max DoubleConstant

​

CurveFitDetails#

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

exponential ExponentialCurve

​

logarithmic LogarithmicCurve

​

polynomial PolynomialCurve

​

power PowerCurve

​

CurveFitOptions#

startTime TimestampConstant required

​

endTime TimestampConstant required

​

CurveFitPlotType#

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

timeSeries TimeSeriesCurveFit

​

scatter ScatterCurveFit

​

CurveFitRange#

startTime TimestampConstant required

​

endTime TimestampConstant required

​

CurveFitSeriesVariable#

series NumericSeries required

​

boundsConfig CurveFitBoundsConfiguration

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

CurveFitTarget#

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

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

numeric CurveFitSeriesVariable

​

CurveFitTimeVariable#

timeUnit TimeUnit

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

CurveFitV2#

target CurveFitTarget required

Target to fit the equation against.

fitRange CurveFitRange required

The range to fit the curve over

curveToFit CurveFitV2Details required

The curve type to fit against the target series.

CurveFitV2Details#

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

exponential BuiltInCurveFit

​

logarithmic BuiltInCurveFit

​

polynomial PolynomialCurveFit

​

power BuiltInCurveFit

​

custom CustomCurveFit

​

CurveFitVariable#

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

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

numeric CurveFitSeriesVariable

​

time CurveFitTimeVariable

​

CustomCurveFit#

formula StringConstant required

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

variables map of LocalVariableName to CurveFitVariable

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

parameters map of string to DoubleConstant

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

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.

fullRate NoConfigDataRequestMode

​

bucketed NoConfigDataRequestMode

​

DataReviewChecksFilter#

dataReviewChecks array of string (RID)

​

DataReviewsFilter#

dataReviews array 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.

tag TagDataScopeInputFilter

​

event EventDataScopeInputFilter

​

DataScopeInputValue#

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

asset AssetDataScopeInputValue

​

run RunDataScopeInputValue

​

assetList AssetListDataScopeInputValue

​

runList RunListDataScopeInputValue

​

assetQuery AssetQueryDataScopeInputValue

​

runQuery RunQueryDataScopeInputValue

​

datasetList DatasetListDataScopeInputValue

​

Dataset#

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

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

asset Asset

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

run Run

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

saved SavedDataset

​

search SearchDataset

​

combine CombinedDataset

​

tag TaggedDataset

​

filter FilteredDataset

​

timeShift TimeShiftedDataset

​

alignByAnchor AnchorAlignedDataset

​

withSeries WithSeriesDataset

​

dropSeries DropSeriesDataset

​

reference DatasetReference

​

withDimensions DimensionsDataset

​

DatasetAnchor#

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

run IntervalAnchor

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

DatasetListDataScopeInputValue#

A data scope input value resolving to an explicit list of datasets, without an intermediating run or asset.

datasetRids array of string (RID)

​

DatasetReference#

References a named dataset in Context.datasetReferences.

name StringConstant required

Name of the dataset reference to resolve from the context.

DataSourceChannel#

dataSourceRid StringConstant required

​

channel StringConstant required

​

tags map of string to StringConstant deprecated

Deprecated: Use tagFilters

tagFilters TagFilters

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

tagsToGroupBy array of string deprecated

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

groupByTags array of StringConstant

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

DecimalPlaces#

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

fixed FixedDecimalPlaces

​

max MaxDecimalPlaces

​

DefaultFill#

color string required

​

DerivativeSeries#

Calculates the rate of change between subsequent points.

input NumericSeries required

​

timeUnit TimeUnit

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

negativeValuesConfiguration NegativeValueConfiguration

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

DerivedSeries#

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

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

function FunctionDerivedSeries

​

DetrendType#

The type of detrending to apply to the signal. When absent, will default to the detrend behavior for that function.

CONSTANT

Removes the mean value of the signal.

LINEAR

Removes a best-fit linear trend from the signal.

NO_OP

Does not perform any detrending.

Dimension#

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

tagKey StringConstant

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

value DimensionValue required

The value to inject.

DimensionsDataset#

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

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

input Dataset required

The underlying dataset to tag.

dimensions array of Dimension

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

DimensionValue#

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

stringProperty StringPropertyDimension

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

identity IdentityDimension

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

DisconnectedValueVisualization#

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

alwaysConnect AlwaysConnectDisconnectedValues

​

never NeverConnectDisconnectedValues

​

threshold ThresholdDisconnectedValues

​

Divide#

Divides left by right pointwise.

left NumericSeries required

Numerator.

right NumericSeries required

Denominator.

DocumentLayout#

A layout of a document with its text editor raw state JSON and node objects such as panels metadata.

id string (UUID) required

​

textEditorJson string required

​

nodes map of string to DocumentNodeObject

​

DocumentNodeObject#

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

panel DocumentPanel

​

DocumentPanel#

dimension NodeDimension required

​

timeRangeInputId string (UUID) deprecated

Deprecated: Deprecated, use timeRange instead.

timeRange PanelTimeRange

​

DoubleConstant#

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

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

literal number

Create from a literal floating-point value.

variable string

Create from a named reference name.

builtin BuiltinConstant

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

DriverSeries#

Uses the driver series timestamps as the alignment grid.

An empty JSON object, {}.

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]).

input Dataset required

The base dataset to drop series from.

names array of StringConstant

Names of the series to drop.

DurationAdd#

The sum of two durations.

left compute.api.Duration required

First duration.

right compute.api.Duration required

Second duration.

DurationConstant#

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

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

literal run.api.Duration

Create from a literal duration value.

variable string

Create from a named reference name.

DurationDays#

Constructs a duration from a number of days.

days IntegerConstant required

The number of days.

DurationFilterRanges#

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

input RangeSeries required

​

threshold DurationConstant required

​

operator ThresholdOperator required

​

unboundedBehavior UnboundedBehavior

​

DurationFilterRangesV2#

Filters ranges by duration using an authored Duration expression.

input RangeSeries required

​

duration compute.api.Duration required

The duration each input range is compared against.

unboundedBehavior UnboundedBehavior

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

comparison ThresholdOperator required

​

DurationHours#

Constructs a duration from a number of hours.

hours IntegerConstant required

The number of hours.

DurationMilliseconds#

Constructs a duration from a number of milliseconds.

milliseconds IntegerConstant required

The number of milliseconds.

DurationMinutes#

Constructs a duration from a number of minutes.

minutes IntegerConstant required

The number of minutes.

DurationNanoseconds#

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

nanoseconds IntegerConstant required

The number of nanoseconds.

DurationNegate#

Negates a duration (reverses its sign).

input compute.api.Duration required

The duration to negate.

DurationSeconds#

Constructs a duration from a number of seconds.

seconds IntegerConstant required

The number of seconds.

DurationSubtract#

The difference of two durations (left minus right).

left compute.api.Duration required

Duration to subtract from.

right compute.api.Duration required

Duration to subtract.

EarliestAnchorReference#

Selects the earliest anchor resolved from the input.

An empty JSON object, {}.

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.

v1 EmptyPanelV1

​

EmptyPanelV1#

id string required

​

hideLabel boolean

When omitted, treat as false.

EndNodeVizDefinition#

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

v1 EndNodeVizDefinitionV1

​

EndNodeVizDefinitionV1#

title string

The label displayed on the end node.

rotationDegrees integer

Clockwise rotation in degrees. Multiples of 90; absent means no rotation.

Enum1dArraySelectTagsSeries#

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

input Enum1dArraySeries required

​

tagKeys array of StringConstant

​

Enum1dArraySeries#

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

channel ChannelSeries

​

raw Reference

​

derived DerivedSeries

​

selectEnum1dArray SelectSeries

​

extractFromStruct ExtractEnum1dArrayFromStructSeries

​

toStartOfInterval Enum1dArrayToStartOfIntervalSeries

​

timeShift Enum1dArrayTimeShiftSeries

​

filterByTag Enum1dArrayTagFilterSeries

​

selectTags Enum1dArraySelectTagsSeries

​

Enum1dArrayTagFilterSeries#

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

input Enum1dArraySeries required

​

predicate TagPredicate required

​

Enum1dArrayTimeShiftSeries#

input Enum1dArraySeries required

​

duration DurationConstant required

​

Enum1dArrayToStartOfIntervalSeries#

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

input Enum1dArraySeries required

​

window compute.api.Duration required

​

EnumAggregation#

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

input AggregationBuilder required

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

operator EnumAggregationOperator required

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

EnumAggregationFunction#

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

MIN

​

MAX

​

EnumAggregationOperator#

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

min Empty

​

max Empty

​

udf EnumAggregationUdf

​

EnumAggregationUdf#

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

source UdfSource required

​

EnumArrayCellConfig#

visualisation EnumArrayVisualisation

​

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.

raw EnumArrayRawVisualisation

​

EnumCellConfig#

visualisation EnumValueVisualisation

​

groupBySort EnumGroupBySort

Sorting 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.

constant StringConstant required

​

EnumCountDuplicateSeries#

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

inputs array of EnumSeries

​

EnumDisplayStyle#

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

stacked EnumDisplayStyleStacked

​

inline EnumDisplayStyleInline

​

bar EnumDisplayStyleBar

​

line EnumDisplayStyleLine

​

EnumDisplayStyleBar#

An empty JSON object, {}.

EnumDisplayStyleInline#

An empty JSON object, {}.

EnumDisplayStyleLine#

An empty JSON object, {}.

EnumDisplayStyleStacked#

An empty JSON object, {}.

EnumFilterOperator#

IS_IN

True when the value is contained in the set.

IS_NOT_IN

True when the value is not contained in the set.

MATCHES_ANY_REGEX

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

EnumFilterRanges#

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

input EnumSeries required

​

operator EnumFilterOperator required

​

values StringSetConstant required

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

persistenceWindowConfiguration PersistenceWindowConfiguration

​

EnumFilterTransformationSeries#

Outputs categorical input values that fall within the supplied ranges.

input EnumSeries required

​

filter RangeSeries required

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

EnumGroupBySort#

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

custom EnumGroupBySortCustom

​

alphabetical ValueSort

​

EnumGroupBySortCustom#

order array of string

Specify 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.

input EnumSeries required

​

n IntegerConstant required

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

EnumRawVisualisation#

The settings for a raw enum visualisation.

colorMap map of string to string

​

EnumResampleConfiguration#

interval DurationConstant required

Interval between resampled points

interpolation EnumResampleInterpolationConfiguration

Interpolation strategy to use (defaults to forward fill).

EnumResampleInterpolationConfiguration#

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

forwardFillResampleInterpolationConfiguration ForwardFillResampleInterpolationConfiguration

​

constantResampleInterpolationConfiguration EnumConstantResampleInterpolationConfiguration

​

EnumResampleSeries#

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

input EnumSeries required

​

resampleConfiguration EnumResampleConfiguration required

The interval at which to resample the series and interpolation strategy

EnumResampleSeriesV2#

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

input EnumSeries required

​

interval compute.api.Duration required

Interval at which to resample.

EnumSelectTagsSeries#

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

input EnumSeries required

​

tagKeys array of StringConstant

​

EnumSeries#

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

aggregate AggregateEnumSeries deprecated

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

raw Reference

​

channel ChannelSeries

​

derived DerivedSeries

​

resample EnumResampleSeries

​

resampleV2 EnumResampleSeriesV2

​

nthPointDownsample EnumNthPointDownsampleSeries

​

timeRangeFilter EnumTimeRangeFilterSeries

​

timeShift EnumTimeShiftSeries

​

timeShiftV2 EnumTimeShiftSeriesV2

​

union EnumUnionSeries

​

filterTransformation EnumFilterTransformationSeries

​

valueMap ValueMapSeries

​

select1dArrayIndex SelectIndexFrom1dEnumArraySeries

​

extractFromStruct ExtractEnumFromStructSeries

​

eventAggregation EventsEnumSeries

​

enumAggregation EnumAggregation

​

selectEnum SelectSeries

​

selectCategoricalProperty SelectProperty

​

filterByTag EnumTagFilterSeries

​

selectTags EnumSelectTagsSeries

​

scalarUdf ScalarUdfSeries

​

toStartOfInterval EnumToStartOfIntervalSeries

​

EnumSeriesEqualityRanges#

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

input array of EnumSeries

​

equalityOperator EqualityOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

interpolationConfiguration InterpolationConfiguration deprecated

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

EnumTagFilterSeries#

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

input EnumSeries required

​

predicate TagPredicate required

​

EnumTimeRangeFilterSeries#

Filters the series to points within the specified time range.

input EnumSeries required

​

startTime TimestampConstant

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

endTime TimestampConstant

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

EnumTimeShiftSeries#

input EnumSeries required

​

duration DurationConstant required

​

EnumTimeShiftSeriesV2#

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

input EnumSeries required

​

duration compute.api.Duration required

Duration to shift the input series by.

EnumToNumericSeries#

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

input EnumSeries required

​

mapping map of string to DoubleConstant

The mapping from enum values to doubles.

defaultValue DoubleConstant

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

EnumToStartOfIntervalSeries#

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

input EnumSeries required

​

window compute.api.Duration required

​

EnumUnionOperation#

THROW

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

MAX

Aggregates duplicates by String MAX.

MIN

Aggregates duplicates by String MIN.

EnumUnionSeries#

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

input array of EnumSeries

​

operation EnumUnionOperation required

The strategy to merge points with duplicate timestamps.

EnumValueChannel#

variableName string required

​

visualisation EnumValueVisualisation required

​

EnumValueVisualisation#

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

raw EnumRawVisualisation

​

EqualityOperator#

ALL_EQUAL

​

NOT_ALL_EQUAL

​

EqualToSeries#

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

left NumericSeries required

​

right NumericSeries required

​

Event#

displayName string

​

eventUuid string (UUID) required

​

isPinned boolean required

​

event.EventDispositionStatus#

PENDING_REVIEW

​

CLOSED_IGNORED

​

CLOSED_REQUIRES_FURTHER_ACTION

​

NO_DISPOSITION

​

event.EventTimeFilter#

timestamp Timestamp required

​

timestampCondition event.EventTimeFilterCondition required

​

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.

targetRunRid string (RID) required

​

alignTo EventAlignTo required

​

eventQuery SearchQuery required

​

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.

query ComputeEventQuery required

​

index IntegerConstant

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

sortOrder EventSortOrder

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

EventDataScopeInputFilter#

Restricts an input to all time ranges of events matching a query.

id string (UUID) required

Stable client-provided identifier for the filter.

query ComputeEventQuery required

Event 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).

query ComputeEventQuery required

​

tagBy array of EventTagSource

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

EventLabelTag#

label StringConstant required

​

EventLevelTag#

An empty JSON object, {}.

EventPropertyTag#

propertyName StringConstant required

​

EventsEnumSeries#

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

query ComputeEventQuery required

​

valueSource EventsEnumValueSource required

​

EventsEnumValueSource#

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

property StringConstant

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

level Empty

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

EventSortOrder#

ASC

​

DESC

​

EventsSearchRanges#

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

query ComputeEventQuery required

​

EventTagSource#

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

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

intervalIndex IntervalIndexTag

​

level EventLevelTag

​

property EventPropertyTag

​

label EventLabelTag

​

rangeStartTimestamp IntervalStartTimestampTag

​

EventTimeShift#

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

query ComputeEventQuery required

​

index IntegerConstant

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

sortOrder EventSortOrder

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

EveryNthPerSeriesSampling#

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

n IntegerConstant required

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

ExcludeNegativeValues#

An empty JSON object, {}.

ExponentialCurve#

An empty JSON object, {}.

ExtractEnum1dArrayFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

​

ExtractEnumFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

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

ExtractNumeric1dArrayFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

​

ExtractNumericFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

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

dataType NumericDataType

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

ExtractStructFromStructSeries#

input StructSeries required

​

fieldPath array of StringConstant

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

ExtremaRangesV2#

Produces ranges for the selected extrema type.

input NumericSeries required

​

minimumProminence DoubleConstant

The minimum topographic prominence for an extrema to be returned.

selection PeakType required

​

FftWindow#

BLACKMAN

​

HANN

​

HAMMING

​

RECT

​

Figure#

The root figure definition for a plotly instance

data array of Trace

​

layout Layout required

​

plotlyConfig string required

The json config definition according to plotly’s schema https://plotly.com/python/figure-structure/#the-toplevel-config-attribute

FillLimit#

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

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

duration DurationConstant

​

FillStrategy#

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

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

forwardFill ForwardFill

​

FilterByExpressionSeries#

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

base string required

The variable name for the series that will be returned by this filter. The expression can filter points conditional on multiple series. The base defines which series’ points will be returned after applying all the filters.

inputs map of LocalVariableName to NumericSeries

A map containing all the numeric series present in the expression.

expression string required

An expression that evaluates to a boolean. For example - a > 5.

interpolationConfiguration InterpolationConfiguration deprecated

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

FilteredDataset#

Applies a conjunctive tag predicate to the series produced by the inner dataset. Resolved by threading tag filters into channel specs and folding against known tag assignments; does not add a resolved numeric node.

input Dataset required

The underlying dataset to filter.

predicate TagPredicate required

Conjunctive tag predicate used to keep matching series.

FirstPointMatchingCondition#

The first point in the output range will be the first point where the condition evaluates to true.

An empty JSON object, {}.

FixedDecimalPlaces#

Format the number to a fixed number of decimal places, padding with zeroes or rounding as needed.

places integer required

​

FloatingLegend#

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

perRow PerRowFloatingLegends

​

FloatingLegendConfig#

hidden boolean

Whether to hide the floating legend. Defaults to false.

legend FloatingLegend required

​

hideEmptySeries HideEmptySeries

When 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.

preset FloatingLegendPresetPosition

​

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.

min number

Inclusive lower bound. Absent means unbounded below.

max number

Inclusive upper bound. Absent means unbounded above.

step number

Must 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.

left NumericSeries required

Numerator.

right NumericSeries required

Denominator.

ForwardFill#

At each grid point, carries the most recent prior sample value forward. The value is held only up to the configured limit; grid points with no prior sample within that window are left empty.

limit FillLimit required

​

ForwardFillConnectingLine#

An empty JSON object, {}.

ForwardFillInterpolation#

interpolationRadius DurationConstant required

​

ForwardFillResampleInterpolationConfiguration#

Forward fill interpolation for resampling. Rounds the earliest and latest timestamp up to the nearest interval multiple and generates timestamps at the given interval between the new earliest and latest timestamps. For every timestamp in the resampled timestamps, takes the last known value before the timestamp as the value.

An empty JSON object, {}.

FrequencyChartDefinition#

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

v1 FrequencyChartDefinitionV1

​

v2 FrequencyChartDefinitionV2

​

FrequencyChartDefinitionV1#

plots array of FrequencyPlot

​

events array of Event deprecated

Deprecated: Please use the workbook’s eventRefs field instead.

comparisonRunGroups array of ComparisonRunGroup

​

title string

​

valueAxes array of ValueAxis

​

plotType FrequencyPlotType

The type of plot to display. If not specified, the default is FFT.

FrequencyChartDefinitionV2#

plots array of FrequencyPlotV2

​

events array of Event deprecated

Deprecated: Please use the workbook’s eventRefs field instead.

comparisonRunGroups array of ComparisonRunGroup

​

title string

​

valueAxes array of ValueAxis

​

plotType FrequencyPlotType

The 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.

variableName string required

​

enabled boolean

​

yAxisId string required

​

color string required

​

lineStyle LineStyle required

​

FrequencyPlotMultivariate#

A plot that performs an analysis on an multiple signals and returns data mapped to the frequency domain.

title string

​

variableNames array of string

​

axesIds array of string

​

enabled boolean

​

color string required

​

lineStyle LineStyle required

​

FrequencyPlotType#

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

fft FrequencyPlotTypeFft

​

periodogram FrequencyPlotTypePeriodogram

​

psd FrequencyPlotTypePsd

​

cpsd FrequencyPlotTypeCpsd

​

nyquist FrequencyPlotTypeNyquist

​

bode FrequencyPlotTypeBode

​

FrequencyPlotTypeBode#

alignmentConfiguration AlignmentConfiguration

When 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.

stftOptions StftOptions

​

magnitudeScaling MagnitudeScaling

​

outputFrequencyType OutputFrequencyType

​

unwrapPhase boolean

​

displayMode MagnitudeAndPhaseDisplayMode

Whether to the magnitude or phase of the output. Defaults to MAGNITUDE if not specified.

FrequencyPlotTypeCpsd#

stftOptions StftOptions

​

magnitudeScaling MagnitudeScaling

​

outputFrequencyType OutputFrequencyType

​

unwrapPhase boolean

​

outputPhaseUnit OutputPhaseUnit

​

displayMode MagnitudeAndPhaseDisplayMode

Whether to the magnitude or phase of the output. Defaults to MAGNITUDE if not specified.

FrequencyPlotTypeFft#

window FftWindow

​

peakDetectionMode PeakDetectionMode

The aggregate amplitude to render for bucketed FFT data. If not specified, clients should treat this as the legacy mean behavior.

nfft integer

Length 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#

stftOptions StftOptions

​

FrequencyPlotTypePeriodogram#

method PeriodogramMethod required

​

FrequencyPlotTypePsd#

stftOptions StftOptions

​

magnitudeScaling MagnitudeScaling

​

outputFrequencyType OutputFrequencyType

​

displayMode PsdDisplayMode

How 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.

single FrequencyPlot

​

multivariate FrequencyPlotMultivariate

​

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.

moduleName StringConstant required

​

functionName StringConstant required

​

versionReference ModuleVersionReference required

​

functionArgs map of FunctionParameterName to FunctionParameterValue

Map of function input names to their values. The function inputs must match the function’s parameter names and types. An input must be specified for each of the referenced function’s parameters.

FunctionParameterValue#

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

variable string

​

value VariableValue

​

FunctionVariables#

variables map of VariableName to VariableValue

​

subFunctionVariables map of FunctionReference to FunctionVariables

​

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.

ecef Geo3dCrsEcef

​

local Geo3dCrsCartesian

​

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#

attachmentRid string (RID) required

​

fileExtension string required

​

Geo3dDefaultModel#

FICTIONAL_FIGHTER

​

SATELLITE

​

QUADCOPTER

​

FIXEDWING

​

Geo3dDefinition#

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

v1 Geo3dDefinitionV1

​

Geo3dDefinitionV1#

plots array of GeoPlot3d

​

title string

​

spatialPlots array of GeoPlot3dSpatial

Spatial dataset or channel plots in the 3D viewport.

crs Geo3dCrs

Coordinate reference system for spatial assets in this panel. Absent means ECEF (the original default).

tileSource Geo3dTileSource

Tile provider for the terrain basemap and height.

Geo3dDisplayVector#

A display for a vector direction

vectorId string required

​

kind Geo3dDisplayVectorKind required

​

enabled boolean required

​

Geo3dDisplayVectorKind#

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

sun Geo3dDisplayVectorSun

​

Geo3dDisplayVectorSun#

An empty JSON object, {}.

Geo3dModel#

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

default Geo3dDefaultModel

​

custom Geo3dCustomModel

​

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.

forward Geo3dModelAxis required

​

up Geo3dModelAxis required

​

Geo3dOrientation#

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

principalAxes Geo3dOrientationPrincipalAxes

​

Geo3dOrientationEulerAngles#

Orientation specified as Euler angles yaw/pitch/roll in degrees.

yaw VariableStaticOrChannel required

​

pitch VariableStaticOrChannel required

​

roll VariableStaticOrChannel required

​

Geo3dOrientationPrincipalAxes#

headingVariableName string

​

pitchVariableName string

​

rollVariableName string

​

Geo3dPosition#

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

wgs84 Geo3dPositionWgs84

​

ecef Geo3dPositionEcef

​

local Geo3dPositionLocal

​

Geo3dPositionEcef#

ecefXVariableName string required

​

ecefYVariableName string required

​

ecefZVariableName string 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).

xVariableName string

​

yVariableName string

​

zVariableName string

​

Geo3dPositionWgs84#

latitudeVariableName string required

​

longitudeVariableName string required

​

heightVariableName string

​

Geo3dSensor#

Sensor configuration for 3D scene.

sensorId string required

​

enabled boolean

​

name string

The name of the sensor.

positionOffset Geo3dSensorPositionOffset

Position offset from the parent model origin, in the model’s local frame after orientation.

orientation Geo3dSensorOrientationConfig

The orientation of the sensor.

color string

The color of the sensor.

viewShape Geo3dSensorShape

The shape of the sensor’s view volume.

upMarker boolean

When 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.

eulerAngles Geo3dOrientationEulerAngles

​

nadir Geo3dSensorOrientationNadir

​

zenith Geo3dSensorOrientationZenith

​

Geo3dSensorOrientationNadir#

An empty JSON object, {}.

Geo3dSensorOrientationZenith#

An empty JSON object, {}.

Geo3dSensorPositionOffset#

Position offset in a parent model’s local frame.

modelOffsetX number required

​

modelOffsetY number required

​

modelOffsetZ number required

​

Geo3dSensorShape#

Sensor shape configuration.

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

conic Geo3dSensorShapeConic

​

rectangular Geo3dSensorShapeRectangular

​

spherical Geo3dSensorShapeSpherical

​

Geo3dSensorShapeConic#

A conic frustum shaped sensor volume.

fov VariableStaticOrChannel required

Full field-of-view (FOV) angle, in degrees.

length VariableStaticOrChannel required

Length 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.

includedFov Geo3dSensorShapeRectangularIncludedFov

​

Geo3dSensorShapeRectangularIncludedFov#

A rectangular frustum shaped sensor volume, defined by included angles.

xFov VariableStaticOrChannel required

Full field-of-view (FOV) angle in the sensor’s horizontal direction, in degrees.

yFov VariableStaticOrChannel required

Full field-of-view (FOV) angle in the sensor’s vertical direction, in degrees.

length VariableStaticOrChannel required

Length for the projection, in meters.

videoVariable string

Workbook variable naming a video channel painted on the sensor’s image plane.

Geo3dSensorShapeSpherical#

A spherical sensor volume.

radius VariableStaticOrChannel required

Radius 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.

preset Geo3dTileSourcePreset

​

custom Geo3dTileSourceCustom

​

Geo3dTileSourceCustom#

A user-supplied XYZ tile provider.

colorTemplate string required

Imagery tiles. Must be a valid URL containing {z}, {x}, and {y} exactly once each.

heightTemplate string

Elevation tiles for terrain. Must be a valid URL containing {z}, {x}, and {y} exactly once each.

token string

Replaces the {token} placeholder in the tile URLs. Visible to anyone with access to the field.

Geo3dTileSourcePreset#

A built-in tile provider.

presetId string required

Preset identifier.

token string

Replaces 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#

latitude number required

​

longitude number 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.

point GeoPoint

​

GeoCustomMeasurement#

A custom distance annotation on the map. Units for distance are inherited from GeoVizDefinitionV1

id string (UUID)

​

label string

​

enabled boolean

​

startCoordinate GeoCoordinate required

​

endCoordinate GeoCoordinate required

​

visualizationOptions GeoPlotVisualizationOptions required

​

GeoLine3dStyle#

SOLID

​

DASH

​

NONE

​

GeoLineStyle#

POINTS deprecated

Deprecated: Use SOLID instead.

SOLID

​

DASH

​

NONE

​

GeoOverlaySourceFormat#

KML

​

GeoPlot3d#

plotId string required

​

enabled boolean

​

label string

​

visualizationOptions GeoPlot3dVisualizationOptions required

​

position Geo3dPosition required

​

orientation Geo3dOrientation required

​

modelLocalOrientation Geo3dModelLocalOrientation

​

plotSensors array of Geo3dSensor

​

displayVectors array of Geo3dDisplayVector

​

GeoPlot3dSpatial#

3D plot for a spatial dataset or channel (point cloud, BVH mesh, etc.) loaded by RID.

plotId string required

​

enabled boolean

​

label string

​

spatialRid string (RID) required

​

coloring SpatialColoring deprecated

How to color the asset. If omitted, renderers use a +Z direction ramp with colormap VIRIDIS and default bounds (SpatialColoringGeometryAxis with axis { x: 0, y: 0, z: 1 }). Deprecated: Use properties instead.

properties GeoPlot3dSpatialProperties

Full 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.

v1 GeoPlot3dSpatialPropertiesV1

​

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.

pointSize number

Splat diameter in scene units. Defaults to 0.05.

splatMode SpatialSplatMode

Shape rendered for each point. Defaults to PARABOLIC.

coloring SpatialAppearanceColoring

How to color the point cloud. Defaults to Z-axis gradient with VIRIDIS.

filter SpatialVolumetricFilter

Volumetric visibility filter applied before rendering. Defaults to none.

timeBinding SpatialTimeBinding

Playhead-driven time-visibility binding. Absent means no time filtering.

GeoPlot3dVisualizationOptions#

color string required

​

lineStyle GeoLine3dStyle required

​

model Geo3dModel

​

GeoPlotFromLatLong#

id string (UUID)

​

latitudeVariableName string required

​

longitudeVariableName string required

​

secondaryVariables array of SecondaryVariable

​

enabled boolean

​

label string

​

visualizationOptions GeoPlotVisualizationOptions required

​

GeoPlotFromOverlay#

id string (UUID)

​

attachmentRid string (RID) required

​

sourceFormat GeoOverlaySourceFormat required

​

enabled boolean

​

label string

​

visualizationOptions GeoPlotVisualizationOptions required

​

GeoPlotSecondaryVisibilityConfig#

visible boolean required

​

variableName string

​

GeoPlotVisualizationOptions#

color string required

​

lineStyle GeoLineStyle required

​

arrowStyle GeoArrowStyle

​

secondaryColorVisualization GeoPlotSecondaryVisibilityConfig

If visible, overwrites any existing visualization options on the geo plot.

GeoPoint#

A static coordinate on the map

label string

​

icon string required

​

latitude number required

​

longitude number required

​

variables array of SecondaryVariable

​

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.

v1 GeoVizDefinitionV1

​

GeoVizDefinitionV1#

plots array of GeoPlotFromLatLong

​

backgroundOverlays array of GeoPlotFromOverlay

​

title string

​

customFeatures array of GeoCustomFeature

​

customMeasurements array of GeoCustomMeasurement

​

baseTileset GeoBaseTileset

​

additionalTileset GeoAdditionalTileset

​

unitSystem GeoUnitSystem

​

GreaterThanOrEqualToSeries#

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

left NumericSeries required

​

right NumericSeries required

​

GreaterThanSeries#

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

left NumericSeries required

​

right NumericSeries required

​

GroupByAggregationBuilder#

Groups points by a tag selection and a timestamp policy and applies the operator.

input Series required

The series to group and aggregate.

tags GroupByTags required

Selects which tag keys form the grouping key: GroupByTags.Current() keeps the input series’ currently selected tags, or GroupByTags.Subset([...]) restricts the grouping to a subset of them.

timestamp GroupByTimestamp required

Selects how timestamps participate in the grouping key: GroupByTimestamp.Current() groups on existing timestamps, and GroupByTimestamp.Every(duration) buckets points into fixed-size, epoch-aligned tumbling windows.

alignment GroupByAlignment

Optionally aligns source tag groups that map to the same output tag group before aggregation. Alignment is currently supported only with GroupByTimestamp.Current() and built-in numeric aggregation operators.

GroupByAlignment#

Selects how source tag groups are aligned before aggregation.

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

contextDefaults Empty

Use the compute context’s defaultAlignmentStrategy and defaultFillStrategy.

GroupBySubsetTags#

tags array of StringConstant

Tag keys to group by.

GroupByTags#

Selects which tag keys form the grouping key.

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

current Empty

Group by the tags currently selected on the input series.

subset GroupBySubsetTags

Group by exactly the listed tag keys. Must be a (non-strict) subset of the input series’s currently selected tags.

GroupByTimestamp#

Selects how timestamps participate in the grouping key.

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

current Empty

Use the current timestamps.

every compute.api.Duration

Bucket timestamps into a tumbling fixed-size, epoch-aligned window. A point at timestamp t (nanoseconds) falls into the bucket [floor(t / window) * window, +window), and one aggregated point is emitted per bucket per tag grouping at the bucket start timestamp.

GroupWithinRangesSeriesV2#

Aggregates the input series within each supplied range and emits one point at the range start. Empty ranges emit no point, and ranges without a start use the compute request start.

input NumericSeries required

​

ranges RangeSeries required

One output point is emitted per range, at the range’s start.

aggregation NumericAggregationOperator required

​

HashSubsampleSampling#

Keeps approximately 1/N of raw points via a stateless hash of each point’s timestamp.

n IntegerConstant required

Keep approximately one out of every N points. Must be > 1.

HeatExchangerVizDefinition#

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

v1 HeatExchangerVizDefinitionV1

​

HeatExchangerVizDefinitionV1#

title string

The label displayed on the heat exchanger.

rotationDegrees integer

Clockwise rotation in degrees. Multiples of 90; absent means no rotation.

HiddenMarkerAppearance#

Point markers are not drawn.

An empty JSON object, {}.

HideEmptySeries#

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

always HideEmptySeriesAlways

​

whileStreaming HideEmptySeriesWhileStreaming

​

never HideEmptySeriesNever

​

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#

cutoffFrequency DoubleConstant required

​

HistogramChartDefinition#

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

v1 HistogramChartDefinitionV1

​

HistogramChartDefinitionV1#

plots array of HistogramPlot

​

title string

​

displaySettings HistogramDisplaySettings required

​

numericBucketStrategy NumericHistogramBucketStrategy

​

valueAxis ValueAxis

​

HistogramDisplaySettings#

stacked boolean required

​

sort HistogramSortOrder required

​

HistogramPlot#

variableName string required

​

enabled boolean

​

color string 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.

typeRid StringConstant required

Resource identifier of the type whose primary key identifies the asset.

ImageAnchor#

A connection point, positioned on an unrotated image.

x number required

Horizontal position from 0 to 1 across the unrotated image, left to right.

y number required

Vertical 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.

v1 ImageVizDefinitionV1

​

ImageVizDefinitionV1#

title string

​

attachmentRid string (RID)

The uploaded image attachment. Absent until an image has been uploaded.

alt string

Alternative text for the image, for accessibility.

objectFit ImageObjectFit

How the image fills its container. Clients provide a default when absent.

rotationDegrees integer

Clockwise rotation in degrees. Multiples of 90; absent means no rotation.

anchors map of string to ImageAnchor

Connection points, keyed by the id CanvasEndpoint.anchorId references.

InheritRelativeTimestampFormat#

Inherit the user-level relative timestamp display format.

An empty JSON object, {}.

InputOffset#

offset workbookcommon.api.Offset

An offset applied to every child of a dataScope input.

assets map of AssetRid to AssetOffset

Additive offsets to specific assets

runs map of RunRid to RunOffset

Additive offsets to specific runs

InputType#

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

tag Tag

​

InstrumentDivider#

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

solid SolidInstrumentDivider

​

InstrumentLayout#

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

centered CenteredInstrumentLayout

​

twoRow TwoRowInstrumentLayout

​

InstrumentVizDefinition#

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

v1 InstrumentVizDefinitionV1

​

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.

title string

The label displayed on the instrument.

layout InstrumentLayout

How 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.

literal integer

Create from a literal integer value.

variable string

Create from a named reference name.

IntegerNumberInput#

Accepts whole numbers only. min must be less than or equal to max.

min integer (int64)

Inclusive lower bound. Absent means unbounded below.

max integer (int64)

Inclusive upper bound. Absent means unbounded above.

step integer (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.

input NumericSeries required

​

startTimestamp TimestampConstant required

​

timeUnit TimeUnit

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

InterpolationConfiguration#

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

forwardFillInterpolation ForwardFillInterpolation

​

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.

inputs array of RangeSeries

​

IntervalAnchor#

Selects which boundary of an interval to use as its anchor.

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

intervalStart IntervalStartTimeShift

Uses the interval’s start timestamp.

intervalEnd IntervalEndTimeShift

Uses the interval’s end timestamp.

eventInInterval EventAnchor

​

rangeInInterval RangesAnchor

​

IntervalEndTimeShift#

Shift by each tagging interval’s resolved end; resolution throws if end is missing.

An empty JSON object, {}.

IntervalIndexTag#

An empty JSON object, {}.

IntervalSource#

Where the intervals come from and how each is labeled.

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

events EventIntervalSource

​

ranges RangeIntervalSource

​

IntervalStartTimeShift#

Shift by each tagging interval’s resolved start; resolution throws if start is missing.

An empty JSON object, {}.

IntervalStartTimestampTag#

An empty JSON object, {}.

LabelsFilter#

operator SetOperator required

​

labels array of string

​

Layout#

plotlyLayout string required

The 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.

left NumericSeries required

​

right NumericSeries required

​

LessThanSeries#

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

left NumericSeries required

​

right NumericSeries required

​

LinearInterpolationConnectingLine#

An empty JSON object, {}.

LineStyle#

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

v1 LineStyleV1

​

LineStyleV1#

SOLID

​

DASH

​

LineThreshold#

value number required

​

label string

​

color string required

​

lineStyle ThresholdLineStyle required

​

LineThresholdGroup#

Line thresholds are used to mark values or demarcate regions along a single axis.

shadingConfig ThresholdShadingConfig required

​

lines array of LineThreshold

​

defaultFill DefaultFill

To 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.

startTimestamp TimestampConstant

​

endTimestamp TimestampConstant

​

tags map of string to string

​

LiteralRanges#

A list of literal ranges.

literalRanges array of LiteralRange

​

LiteralTimeRange#

A standard definition of a time range, optional t0 defined for relative time ranges.

absoluteRange Range required

​

timeRangeType TimeRangeType required

​

t0 Timestamp

​

Ln#

Computes the natural logarithm (base e) of each value.

x NumericSeries required

Input numeric series (positive values).

Log10#

Computes the base-10 logarithm of each value.

x NumericSeries required

Input numeric series (positive values).

LogArgFilterOperator#

Matches against a single log arg.

key StringConstant required

​

operator LogRegexFilterOperator required

​

LogarithmicCurve#

An empty JSON object, {}.

LogChannel#

A field to save additional column names on log panels with support for multiple variables

logChannelVariableName string required

​

visibleLogColumnNames array of string

​

tagFilters map 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.

literal map 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.

token string required

​

LogFilterOperator#

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

regexFilter LogRegexFilterOperator

​

exactMatchCaseInsensitiveFilter LogExactMatchCaseInsensitiveFilter

​

arg LogArgFilterOperator

​

and array of LogFilterOperator

​

or array of LogFilterOperator

​

not LogFilterOperator

​

LogFilterSeries#

Outputs only values of the log plot that satisfy the filter.

input LogSeries required

​

operator LogFilterOperator required

​

LogPanelDefinition#

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

v1 LogPanelDefinitionV1

​

LogPanelDefinitionV1#

title string

​

logChannels array of string

​

logChannelsV2 array of LogChannel

​

LogRegexFilterOperator#

Matches a text value against the given re2 regular expression. Regular expression syntax: https://github.com/google/re2/wiki/Syntax.

regex string required

​

LogSelectTagsSeries#

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

input LogSeries required

​

tagKeys array of StringConstant

​

LogSeries#

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

raw Reference

​

channel ChannelSeries

​

derived DerivedSeries

​

selectLogs SelectSeries

​

union LogUnionSeries

​

filter LogFilterSeries

​

timeShift LogTimeShiftSeries

​

toStartOfInterval LogToStartOfIntervalSeries

​

filterByTag LogTagFilterSeries

​

selectTags LogSelectTagsSeries

​

LogTagFilterSeries#

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

input LogSeries required

​

predicate TagPredicate required

​

LogTimeShiftSeries#

input LogSeries required

​

duration DurationConstant required

​

LogToStartOfIntervalSeries#

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

input LogSeries required

​

window compute.api.Duration required

​

LogUnionOperation#

KEEP_ALL

Keeps all points if multiple series contain points with a duplicate timestamp.

LogUnionSeries#

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

input array of LogSeries

​

operation LogUnionOperation required

The strategy to merge points with duplicate timestamps.

LowPassConfiguration#

cutoffFrequency DoubleConstant required

​

MagnitudeAndPhaseDisplayMode#

MAGNITUDE

​

PHASE

​

MagnitudeScaling#

LINEAR

Linear scaling of the magnitude.

MAGNITUDE_DB_10

Scales the magnitude via 10 * log10(magnitude).

MAGNITUDE_DB_20

Scales the magnitude via 20 * log10(magnitude).

MarkdownPanelDefinition#

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

v1 MarkdownPanelDefinitionV1

​

MarkdownPanelDefinitionV1#

title string

​

content string

The 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.

fullSize FullSizeMarkerAppearance

​

hidden HiddenMarkerAppearance

​

MathConstant#

Math constants referenceable by name.

PI

The circle constant π (dimensionless).

TAU

The circle constant τ = 2π (dimensionless).

E

Euler’s number e (dimensionless).

MaxDecimalPlaces#

Format the number to a maximum number of decimal places, rounding numbers that have greater precision.

places integer 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.

inputs array of NumericSeries

Input series across which to take the pointwise maximum

interpolationConfiguration InterpolationConfiguration deprecated

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

MeanSeries#

For every timestamp specified in the input series, outputs a value that is the mean for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise mean

interpolationConfiguration InterpolationConfiguration deprecated

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

Minimum#

The minimum value of points inside the time window.

An empty JSON object, {}.

MinMaxThresholdOperator#

OUTSIDE_BOUNDS

​

OUTSIDE_OR_EQUAL_TO_BOUNDS

​

INSIDE_BOUNDS

​

INSIDE_OR_EQUAL_TO_BOUNDS

​

MinMaxThresholdRanges#

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

input NumericSeries required

​

lowerBound DoubleConstant required

​

upperBound DoubleConstant required

​

operator MinMaxThresholdOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

MinSeries#

For every timestamp specified in the input series, outputs a value that is the minimum for that timestamp across all input series. Only outputs timestamps where all input series have an entry for that timestamp, subject to interpolation.

inputs array of NumericSeries

Input series across which to take the pointwise minimum

interpolationConfiguration InterpolationConfiguration deprecated

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

ModuleVersionReference#

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

pinned PinnedModuleVersionReference

​

Modulo#

Computes the remainder of left divided by right pointwise.

left NumericSeries required

Dividend.

right NumericSeries required

Divisor.

Multiply#

Multiplies two numeric series pointwise.

left NumericSeries required

Left-hand operand.

right NumericSeries required

Right-hand operand.

NamedSeries#

name StringConstant required

Name of the new derived series.

definition Series required

Compute expression defining the series values.

Negate#

Negates each value in the series pointwise (multiplies by -1).

x NumericSeries required

Input numeric series.

NegativeValueConfiguration#

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

allowNegativeValues AllowNegativeValues

Include negative output values

setNegativeValuesToZero SetNegativeValuesToZero

Set negative output values to zero

excludeNegativeValues ExcludeNegativeValues

Exclude points with negative output values

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.

width number required

​

height number required

​

nominal.api.Property#

name string required

​

value string required

​

NormallyClosedValvePosition#

An empty JSON object, {}.

NormallyOpenValvePosition#

An empty JSON object, {}.

NotEqualToSeries#

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

left NumericSeries required

​

right NumericSeries required

​

NotRanges#

The not ranges node will invert the ranges, filling the negative space in time.

input RangeSeries required

​

NumberFormat#

Number format for numeric cells, eg 1e4 | 10000 | 10,000.

sigFigs integer

Include the specified number of significant figures, rounding if needed.

displayOption NumberFormatDisplayOption

The base display format for the number.

fixedDecimalPlaces integer deprecated

Deprecated: use decimalPlaces instead

decimalPlaces DecimalPlaces

Options 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.

sendCommands NumberInputSendCommandsAction

​

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.

trigger NumberInputTrigger

Absent means commit.

targets array of CommandTarget

The 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.

confirmation CommandConfirmation

If 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.

commit NumberInputCommitTrigger

​

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.

float FloatNumberInput

sendCommands sends CommandValue.floatValue; command targets must be DOUBLE channels.

integer IntegerNumberInput

sendCommands 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.

v1 NumberInputVizDefinitionV1

​

NumberInputVizDefinitionV1#

A number input whose entered value is applied by action. A value that violates the constraints of numberType is never applied.

title string

The label displayed with the input.

numberType NumberInputType required

​

unit string

Unit label rendered beside the input, such as “psi”. Display only; the value is applied as entered.

action NumberInputAction required

​

Numeric1dArraySelectTagsSeries#

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

input Numeric1dArraySeries required

​

tagKeys array of StringConstant

​

Numeric1dArraySeries#

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

channel ChannelSeries

​

raw Reference

​

derived DerivedSeries

​

selectNumeric1dArray SelectSeries

​

extractFromStruct ExtractNumeric1dArrayFromStructSeries

​

toStartOfInterval Numeric1dArrayToStartOfIntervalSeries

​

timeShift Numeric1dArrayTimeShiftSeries

​

filterByTag Numeric1dArrayTagFilterSeries

​

selectTags Numeric1dArraySelectTagsSeries

​

Numeric1dArrayTagFilterSeries#

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

input Numeric1dArraySeries required

​

predicate TagPredicate required

​

Numeric1dArrayTimeShiftSeries#

input Numeric1dArraySeries required

​

duration DurationConstant required

​

Numeric1dArrayToStartOfIntervalSeries#

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

input Numeric1dArraySeries required

​

window compute.api.Duration required

​

NumericAggregation#

Aggregates an input series using the given operator. The shape of the aggregation (rolling time window, rolling point-count window, or group by) is selected by the aggregation builder passed as input. The operator must be compatible with that builder’s series, producing a numeric output: count reduces a series of any type, whereas SUM requires a numeric series.

input AggregationBuilder required

The aggregation shape to apply the operator over: a rolling time window, a rolling point-count window, or a group-by.

operator NumericAggregationOperator required

The reduction applied to each window or group (e.g. sum, mean, percentile). Must be compatible with the input series, producing a numeric output: Count works on any input series, whereas reductions like Sum require a numeric series.

NumericAggregationFunction#

DEPRECATED. Use NumericAggregationOperator instead.

SUM

​

MEAN

​

MIN

​

MAX

​

COUNT

​

STANDARD_DEVIATION

​

ROOT_MEAN_SQUARE

​

NumericAggregationOperator#

Unified numeric aggregation used across rolling windows, plain aggregates, range aggregates, union merges, and per-bucket summarization.

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

sum Summation

​

average Average

​

min Minimum

​

max Maximum

​

count Count

​

standardDeviation StandardDeviation

​

rootMeanSquare RootMeanSquare

​

percentile Percentile

​

udf NumericAggregationUdf

​

NumericAggregationUdf#

A user-defined numeric aggregation. The aggregation builder controls grouping/windowing. Supported Rust entrypoints accept grouped value vectors, optionally with leading sample timestamps, and return either one numeric value or timestamped numeric point(s), e.g. fn rms(values: Vec<f64>) -> f64, fn energy(timestamp_ns: Vec<i64>, values: Vec<f64>) -> f64, fn first(timestamp_ns: Vec<i64>, values: Vec<f64>) -> (i64, f64), or fn passthrough(timestamp_ns: Vec<i64>, values: Vec<f64>) -> Vec<(i64, f64)>. The value vector’s element type follows the aggregated series: Vec<f64> for a numeric series, and Vec<String> for a categorical or struct series, where each struct row arrives as a JSON object. A UDF over a combined struct series may instead take one vector per named struct field it needs, e.g. fn mean_product(channel0: Vec<f64>, channel1: Vec<f64>) -> f64. Parameter names select the fields, so a subset of the struct’s fields in any order is accepted.

source UdfSource required

​

NumericApproximateFilterSeries#

Outputs the values of the numeric plot value that are approximately equal to the threshold value.

input NumericSeries required

​

threshold DoubleConstant required

​

tolerance DoubleConstant required

​

operator ApproximateThresholdOperator required

​

NumericArrayCellConfig#

visualisation NumericArrayVisualisation

​

numberFormat NumberFormat

​

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.

raw NumericArrayRawVisualisation

​

NumericBarGaugeVisualisation#

The settings for a bar gauge visualisation.

lowThreshold number required

​

highThreshold number 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.

thresholds array of chartdefinition.api.Threshold

Modifies 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.

lower number required

​

upper number required

​

NumericCellConfig#

visualisation NumericValueVisualisationV2

​

numberFormat NumberFormat

​

groupBySort NumericGroupBySort

Sorting 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.

constant DoubleConstant required

​

NumericDataType#

Supported numeric data types for value casting.

INT64

​

FLOAT64

​

UINT64

​

NumericEqualityRangesV2#

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

inputs array of NumericSeries

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

tolerance DoubleConstant

Maximum spread between the inputs still counted as equal. Defaults to zero, i.e. exact equality.

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

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

equalityOperator EqualityOperator required

​

NumericFilterTransformationSeries#

Outputs the input points whose timestamps fall within the supplied ranges.

input NumericSeries required

​

filter RangeSeries required

Keeps input points whose timestamps fall inside any of these ranges.

NumericFilterWhereSeries#

Outputs numeric input values where the provided Boolean expression evaluates to true.

input NumericSeries required

​

condition BooleanSeries required

Condition evaluated point-wise at each input timestamp. A point is only kept where the condition is true.

NumericGroupBySort#

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

value ValueSort

​

NumericHistogramBucketStrategy#

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

bucketCount IntegerConstant

The 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.

bucketWidthAndOffset NumericHistogramBucketWidthAndOffset

​

NumericHistogramBucketWidthAndOffset#

width DoubleConstant required

The 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.

offset DoubleConstant

The 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.

condition BooleanSeries required

Boolean series evaluated at each point to choose between the trueValue and falseValue branches.

trueValue NumericSeries required

Value emitted at points where condition is true.

falseValue NumericSeries required

Value emitted at points where condition is false.

NumericLargestTriangleThreeBucketsSeries#

Applies Largest-Triangle-Three-Buckets to a numeric time series for visualization-oriented downsampling. The algorithm preserves the first and last points, partitions the remaining input points based on the requested output count, and selects points that preserve the visual shape of the series. Results are selected input timestamp/value points, not fixed-width bucket aggregate rows.

input NumericSeries required

​

maxPointsToReturn IntegerConstant required

Maximum number of selected points to return. Must be positive and no greater than 10,000.

NumericNanFilter#

Removes points where the value is NaN from the input series.

input NumericSeries required

Input numeric series.

NumericNthPointDownsampleSeries#

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

input NumericSeries required

​

n IntegerConstant required

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

NumericPresetColorRange#

Color interpolation for numeric values using a preset color scheme.

low number required

​

high number required

​

preset ColorScheme required

​

NumericPropertyPredicate#

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

name string required

​

value number required

​

operator PropertyComparisonOperator required

​

NumericPropertyRangeOperator#

BETWEEN

​

NOT_BETWEEN

​

NumericPropertyRangePredicate#

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

name string required

​

min number

​

max number

​

operator NumericPropertyRangeOperator required

​

NumericRawVisualisation#

An empty JSON object, {}.

NumericRawVisualisationV2#

A raw numeric visualisation with optional coloring based on numeric thresholds.

thresholds array of chartdefinition.api.Threshold

Modifies the visualisation based on the highest threshold value that the computed value surpasses.

NumericResampleConfiguration#

interval DurationConstant required

Interval between resampled points

interpolation NumericResampleInterpolationConfiguration

Interpolation strategy to use (defaults to forward fill).

NumericResampleInterpolationConfiguration#

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

forwardFillResampleInterpolationConfiguration ForwardFillResampleInterpolationConfiguration

​

constantResampleInterpolationConfiguration NumericConstantResampleInterpolationConfiguration

​

NumericResampleSeries#

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

input NumericSeries required

​

resampleConfiguration NumericResampleConfiguration required

The interpolation strategy and interval at which to resample the series

NumericResampleSeriesV2#

Resamples the input series at the authored interval using forward-fill.

input NumericSeries required

​

interval compute.api.Duration required

Interval at which to resample.

NumericSelectTagsSeries#

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

input NumericSeries required

​

tagKeys array of StringConstant

​

NumericSeries#

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

abs Abs

​

negate Negate

​

cos Cos

​

sin Sin

​

tan Tan

​

acos Acos

​

asin Asin

​

ln Ln

​

log10 Log10

​

sqrt Sqrt

​

add Add

​

subtract Subtract

​

multiply Multiply

​

divide Divide

​

floorDivide FloorDivide

​

power Power

​

modulo Modulo

​

atan2 Atan2

​

max MaxSeries

​

mean MeanSeries

​

min MinSeries

​

sum SumSeries

​

union NumericUnionSeries

​

product ProductSeries

​

constant ConstantNumericSeries

​

selectNewestPoints SelectNewestPointsSeries

​

selectNumeric SelectSeries

​

selectNumericProperty SelectProperty

​

selectOldestPoints SelectOldestPointsSeries

​

bitAnd BitAnd

​

bitOr BitOr

​

bitXor BitXor

​

bitShiftRight BitShiftRight

​

bitShiftLeft BitShiftLeft

​

bitTest BitTest

​

ifElse NumericIfElseSeries

​

numericAggregation NumericAggregation

​

countDuplicate EnumCountDuplicateSeries

​

cumulativeSum CumulativeSumSeries

​

derivative DerivativeSeries

​

integral IntegralSeries

​

zScore ZscoreSeries

​

raw Reference

​

derived DerivedSeries

​

resample NumericResampleSeries

​

resampleV2 NumericResampleSeriesV2

​

nthPointDownsample NumericNthPointDownsampleSeries

​

largestTriangleThreeBuckets NumericLargestTriangleThreeBucketsSeries

​

signalFilter SignalFilterSeries

​

timeDifference TimeDifferenceSeries

​

absoluteTimestamp AbsoluteTimestampSeries

​

timeRangeFilter NumericTimeRangeFilterSeries

​

timeShift NumericTimeShiftSeries

​

timeShiftV2 NumericTimeShiftSeriesV2

​

unitConversion UnitConversionSeries

​

unitOverride UnitOverrideSeries

​

valueDifference ValueDifferenceSeries

​

filterTransformation NumericFilterTransformationSeries

​

filterWhere NumericFilterWhereSeries

​

thresholdFilter NumericThresholdFilterSeries

​

approximateFilter NumericApproximateFilterSeries

​

dropNan NumericNanFilter

​

select1dArrayIndex SelectIndexFrom1dNumericArraySeries

​

aggregateUnderRanges AggregateUnderRangesSeries

​

rangeDuration RangeDurationSeries

​

groupWithinRangesV2 GroupWithinRangesSeriesV2

​

filterByExpression FilterByExpressionSeries

​

scalarUdf ScalarUdfSeries

​

enumToNumeric EnumToNumericSeries

​

contains ContainsSeries

​

refprop RefpropSeries

​

refpropV2 RefpropSeriesV2

​

extractFromStruct ExtractNumericFromStructSeries

​

tagByIntervals TagByIntervalsSeries

​

filterByTag NumericTagFilterSeries

​

selectTags NumericSelectTagsSeries

​

toStartOfInterval NumericToStartOfIntervalSeries

​

phaseUnwrap PhaseUnwrapSeries

​

aggregate AggregateNumericSeries deprecated

Deprecated: AggregateNumericSeries is deprecated. Use numericAggregation with aggregation.GroupByAggregationBuilder instead.

rollingOperation RollingOperationSeries deprecated

Deprecated: RollingOperationSeries is deprecated. Use numericAggregation with aggregation.RollingTimeAggregationBuilder instead.

bitOperation BitOperationSeries deprecated

Deprecated: BitOperationSeries is deprecated in favor of individual nodes for each operation.

channel ChannelSeries deprecated

Deprecated: Deprecated in favor of the SelectSeries node

offset OffsetSeries deprecated

Deprecated: OffsetSeries is deprecated in favor of add with a constant.

scale ScaleSeries deprecated

Deprecated: ScaleSeries is deprecated in favor of multiply with a constant.

arithmetic ArithmeticSeries deprecated

Deprecated: ArithmeticSeries is deprecated in favor of individual nodes for each operation.

unaryArithmetic UnaryArithmeticSeries deprecated

Deprecated: UnaryArithmeticSeries is deprecated in favor of individual nodes for each operation.

binaryArithmetic BinaryArithmeticSeries deprecated

Deprecated: BinaryArithmeticSeries is deprecated in favor of individual nodes for each operation.

NumericStaleRangesV2#

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

input NumericSeries required

​

threshold compute.api.Duration required

Minimum gap without data that produces an output range.

NumericTagFilterSeries#

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

input NumericSeries required

​

predicate TagPredicate required

​

NumericThresholdFilterSeries#

Outputs only the values of the numeric plot value that satisfy the threshold condition.

input NumericSeries required

​

threshold DoubleConstant required

​

operator ThresholdOperator required

​

NumericTimeRangeFilterSeries#

Filters the series to points within the specified time range.

input NumericSeries required

​

startTime TimestampConstant

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

endTime TimestampConstant

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

NumericTimeShiftSeries#

input NumericSeries required

​

duration DurationConstant required

​

NumericTimeShiftSeriesV2#

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

input NumericSeries required

​

duration compute.api.Duration required

Duration to shift the input series by.

NumericToStartOfIntervalSeries#

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

input NumericSeries required

​

window compute.api.Duration required

​

NumericUnionOperation#

DEPRECATED: apply aggregations as a separate step over the unioned output.

MIN

Combines multiple points by taking the minimum value

MAX

Combines multiple points by taking the maximum value

MEAN

Combines multiple points by taking the mean of the values

SUM

Combines multiple points by taking the sum of the values

COUNT

Combines multiple points by taking the count of the values

STANDARD_DEVIATION

Combines multiple points by taking the standard deviation of the values

ROOT_MEAN_SQUARE

Combines multiple points by taking the root mean square of the values

THROW

Throws a DuplicateTimestamp error if two series contain points with a duplicate timestamp.

NumericUnionSeries#

Combines multiple numeric series together and outputs a single series. By default, points from the inputs are concatenated (SQL {@code UNION ALL}) and duplicate timestamps across inputs are preserved. To aggregate values that share a timestamp, do a separate aggregation step next.

input array of NumericSeries

Input series to union

operation NumericUnionOperation deprecated

The strategy to merge points with duplicate timestamps. Deprecated: Apply aggregations as a separate step over the unioned output.

NumericValueChannel#

variableName string required

​

visualisation NumericValueVisualisation required

​

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.

equals number

​

lessThan number

​

greaterThan number

​

gte number

​

lte number

​

notEqual number

​

between NumericBetweenPredicate

​

NumericValueVisualisation#

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

raw NumericRawVisualisation

​

barGauge NumericBarGaugeVisualisation

​

NumericValueVisualisationV2#

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

raw NumericRawVisualisationV2

​

bar NumericBarVisualisationV2

​

OffsetAnchor#

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

run OffsetRunAnchor

​

series OffsetSeriesAnchor

​

OffsetRunAnchor#

An empty JSON object, {}.

OffsetSeries#

For every timestamp specified in the input series, offset it by a constant factor.

input NumericSeries required

​

scalar DoubleConstant required

The constant to add to each point

OffsetSeriesAnchor#

seriesVariable string 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.

input Series required

​

OrificeVizDefinition#

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

v1 OrificeVizDefinitionV1

​

OrificeVizDefinitionV1#

title string

The label displayed on the orifice.

rotationDegrees integer

Clockwise rotation in degrees. Multiples of 90; absent means no rotation.

OriginTypesFilter#

operator SetOperator required

​

originTypes array of event.SearchEventOriginType

​

OrSeries#

Combines two boolean series point-wise using logical OR, producing true where either input is true and false otherwise.

left BooleanSeries required

​

right BooleanSeries required

​

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.

segmentPositions array of number

​

OutputFrequencyType#

LINEAR

Frequency in Hertz.

ANGULAR

Frequency in radians per second.

NORMALIZED_LINEAR

Normalized frequency, in the range [0, 0.5] for real-valued signals.

NORMALIZED_ANGULAR

Normalized 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.

firstPointMatchingCondition FirstPointMatchingCondition

The first point in the output range will be the first point where the condition evaluates to true.

afterPersistenceWindow AfterPersistenceWindow

The output range will contain points where the condition has been true for at least the min duration and min points.

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.

input RangeSeries required

​

padding DurationConstant required

​

paddingConfiguration RangePaddingConfiguration

Configuration for how to apply padding to the ranges. Defaults to PAD_START_AND_END if not specified.

PaddedRangesV2#

Expands ranges using an authored Duration expression and a selected padding direction.

input RangeSeries required

​

duration compute.api.Duration required

How far to extend each range on every padded side.

paddingConfiguration RangePaddingConfiguration required

​

Panel#

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

viz VizPanel

​

chart ChartPanel

​

empty EmptyPanel

​

split SplitPanel

​

tabbed TabbedPanel

​

canvas CanvasLayout

​

document DocumentLayout

​

analyst AnalystLayout

​

PanelBucketStrategy#

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

auto PanelBucketStrategyAuto

​

fixed PanelBucketStrategyFixed

​

duration PanelBucketStrategyDuration

​

PanelBucketStrategyAuto#

An empty JSON object, {}.

PanelBucketStrategyDuration#

duration UserDuration required

​

PanelBucketStrategyFixed#

bucketCount integer 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.

input string (UUID)

​

literal LiteralTimeRange

​

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.

input NumericSeries required

​

returnsPeaks boolean deprecated

True if returning peaks, else troughs. Deprecated: No longer used, use returnType instead

returnType PeakType

Optional for backcompatibility.

minimumProminence DoubleConstant

The minimum topographic prominence for an extrema to be returned. Prominence is the minimum vertical distance needed to travel from an extrema to one of greater magnitude.

PeakType#

PEAK

​

TROUGH

​

BOTH

​

PercentageThreshold#

Threshold defined as the percentage of a given value.

value DoubleConstant required

Allowed spread, as a percentage of the window’s mean value.

Percentile#

The value at the specified percentile.

percentile DoubleConstant required

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

PeriodogramMethod#

WELCH_BLACKMAN

​

WELCH_HANN

​

WELCH_HAMMING

​

WELCH_RECT

​

PerRowFloatingLegends#

Show a separate floating legend for the series in each row of the chart.

position FloatingLegendPosition

Position of the floating legend in the chart. If undefined, defaults to preset BOTTOM_LEFT.

PersistAll#

An empty JSON object, {}.

PersistByValue#

values array 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.

minPoints IntegerConstant

The minimum number of points for which this condition be must satisfied to include the time range in the output. Must be non-negative. If not present, will default to 1.

minDuration DurationConstant

The minimum number of points for which this condition must be satisfied to include the time range in the output. Must be non-negative. If not present, will default to 1 nanosecond.

outputRangeStart OutputRangeStart required

Which point to use as the start of the output range. Defaults to firstPointMatchingCondition if not specified.

PersistValueOverlay#

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

byValue PersistByValue

​

all PersistAll

​

PhaseUnwrapSeries#

Removes discontinuities from a wrapping signal (e.g. phase or heading) by adding whole multiples of period whenever the step between consecutive samples exceeds half the period. Output length equals input length.

input NumericSeries required

​

period DoubleConstant required

The wrapping period of the signal (e.g. 2*pi for radians, 360 for degrees). A jump between consecutive samples greater than period/2 in magnitude is corrected by adding/subtracting a whole multiple of period.

PhysicalConstant#

Physical constants referenceable by name. The server resolves the symbol to its numeric value in SI units.

SPEED_OF_LIGHT

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

AVOGADRO

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

BOLTZMANN

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

PLANCK

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

ELEMENTARY_CHARGE

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

GAS_CONSTANT

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

STANDARD_GRAVITY

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

STANDARD_ATMOSPHERE

Standard atmosphere, 101325 Pa (exact by convention).

ABSOLUTE_ZERO_CELSIUS

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

GRAVITATIONAL_CONSTANT

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

STEFAN_BOLTZMANN

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

PinnedModuleVersionReference#

version StringConstant required

​

PlotColoringConfiguration#

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

rowIndependent RowIndependentPlotColoringConfiguration

Series plotted on each row is colored independently of series in other rows.

rowShared RowSharedPlotColoringConfiguration

Series 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.

v1 PlotlyPanelDefinitionV1

​

PlotlyPanelDefinitionV1#

title string

​

preset PlotlyPreset

A preset that will render a nominal-defined plotly figure with minimum necessary inputs

figure Figure required

The plotly instance definition, with extra fields for nominal-specific inputs

PlotlyPreset#

SCATTER_3D

​

PolynomialCurve#

degree IntegerConstant required

The highest allowable degree of the fit polynomial.

intercept DoubleConstant

The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.

PolynomialCurveFit#

A polynomial fit of the enclosing target (y) against the chosen independent variable (x).

independentVariable CurveFitVariable required

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

degree IntegerConstant required

The highest allowable degree of the fit polynomial.

intercept DoubleConstant

The y-value at the point x (or t) = 0. If omitted, the y-intercept will also be fit to the data.

Position#

TOP

​

BOTTOM

​

Power#

Raises base to the power of exponent pointwise.

base NumericSeries required

Base values.

exponent NumericSeries required

Exponent 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.

v1 ProcedureVizDefinitionV1

​

v2 ProcedureVizDefinitionV2

​

ProcedureVizDefinitionV1#

title string

​

executionRid string (RID)

​

ProcedureVizDefinitionV2#

title string

​

procedure ProcedureVizId

A 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.

executionRid string (RID)

​

templateRid string (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.

inputs array of NumericSeries

Input series across which to take the pointwise product

interpolationConfiguration InterpolationConfiguration deprecated

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

PropertiesFilter#

name string required

​

values array of string

​

PropertyComparisonOperator#

EQ

​

NEQ

​

GT

​

GTE

​

LT

​

LTE

​

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.

standard StandardPump

​

PumpVizDefinition#

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

v1 PumpVizDefinitionV1

​

PumpVizDefinitionV1#

title string

The label displayed on the pump.

pump Pump required

The pump variation to render, with variation-specific configuration.

feedbackVariableName string required

Workbook channel variable providing the pump feedback.

rotationDegrees integer

Clockwise 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.

start Timestamp required

​

end Timestamp required

​

RangeAggregationOperation#

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

sum Summation

​

rootMeanSquare RootMeanSquare

​

average Average

​

min Minimum

​

max Maximum

​

standardDeviation StandardDeviation

​

count Count

​

all Empty

​

RangeCellConfig#

visualisation RangeValueVisualisation

​

groupBySort RangeGroupBySort

Sorting 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.

input RangeSeries required

​

unboundedRangeBehavior UnboundedRangeBehavior required

How to handle ranges with a missing start or end.

timeUnit TimeUnit

The time unit of the duration. Defaults to seconds if not specified.

RangeGroupBySort#

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

value ValueSort

​

RangeIntervalSource#

Intervals come from a range series. Must resolve to literal ranges.

ranges RangeSeries required

​

tagBy array of RangeTagSource

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

RangeMap#

start DoubleConstant

Inclusive start value. If not specified, the start is the prior range’s end value, or negative infinity.

end DoubleConstant

Exclusive end value. If not specified, the end value is the next range’s start value, or positive infinity.

output StringConstant required

The value to map to if the input value is within the range.

RangePaddingConfiguration#

PAD_START

​

PAD_END

​

PAD_START_AND_END

​

RangeRawVisualisation#

The settings for a raw range visualisation.

rangeColor string

​

rangeLabel string

The string to display when the condition defined by the variable’s function spec is met.

noRangeColor string

​

noRangeLabel string

The 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.

ranges RangeSeries required

The range series evaluated per interval to locate the anchor range.

index IntegerConstant

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

sortOrder RangeSortOrder

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

RangeSeries#

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

approximateThreshold ApproximateThresholdRanges

​

booleanRanges BooleanRanges

​

thresholdRangesV2 ThresholdRangesV2

​

durationFilter DurationFilterRanges

​

durationFilterV2 DurationFilterRangesV2

​

enumFilter EnumFilterRanges

​

categoryFilterRangesV2 CategoryFilterRangesV2

​

categoricalOnChangeRangesV2 CategoricalOnChangeRangesV2

​

categoricalStaleRangesV2 CategoricalStaleRangesV2

​

categoricalEqualityRangesV2 CategoricalEqualityRangesV2

​

enumSeriesEqualityRangesNode EnumSeriesEqualityRanges

​

eventsSearch EventsSearchRanges

​

intersectRange IntersectRanges

​

literalRanges LiteralRanges

​

minMaxThreshold MinMaxThresholdRanges

Computes ranges where the input time series matches a filter defined by lower and upper bounds, and an operator.

not NotRanges

​

onChange OnChangeRanges

​

peak PeakRanges

​

extremaRangesV2 ExtremaRangesV2

​

rangeNumericAggregation RangesNumericAggregation

​

raw Reference

​

derived DerivedSeries

​

seriesCrossoverRangesNode SeriesCrossoverRanges

​

seriesEqualityRangesNode SeriesEqualityRanges

​

numericEqualityRangesV2 NumericEqualityRangesV2

​

stabilityDetection StabilityDetectionRanges

​

stabilityDetectionV2 StabilityDetectionRangesV2

​

staleRange StaleRanges

​

numericStaleRangesV2 NumericStaleRangesV2

​

threshold ThresholdingRanges

Computes ranges where the input time series matches a filter defined by a single threshold and an operator.

unionRange UnionRanges

​

paddedRanges PaddedRanges

​

paddedRangesV2 PaddedRangesV2

​

RangesNumericAggregation#

Aggregates the values of a numeric series at each range specified by the input ranges.

ranges RangeSeries required

​

input NumericSeries required

​

operation RangeAggregationOperation required

​

RangeSortOrder#

Sort order for selecting ranges. ASC selects from earliest to latest, DESC selects from latest to earliest.

ASC

​

DESC

​

RangeStart#

Selects which point of a satisfied condition begins the output range.

CONDITION_START

​

PERSISTENCE_START

​

RangeTagSource#

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

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

intervalIndex IntervalIndexTag

​

rangeStartTimestamp IntervalStartTimestampTag

​

RangeValueChannel#

variableName string required

​

visualisation RangeValueVisualisation required

​

RangeValueVisualisation#

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

raw RangeRawVisualisation

​

RectangleShape#

An empty JSON object, {}.

Reference#

name string required

A reference to a value not defined in the current compute scope.

RefpropProperty#

Supported properties for REFPROP calculations.

TEMPERATURE

​

PRESSURE

​

MASS_DENSITY

​

MASS_SPECIFIC_ENTHALPY

​

MASS_SPECIFIC_INTERNAL_ENERGY

​

MASS_SPECIFIC_ENTROPY

​

VISCOSITY

​

RefpropSeries#

Computes the output property given input properties for the substance using REFPROP. Initial implementation only expects two input properties.

inputs map of string to NumericSeries

A map that maps a REFPROP property to its numeric series.

outputProperty RefpropProperty required

The desired output property. This should not be one of the input properties.

substance RefpropSubstance required

The substance for REFPROP calculations.

interpolationConfiguration InterpolationConfiguration deprecated

Deprecated: Setting interpolation on this node is deprecated.

RefpropSeriesV2#

Computes a REFPROP output property from the supplied substance and output property.

inputs map of string to NumericSeries

Map of REFPROP property to its numeric series.

substance RefpropSubstance required

The substance for REFPROP calculations.

outputProperty RefpropProperty required

The desired output property. This must not be one of the input properties.

RefpropSubstance#

Supported substances for REFPROP calculations

NITROGEN

​

OXYGEN

​

HELIUM

​

HYDROGEN

​

METHANE

​

PROPANE

​

BUTANE

​

WATER

​

XENON

​

AIR

​

CARBON_DIOXIDE

​

ARGON

​

CARBON_MONOXIDE

​

JET_A_4658

​

JET_A_3638

​

RegulatorVizDefinition#

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

v1 RegulatorVizDefinitionV1

​

RegulatorVizDefinitionV1#

title string

The label displayed on the regulator.

rotationDegrees integer

Clockwise 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.

feedback ValveFeedback

Live 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.

properties PropertiesFilter

​

numericProperty NumericPropertyPredicate

​

numericPropertyRange NumericPropertyRangePredicate

Matches resources using an inclusive numeric property range.

labels LabelsFilter

​

workspace StringConstant

​

and array of ResourceSearchQuery

​

or array of ResourceSearchQuery

​

not ResourceSearchQuery

​

rids.api.Property#

name StringConstant required

​

value StringConstant required

​

RollingOperationSeries#

DEPRECATED. Use numericAggregation with aggregation.RollingTimeAggregationBuilder instead.

input NumericSeries required

​

window Window required

​

operator NumericAggregationOperator required

​

RollingPointsAggregationBuilder#

Rolling point-count aggregation: for each point in the input, aggregate the current point and the preceding N - 1 points within the same tag grouping.

input Series required

​

points IntegerConstant required

​

RollingTimeAggregationBuilder#

Rolling time-window aggregation: for each point in the input, aggregate the values within the preceding time window.

input Series required

​

window compute.api.Duration required

​

RootMeanSquare#

The root mean square of points inside the time window.

An empty JSON object, {}.

RowIndependentPlotColoringConfiguration#

An empty JSON object, {}.

RowSharedPlotColoringConfiguration#

An empty JSON object, {}.

Run#

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

rid StringConstant required

Resource identifier of a run

run.api.Duration#

seconds integer (int64) required

​

nanos integer (int64) required

​

RunAlignment#

An offset that is defined relative to a target run.

alignTo RunAlignTo required

​

targetRunRid string (RID) required

​

RunAlignTo#

The align to value for a run offset.

START

​

END

​

RunChannel#

runRid StringConstant required

​

assetRid StringConstant

Used to disambiguate when multiple assets within this run contain data scopes with the same name. If not specified for a run with multiple assets, an error will be thrown.

dataScopeName StringConstant required

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

channel StringConstant required

​

additionalTags map of string to StringConstant deprecated

Deprecated: Use additionalTagFilters

additionalTagFilters TagFilters

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

tagsToGroupBy array of string deprecated

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

groupByTags array of StringConstant

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

RunDataScopeInputValue#

A run data scope input value.

runRid string (RID) required

​

RunListDataScopeInputValue#

A data scope input value resolving to an explicit list of runs.

runRids array of string (RID)

​

RunOffset#

An offset that can be applied to a run.

offset workbookcommon.api.Offset

​

assets map of AssetRid to AssetOffset

​

RunQueryDataScopeInputValue#

A data scope input value resolving to the runs matching a search query.

query ResourceSearchQuery required

​

RunSettings#

offset UserDuration

​

assetSettings map of AssetRid to AssetSettings

​

RunsSearchTarget#

Search runs. Each matched run expands to one grouping per data source attached to the run: asset-typed data sources contribute one grouping per data scope on the asset; dataset-typed data sources contribute one grouping per dataset. Every grouping is tagged by runRid and dataScope (the asset’s data scope name for asset-typed sources, or the run-local data source ref name for dataset-typed sources); asset-typed groupings additionally carry assetRid.

query ResourceSearchQuery required

Predicate tree used to filter matching runs.

RustUdfSource#

Rust source code defining the UDF entrypoint and any helper functions.

sourceCode string required

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

Sampling#

Options for returning a sampled subset of raw series points.

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

everyNthPerSeries EveryNthPerSeriesSampling

​

hashSubsample HashSubsampleSampling

​

SavedDataset#

A persisted source of data, named by its RID. Can be a catalog dataset, pipeline, connection, etc.

rid StringConstant required

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

ScalarUdfSeries#

Executes user-provided scalar UDF code over aligned inputs. The function must return one output for each aligned input row, with the return type matching the series type that contains this node.

inputs array of Series

Input series passed to the UDF in argument order.

source UdfSource required

Language-specific source definition for the UDF.

ScaleSeries#

For every timestamp specified in the input series, multiply it by a constant factor.

input NumericSeries required

​

scalar DoubleConstant required

The constant to multiply each point by

scalarUnit string

The units of the scalar to multiply by. If empty, the scalar is considered unit-less.

Scatter#

A scatter plot comprised of the values from one input series on the x-axis and values from another input series on the y-axis, for all points within a requested time range.

x NumericSeries required

​

y NumericSeries required

​

Scatter3dDecimationStrategy#

SPATIAL

​

TEMPORAL

​

Scatter3dTraceComputeConfig#

decimationStrategy Scatter3dDecimationStrategy

Bucket computed data points by their proximity in space or in time

ScatterCurveFit#

Fits a curve to the scatter between two series.

scatter Scatter required

The x and y series to fit to.

options ScatterFitOptions required

​

ScatterDecimation#

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

temporal TemporalDecimation

​

spatial SpatialDecimation

​

ScatterFitOptions#

minX DoubleConstant

Inclusive lower bound on the x values to fit to. If omitted, does not set a bound (equivalent to setting this to the minimum x value among all points in the time range).

maxX DoubleConstant

Inclusive upper bound on the x values to fit to. If omitted, does not set a bound (equivalent to setting this to the maximum x value among all points in the time range).

minY DoubleConstant

Inclusive lower bound on the y values to fit to. If omitted, does not set a bound (equivalent to setting this to the minimum y value among all points in the time range).

maxY DoubleConstant

Inclusive upper bound on the y values to fit to. If omitted, does not set a bound (equivalent to setting this to the maximum y value among all points in the time range).

SearchDataset#

Resolves matching assets or runs from search, creating a combined dataset tagged by source rid and data scope.

target SearchTarget required

Whether to search assets or runs and with which query.

maxResults integer

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

SearchQuery#

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

archived boolean

​

searchText string

Search text to perform fuzzy searching against.

exactMatch string

Search text to perform exact matching against on the event name and description.

after Timestamp

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

before Timestamp

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

advancedTimeFilter event.EventTimeFilter

​

asset string (RID) deprecated

Deprecated: use assetRids

assets AssetsFilter

​

template string (RID)

​

workbook string (RID)

​

dataReview string (RID) deprecated

Deprecated: use dataReviews instead

dataReviews DataReviewsFilter

​

originType event.SearchEventOriginType deprecated

Deprecated: use originTypes instead

originTypes OriginTypesFilter

​

dataReviewCheck string (RID) deprecated

Deprecated: use dataReviewChecks instead

dataReviewChecks DataReviewChecksFilter

​

dispositionStatus event.EventDispositionStatus deprecated

Deprecated: use dispositionStatuses instead

dispositionStatuses array of event.EventDispositionStatus

​

priority Priority deprecated

Deprecated: use priorities instead

priorities array of Priority

​

assignee string (RID) deprecated

Deprecated: use assignees instead

assignees AssigneesFilter

​

eventType event.EventType deprecated

Deprecated: use eventTypes instead

eventTypes array of event.EventType

​

createdBy string (RID)

​

createdByAnyOf array of string (RID)

​

label string deprecated

Deprecated: use labels instead

labels LabelsFilter

​

property nominal.api.Property deprecated

Deprecated: use properties instead

properties PropertiesFilter

​

and array of SearchQuery

​

or array of SearchQuery

​

not SearchQuery

​

workspace string (RID)

​

procedure string (RID)

​

procedureExecution string (RID)

​

stepId string

​

streamingChecklist string (RID)

Filters to events created from a checklist executing in streaming. Use assets to further filter to a specific streaming checklist instance.

streamingCheck string (RID)

Filters to events created from the check of a checklist executing in streaming. Use assets to further filter to a specific streaming checklist instance.

numericProperty NumericPropertyPredicate

Matches events using a numeric property comparison.

numericPropertyRange NumericPropertyRangePredicate

Matches events using an inclusive numeric property range.

SearchTarget#

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

assets AssetsSearchTarget

​

runs RunsSearchTarget

​

SearchTemplatesQuery#

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

and array of SearchTemplatesQuery

​

or array of SearchTemplatesQuery

​

not SearchTemplatesQuery

​

exactMatch string

Performs case insensitive exact match search on the title.

searchText string

Searches title and description only

label string deprecated

Deprecated: use labels instead

labels LabelsFilter

​

property nominal.api.Property deprecated

Deprecated: use properties

properties PropertiesFilter

​

createdBy string (RID)

​

isArchived boolean

​

isPublished boolean

​

workspace string (RID)

​

authorIsCurrentUser boolean

​

authorRids array of string (RID)

​

SecondaryVariable#

A secondary variable to associate with a trace

variableName string required

​

label string

​

enabled boolean

Default true

visualizationOption SecondaryVariableOptions

​

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.

asColors ValueToColorMap

​

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.

input Enum1dArraySeries required

​

index IntegerConstant required

​

SelectIndexFrom1dNumericArraySeries#

For each timestamp, selects a single numeric value from the 1D numeric array at the specified index. If the index is out of bounds for an array at a given timestamp, it is omitted.

input Numeric1dArraySeries required

​

index IntegerConstant required

​

SelectNewestPointsSeries#

Select the most recent N points from the input series by timestamp.

input NumericSeries required

The input series to select the newest points from.

numPoints IntegerConstant required

The number of points to select.

SelectOldestPointsSeries#

Select the earliest N points from the input series by timestamp.

input NumericSeries required

The input series to select the oldest points from.

numPoints IntegerConstant required

The number of points to select.

SelectProperty#

Selects a typed property value from every asset or run branch resolved from dataset. Inside a WithSeriesDataset definition, dataset may be omitted to use that node’s wrapping input; it is required everywhere else. Asset branches read properties directly from their asset. Run branches read properties directly from their run, never from a backing asset or dataset. Direct saved-dataset branches are unsupported.

propertyName string required

​

dataset Dataset

​

SelectSeries#

Selects series from a dataset (might contain multiple tag groupings). When name is provided, selects that single channel. When name is omitted, selection starts from all channels in the dataset scope; callers narrow the selection with a filterByTag predicate on the reserved NOMINAL_CHANNEL tag key and preserve per-channel identity in the response with selectTags. Providing both name and a NOMINAL_CHANNEL filter is rejected as an invalid request. Raw and derived channels can both be selected through the reserved tag filter.

name StringConstant

The identifying series name to query

dataset Dataset

The dataset providing the data to query. May be omitted inside a WithSeriesDataset series definition, in which case it defaults to that node’s wrapping input; required everywhere else.

sampling Sampling

Raw-series sampling options. Supported for numeric and enum raw series.

SendCommandsAction#

commands array of VizCommand

The 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.

raw Reference deprecated

Deprecated: use typed value of series instead.

enum EnumSeries

​

numeric NumericSeries

​

log LogSeries

​

array ArraySeries

​

struct StructSeries

​

video Reference

​

SeriesCrossoverRanges#

Produces a list of zero-duration ranges at the first point where two series cross over one another

inputA NumericSeries required

​

inputB NumericSeries required

The series inputA is compared against.

SeriesEqualityRanges#

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

input array of NumericSeries

​

equalityOperator EqualityOperator required

​

tolerance DoubleConstant

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

interpolationConfiguration InterpolationConfiguration deprecated

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

SeriesVariable#

A series selected from a dataset, bound to a variable. The series type (numeric, enum, …) is decided lazily by the node consuming the variable, matching the behaviour of channel variables.

select SelectSeries required

​

groupByTags array of StringConstant

Tags that the series should be grouped by. If this is non-empty a grouped result will be returned with an entry for each grouping; otherwise all matching series are merged.

SetNegativeValuesToZero#

An empty JSON object, {}.

SetOperator#

AND

​

OR

​

Shape#

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

rectangle RectangleShape

​

ellipse EllipseShape

​

triangle TriangleShape

​

ShapeVizDefinition#

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

v1 ShapeVizDefinitionV1

​

ShapeVizDefinitionV1#

title string

​

shape Shape

The shape to render, with shape-specific configuration.

fillColor string

​

text string

Text 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.

rotationDegrees integer

Clockwise 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.

lowPass LowPassConfiguration

​

highPass HighPassConfiguration

​

bandPass BandPassConfiguration

​

bandStop BandStopConfiguration

​

SignalFilterSeries#

Applies IIR-based signal filtering to input series. Includes low-pass, high-pass, band-pass, and band-stop filters. Currently supports variable-order bidirectional Butterworth filters, with fixed-size padding based on SciPy output.

input NumericSeries required

​

signalFilterConfiguration SignalFilterConfiguration required

Filter type and cutoff frequencies.

order IntegerConstant required

Order of filter. Must be a positive integer, and is effectively doubled for bidirectional filters.

samplingFrequency DoubleConstant

The sampling frequency of the input series. Used to calculate normalized frequency for cutoff frequencies.

Sin#

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

x NumericSeries required

Input numeric series (radians).

SingleTab#

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

v1 SingleTabV1

​

SingleTabV1#

title string required

​

panel Panel required

​

SinkBoundary#

An empty JSON object, {}.

SolidInstrumentDivider#

An empty JSON object, {}.

SolidStrokeStyle#

An empty JSON object, {}.

SortBy#

isDescending boolean required

​

field SortByField required

​

SortByField#

UPDATED_AT is an alias for EDITED_AT.

NAME

​

CREATED_AT

​

UPDATED_AT

​

EDITED_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.

matCap SpatialAppearanceColoringMatCap

​

solid SpatialAppearanceColoringSolid

​

geometry SpatialAppearanceColoringGeometry

​

gradient SpatialAppearanceColoringGradient

​

attributeRgb SpatialAppearanceColoringAttributeRgb

​

SpatialAppearanceColoringAttributeRgb#

Color each point using per-point RGB attribute values.

attribute string required

Name of the per-point attribute that encodes color (e.g. “rgb”).

SpatialAppearanceColoringGeometry#

Color by a per-point scalar attribute mapped through a colormap.

attribute string required

Name of the per-point attribute to ramp (e.g. “intensity”).

colormap SpatialColorMap required

​

rangeMin number

Colormap lower bound; omit to use the attribute’s data minimum.

rangeMax number

Colormap upper bound; omit to use the attribute’s data maximum.

SpatialAppearanceColoringGradient#

Color by world-space position along a cardinal axis using a colormap.

axis SpatialColorAxis required

​

colormap SpatialColorMap required

​

extents SpatialGradientExtents required

​

SpatialAppearanceColoringMatCap#

Color using a baked matcap texture from the renderer’s atlas.

name SpatialMatcap required

​

SpatialAppearanceColoringSolid#

Uniform solid color for all points.

r integer required

​

g integer required

​

b integer required

​

a integer 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.

geometryAxis SpatialColoringGeometryAxis

​

solid string

Single solid color for all points (hex).

SpatialColoringGeometryAxis#

Color by world-space position along an axis direction using a named colormap.

axis Vec3d required

​

colormap SpatialColorMap required

​

dataMin number

Color ramp lower bound; omit for renderer default.

dataMax number

Color 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.

enabled boolean required

​

attribute string required

Name of the per-point attribute that encodes time (e.g. “timestamp”).

unit SpatialTimeUnit required

​

relativeStartUs integer (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.

relativeEndUs integer (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.

timeWindow SpatialTimeWindow

Controls 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.

accumulated SpatialTimeWindowAccumulated

​

trailing SpatialTimeWindowTrailing

​

symmetric SpatialTimeWindowSymmetric

​

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.

halfWidthSec number required

​

SpatialTimeWindowTrailing#

The most recent durationSec seconds of returns leading up to the playhead.

durationSec number 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.

none SpatialVolumetricFilterNone

​

valueRange SpatialVolumetricFilterValueRange

​

stringEquals SpatialVolumetricFilterStringEquals

​

SpatialVolumetricFilterNone#

No filter — all points are visible.

An empty JSON object, {}.

SpatialVolumetricFilterStringEquals#

Show only points whose attribute value equals a given string.

attribute string required

​

value string required

​

SpatialVolumetricFilterValueRange#

Show only points whose attribute value falls within [min, max].

attribute string required

​

min number required

​

max number required

​

SplitPanel#

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

v1 SplitPanelV1

​

SplitPanelOrientation#

HORIZONTAL

​

VERTICAL

​

SplitPanelV1#

id string required

​

orientation SplitPanelOrientation required

​

sideOne Panel required

​

sideTwo Panel required

​

Sqrt#

Computes the square root of each value.

x NumericSeries required

Input numeric series (non-negative values).

StabilityDetectionRanges#

Outputs a set of ranges where the input series is stable. For each point, the min and max are calculated over the specified lookback window, including the current point. A point is considered stable if its value does not deviate from the calculated min and the max by more than the threshold and the total number of points within the window is at least the specified amount. The threshold can be either fixed values or percentages of the value. The lookback window must be strictly positive. The minimum points threshold defaults to 2.

input NumericSeries required

​

windowConfiguration StabilityWindowConfiguration required

​

threshold compute.api.Threshold required

​

StabilityDetectionRangesV2#

Produces ranges where a numeric input is stable within a modern duration window.

input NumericSeries required

​

window compute.api.Duration required

Lookback window over which the input’s spread is measured.

minPoints IntegerConstant

Minimum number of points in the window. Defaults to 2.

threshold compute.api.Threshold required

​

StabilityWindowConfiguration#

minPoints IntegerConstant

The minimum number of points within the window to create a stable range. Must be non-negative. If not present, will default to 2.

duration DurationConstant required

​

StalenessCellConfig#

visualisation StalenessVisualisation

​

groupBySort NumericGroupBySort

Sorting configuration for grouped data rendering in a cell. If undefined, will sort alphabetically by grouping.

StalenessConfiguration#

threshold run.api.Duration required

The duration above which points are considered stale. By default this is 1 second.

connectStalePoints boolean required

Whether 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.

raw NumericRawVisualisationV2

​

bar NumericBarVisualisationV2

​

StaleRanges#

Produces a list of ranges for which data does not exist for the specified duration or longer. Increases window size by the specified staleness threshold on both ends to capture edge cases of data not currently in view.

input Series required

​

threshold DurationConstant required

​

startTimestamp TimestampConstant

The start timestamp of the range. If not specified, staleness will automatically use view range start.

endTimestamp TimestampConstant deprecated

Deprecated: No longer used and will be removed

StandardDeviation#

The standard deviation of points inside the time window.

An empty JSON object, {}.

StandardPump#

An empty JSON object, {}.

StandardValve#

normalPosition ValveNormalPosition

The valve’s position when not powered, which determines the symbol rendered. Absent is treated as normallyClosed.

feedback ValveFeedback

Live open/closed state. Absent renders unknown.

commanding ValveCommanding

The valve’s command menu. Absent means the valve is not commandable.

StftOptions#

Options for frequency analyses that are backed by short-time Fourier transforms.

window FftWindow

Window function type to use

windowSymmetry WindowSymmetry

Either DFT_EVEN or SYMMETRIC

samplingFrequency number

Sampling frequency of the series in Hz. If absent, will calculate using the input series.

nperseg integer

Number of points per window segment.

noverlap integer

Number of points of overlap between windows. Must be less than nperseg.

nfft integer

Number of points to use in the FFT. Must be greater than or equal to nperseg.

detrend DetrendType

Detrend 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.

literal string

Create from a literal string value.

variable string

Create from a named reference.

StringPropertyDimension#

Injects the value of a string property, under a tag key equal to the property name by default. Only supported on asset and run branches: asset branches read the asset’s properties, and run branches, including run branches backed by an asset, read the run’s properties, matching SelectProperty. Values are injected as is. A branch without the property, or whose property holds a numeric value, gets the reserved value NOMINAL_ABSENT.

propertyName StringConstant required

Name of the property whose value to inject. Also the default tag key.

StringSetConstant#

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

literal array of string

​

variable string

​

StringSetConstantV2#

A set of string constants that can be a literal set or a named variable reference.

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

literal array of StringConstant

Create from a literal set of string constants.

variable string

Create from a named reference.

StructCellConfig#

visualisation StructVisualisation

​

StructRawVisualisation#

A raw struct visualisation (renders the JSON as-is)

An empty JSON object, {}.

StructSelectTagsSeries#

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

input StructSeries required

​

tagKeys array of StringConstant

​

StructSeries#

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

channel ChannelSeries

​

raw Reference

​

derived DerivedSeries

​

combine CombineStructSeries

​

selectStruct SelectSeries

​

extractFromStruct ExtractStructFromStructSeries

​

toStartOfInterval StructToStartOfIntervalSeries

​

timeShift StructTimeShiftSeries

​

filterByTag StructTagFilterSeries

​

selectTags StructSelectTagsSeries

​

StructTagFilterSeries#

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

input StructSeries required

​

predicate TagPredicate required

​

StructTimeShiftSeries#

input StructSeries required

​

duration DurationConstant required

​

StructToStartOfIntervalSeries#

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

input StructSeries required

​

window compute.api.Duration required

​

StructVisualisation#

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

raw StructRawVisualisation

​

Subtract#

Subtracts right from left pointwise.

left NumericSeries required

Left-hand operand (minuend).

right NumericSeries required

Right-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.

inputs array of NumericSeries

Input series across which to take the pointwise sum

interpolationConfiguration InterpolationConfiguration deprecated

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

TabbedPanel#

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

v1 TabbedPanelV1

​

TabbedPanelV1#

id string required

​

tabs array of SingleTab

​

TableColumn#

name string required

​

typedConfig TableColumnTypedConfig

​

columnWidth number

​

TableColumnEnumAggregation#

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

first NoConfigAggregation

​

last NoConfigAggregation

​

allDistinct NoConfigAggregation

​

countDistinct NoConfigAggregation

​

valueCounts NoConfigAggregation

​

TableColumnEnumConfig#

aggregation TableColumnEnumAggregation required

​

summaryRowAggregation TableColumnEnumAggregation

​

TableColumnLogAggregation#

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

count NoConfigAggregation

​

TableColumnLogConfig#

aggregation TableColumnLogAggregation required

​

summaryRowAggregation TableColumnLogAggregation

​

visibleLogFields array of string

​

tagFilters LogColumnTagFilters

​

TableColumnNumericAggregation#

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

first NoConfigAggregation

​

last NoConfigAggregation

​

mean NoConfigAggregation

​

min NoConfigAggregation

​

max NoConfigAggregation

​

stddev NoConfigAggregation

​

count NoConfigAggregation

​

TableColumnNumericConfig#

aggregation TableColumnNumericAggregation required

​

summaryRowAggregation TableColumnNumericAggregation

​

numberFormat NumberFormat

Optional per-column number formatting. If unset, the panel-level default formatting is used.

indicator TableColumnNumericIndicator

How a numeric cell visualises its value beyond the number itself. If unset, the default is bars.

thresholds array of chartdefinition.api.Threshold

Colors 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.

none NoConfigIndicator

​

bars NoConfigIndicator

​

color NoConfigIndicator

​

TableColumnRangeAggregation#

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

percentTrue NoConfigAggregation

​

allDistinct NoConfigAggregation

​

valueCounts NoConfigAggregation

​

TableColumnRangeConfig#

aggregation TableColumnRangeAggregation required

​

summaryRowAggregation TableColumnRangeAggregation

​

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.

numeric TableColumnNumericConfig

​

enum TableColumnEnumConfig

​

range TableColumnRangeConfig

​

log TableColumnLogConfig

​

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.

key TagString required

The key of the tag for the filter and group by compute arguments.

values array of TagString

The values of the tag to filter against. An empty list will treat the tag as a wildcard, including all values in the compute

TagAnd#

Conjunction of two tag predicates (both must hold).

left TagPredicate required

​

right TagPredicate required

​

TagByIntervalsSeries#

Injects tags derived from interval boundaries onto a numeric series. Points within an interval get tagged; points outside all intervals are dropped. Intervals come from either events or ranges. If intervals with different tag map overlap, a data point falling in multiple intervals is duplicated into each matching output group. Overlapping intervals with equal tag maps are not allowed. Optional time shift subtracts a per-interval anchor from timestamps after matching.

input NumericSeries required

​

intervals IntervalSource required

​

timeShift TagByIntervalsTimeShift

When set, shift each matched point’s timestamp by the chosen anchor for that interval.

TagByIntervalsTimeShift#

How to shift timestamps after tagging (subtract anchor from each point in the interval slice).

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

intervalStart IntervalStartTimeShift

​

intervalEnd IntervalEndTimeShift

​

eventTimeShift EventTimeShift

​

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.

id string (UUID) required

Stable client-provided identifier for the filter.

key StringConstant required

​

operator TagFilterOperator required

​

values array of StringConstant

Tag 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.

key StringConstant required

​

values array of StringConstant

​

operator TagFilterOperator required

​

TagFilterOperator#

IN

​

NOT_IN

​

TagFilters#

A set of tag filters to apply to a channel. Allows for combining filters on multiple tag keys, but throws if any one tag key is specified in more than one filter.

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

single TagFilter

​

and array of TagFilters

​

TaggedDataset#

Injects one ephemeral tag (key and value) onto the underlying dataset.

input Dataset required

The underlying dataset to tag.

key StringConstant required

Tag key to inject onto each series in the dataset.

value StringConstant required

Tag value to assign to the injected key.

TagIn#

Constrains a tag key to be in the given set of values.

key StringConstant required

​

values StringSetConstantV2 required

​

TagNotIn#

Constrains a tag key to not be in the given set of values.

key StringConstant required

​

values StringSetConstantV2 required

​

TagPredicate#

Conjunctive tag predicate for dataset filtering. Compiles to resolved TagFilters for storage and resolution-time folding against known tag assignments (e.g. TaggedDataset, search branches).

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

in TagIn

​

notIn TagNotIn

​

and TagAnd

​

TagString#

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

literal TagStringLiteral

​

TagStringLiteral#

A literal string value

id string (UUID) required

A unique identifier for this string. Cannot be shared across different Tag inputs. Used as the variable id for the StringConstant applied to the tag fields of the channel compute node.

value string required

The string value.

Tan#

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

x NumericSeries required

Input 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.

vertical VerticalTank

​

TankMarkerPosition#

LEFT

​

RIGHT

​

TankVizDefinition#

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

v1 TankVizDefinitionV1

​

TankVizDefinitionV1#

title string

The label displayed on the tank.

tank Tank required

The tank variation to render, with variation-specific configuration.

capacity number required

Full-scale capacity of the tank gauge.

markerPosition TankMarkerPosition required

Side of the gauge the level marker renders on.

showMarkerLabel boolean required

Whether the level marker renders its value label.

fillColor string required

Fill color of the tank level.

feedbackVariableName string required

Workbook channel variable providing the tank level feedback.

TemplateArchiveTarget#

Selects the templates 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.

rids array of string (RID)

The templates to act on. Will throw if more than 1_000 rids are provided.

TemplateMetadata#

title string required

​

description string required

​

labels array of string

​

properties map of PropertyName to string

​

isArchived boolean required

​

isPublished boolean required

​

createdBy string (RID) required

​

createdAt string (date-time) required

​

updatedAt string (date-time) required

​

editedAt string (date-time) required

The time of the last permanent commit to the main branch.

previewImage ThemeAwareImage

​

TemplateSummary#

rid string (RID) required

​

metadata TemplateMetadata required

​

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#

light string (RID) required

​

dark string (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.

type run.api.Duration required

​

ThresholdingRanges#

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

input NumericSeries required

​

threshold DoubleConstant required

​

operator ThresholdOperator required

​

persistenceWindowConfiguration PersistenceWindowConfiguration

​

ThresholdLatch#

enabled boolean 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.

gt ThresholdRangesOrderedComparison

​

ge ThresholdRangesOrderedComparison

​

lt ThresholdRangesOrderedComparison

​

le ThresholdRangesOrderedComparison

​

eq ThresholdRangesEqualityComparison

​

ne ThresholdRangesEqualityComparison

​

ThresholdRangesEqualityComparison#

An equality comparison against a numeric threshold, within an optional tolerance.

threshold DoubleConstant required

The value each input point is compared against.

tolerance DoubleConstant

Maximum absolute difference from the threshold still counted as equal. Defaults to zero, i.e. exact equality.

ThresholdRangesOrderedComparison#

An ordering comparison against a single numeric threshold.

threshold DoubleConstant required

The value each input point is compared against.

ThresholdRangesV2#

Produces ranges where a numeric input satisfies a threshold comparison.

input NumericSeries required

​

minPoints IntegerConstant

Minimum number of matching points. Defaults to 1.

minDuration compute.api.Duration

Minimum matching duration. Defaults to one nanosecond.

rangeStart RangeStart

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

comparison ThresholdRangesComparison required

​

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.

v1 ThrustChamberVizDefinitionV1

​

ThrustChamberVizDefinitionV1#

title string

The label displayed on the thrust chamber.

rotationDegrees integer

Clockwise 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.

input Series required

​

timeUnit TimeUnit

The time unit used to define the output values. Defaults to seconds if not specified.

TimeRange#

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

timeRangeV1 TimeRangeV1

​

TimeRangeInput#

A time range input that can be applied to panel(s) Deprecated: use TimeRange instead.

label string

The label of the input for display purposes.

timeRange Range required

​

timeRangeType WorkbookTimeRangeType required

The type of time range to use for the input.

TimeRangeType#

ABSOLUTE

​

RELATIVE

​

TimeRangeV1#

label string

​

time LiteralTimeRange required

​

TimeSeriesChartDefinition#

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

v1 TimeSeriesChartDefinitionV1

​

TimeSeriesChartDefinitionV1#

rows array of TimeSeriesRow

​

comparisonRunGroups array of ComparisonRunGroup

​

events array of Event deprecated

Deprecated: Please use the workbook’s eventRefs field instead.

title string

​

valueAxes array of ValueAxis

​

thresholds array of AxisThresholdVisualization

​

disconnectedValues DisconnectedValueVisualization deprecated

Determines when disconnected values should be connected. By default, they are always connected. Deprecated: Use stalenessConfiguration instead

stalenessConfiguration StalenessConfiguration

Determines when to draw lines between points. By default, the staleness threshold is 1s and stale points are connected.

connectingLineConfiguration ConnectingLineConfiguration

Determines how to draw connecting lines between points. By default, uses forward fill/stair step connectors bounded by the staleness threshold.

markerAppearance MarkerAppearance

Determines how point markers are drawn on numeric plots. By default, uses full-size markers.

plotColoringConfiguration PlotColoringConfiguration

Configuration for coloring time series plots in this chart. By default, plots are colored independently between rows with a unique color if possible when created.

anchorPoint Timestamp

Optional anchor point for fixed bucket alignment. When set, buckets align to this time instead of the viewport start.

bucketStrategy PanelBucketStrategy

Custom bucket size to use when loading data.

floatingLegendsConfig FloatingLegendConfig

Config for showing floating legends in the chart. If undefined, defaults to hiding.

bucketDisplayConfig BucketDisplayConfig

Controls 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.

series NumericSeries required

The series to fit. Timestamps will be used as x values and data as y values. The leftmost (earliest) timestamp will be used as the value of 0, and all other timestamps will be relative to that.

options TimeSeriesFitOptions required

​

TimeSeriesEnumPlot#

color ColorStyle required

How to color the value ranges

position Position required

Where to place the plot within the row

persistValueOverlays PersistValueOverlay required

Render certain values’ full-row/full-panel color overlays even when not interacting with the plot

overlayScope OverlayScope required

How far to extend the overlay

displayInline boolean deprecated

Deprecated: Use displayStyle instead

displayStyle EnumDisplayStyle

How to display the enum values on the chart

TimeSeriesFitOptions#

timeUnit TimeUnit

Time unit used for the timestamps to fit against. Defaults to seconds if not specified.

TimeSeriesNumericPlot#

color string required

​

lineStyle LineStyle required

​

lineWidth integer

Stroke width of the plotted line, in CSS pixels. Absent means the client’s default width.

TimeSeriesPlot#

variableName string required

​

enabled boolean

​

yAxisId string required

​

color string required

​

lineStyle LineStyle required

​

TimeSeriesPlotConfig#

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

numeric TimeSeriesNumericPlot

​

range TimeSeriesRangePlot

​

enum TimeSeriesEnumPlot

​

TimeSeriesPlotV2#

variableName string required

​

enabled boolean

​

yAxisId string required

​

type TimeSeriesPlotConfig required

​

hideFromTooltip boolean

​

TimeSeriesRangePlot#

color string required

​

TimeSeriesRow#

title string

​

plots array of TimeSeriesPlot

​

plotsV2 array of TimeSeriesPlotV2

​

rowFlexSize number required

​

enabled boolean

​

TimeSeriesTablePanelDefinition#

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

v1 TimeSeriesTablePanelDefinitionV1

​

TimeSeriesTablePanelDefinitionV1#

title string

​

columns array of TableColumn

​

numberFormat NumberFormat

Optional panel-level number formatting for numeric columns. Per-column number formatting overrides this value.

timestampColumnWidth number

​

summaryRowVisible boolean

Whether to display the summary row at the bottom of the table. Default is true.

bucketStrategy PanelBucketStrategy

​

anchorPoint Timestamp

Optional anchor point for fixed bucket alignment. When set, buckets align to this time instead of the viewport start.

dataRequestMode DataRequestMode

The 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.

input Dataset required

The underlying dataset to time-shift.

offset compute.api.Duration required

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

Timestamp#

Deprecated for new APIs. Use google.protobuf.Timestamp for absolute instants in proto APIs.

This legacy nanosecond precision timestamp type is represented by an epoch time in seconds and a nanosecond offset. The nanosecond offset is from the start of the epoch second, so must be less than 1 billion.

seconds integer (int64) required

​

nanos integer (int64) required

​

TimestampConstant#

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

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

literal Timestamp

Create from a literal timestamp value.

variable string

Create from a named reference.

TimeUnit#

DAYS

​

HOURS

​

MINUTES

​

SECONDS

​

MILLISECONDS

​

MICROSECONDS

​

NANOSECONDS

​

TotalSecondsRelativeTimestampFormat#

Display relative timestamps as a total number of seconds.

An empty JSON object, {}.

Trace#

plotlyTrace string required

The json trace definition according to plotly’s schema https://plotly.com/python/figure-structure/#the-toplevel-data-attribute

compute TraceCompute

Information needed to substitute computed data arrays into the trace

TraceCompute#

traceChannelVariables map of string to string

A map of plotly trace variables to the channel variables that should load into them

config TraceComputeConfig

​

TraceComputeConfig#

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

scatter3d Scatter3dTraceComputeConfig

​

TriangleShape#

An empty JSON object, {}.

TwoRowInstrumentLayout#

topText string

Text in the top row, usually the ISA function letters (e.g. “PIT”). Absent means the row is empty.

bottomText string

Text in the bottom row, usually the loop number (e.g. “1234”). Absent means the row is empty.

divider InstrumentDivider

A 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.

rust RustUdfSource

​

UnaryArithmeticOperation#

COS

Calculates the trigonometric cosine (input in radians)

SIN

Calculates the trigonometric sine (input in radians)

TAN

Calculates the trigonometric tangent (input in radians)

ABS

Calculates the absolute value

ASIN

Calculates the arcsine, returning radians

ACOS

Calculates the arccosine, returning radians

LOG

Calculates the base 10 logarithm

LN

Calculates the natural logarithm (base e)

SQRT

Calculates the square root

UnaryArithmeticSeries#

Applies a point-wise transformation to a series. The transformation function is applied to every individual data point.

input NumericSeries required

​

operation UnaryArithmeticOperation required

​

UnboundedBehavior#

Dictates how empty range bounds should be handled by the compute node. Defaults to INFINITY.

INFINITY

​

WINDOW_BOUND

​

UnboundedRangeBehavior#

How to handle ranges with a missing start or end.

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

clampToWindow Empty

Clamp a missing range start to the compute request window start and a missing range end to the compute request window end.

drop Empty

Drop the range if it has a missing start or end.

Union#

Uses the union of all input timestamps as the alignment grid.

An empty JSON object, {}.

UnionAlignment#

An empty JSON object, {}.

UnionRanges#

inputs array of RangeSeries

The ranges to union.

UnitConversionSeries#

Convert the given series to a different unit.

input NumericSeries required

​

outputUnit string required

​

UnitOverrideSeries#

Override the unit of the given series without changing its values. Unlike unit conversion, no compatibility with the input’s current unit is required.

input NumericSeries required

​

unit string

The unit to report for the input series. If absent, the input’s unit is cleared.

UserDuration#

Represents a time duration with a unit for user-facing display

duration number required

​

unit TimeUnit required

​

ValueAxis#

id string required

​

title string required

​

displayOptions AxisDisplayOptions required

​

range AxisRange required

​

limit AxisRange required

​

position AxisPosition required

​

domainType AxisDomainType required

​

tickNumberFormat NumberFormat

​

tooltipNumberFormat NumberFormat

​

reversed boolean

Whether 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.

tickInterval number

Spacing 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).

input NumericSeries required

​

negativeValuesConfiguration NegativeValueConfiguration

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

ValueMapSeries#

Maps a continuous numeric series to a discrete enum series using the specified value ranges.

input NumericSeries required

The input series to map to an enumerated series

mapping array of RangeMap

The output of the first capturing range will be used. Ranges are start inclusive, end exclusive, must not overlap, and increasing from lowest to highest. Ranges can be open ended to the edge of the next or prior range. The first range can be open ended to negative infinity, and the last range can be open ended to positive infinity.

default StringConstant

The default value if not captured by any range. If not specified, points will be filtered.

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.

number NumericValuePredicate

​

ValueSort#

isDescending boolean required

If 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#

variableName string required

​

uuid string (UUID)

​

config ValueTableCellConfig required

​

ValueTableCellConfig#

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

numeric NumericCellConfig

​

enum EnumCellConfig

​

range RangeCellConfig

​

bitFlagMap BitFlagMapCellConfig

​

staleness StalenessCellConfig

​

numericArray NumericArrayCellConfig

​

enumArray EnumArrayCellConfig

​

struct StructCellConfig

​

ValueTableChannel#

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

numeric NumericValueChannel

​

enum EnumValueChannel

​

range RangeValueChannel

​

ValueTableColumnChannel#

variableName string required

​

displayName string

The column header. Falls back to the variable’s own display name.

visualisation NumericValueVisualisationV2

Per-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.

cellConfig ValueTableCellConfig

Per-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.

v1 ValueTableDefinitionV1

​

v2 ValueTableDefinitionV2

​

v3 ValueTableDefinitionV3

​

ValueTableDefinitionV1#

title string

​

channels array of ValueTableChannel

Each channel to be displayed. Based on the data type, the visualisation options and settings will be different.

ValueTableDefinitionV2#

title string

The display title of the panel.

showUnits boolean

If true, display units in the cells when available.

showStalenessIndicator boolean

If true, display staleness indicator in the cells when available.

layout ValueTableLayout required

​

stalenessIndicator ValueTableStalenessConfig

Configuration 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.

title string

The display title of the panel.

showUnits boolean

If true, display units in the cells when available.

showStalenessIndicator boolean

If true, display staleness indicator in the cells when available.

showCellLabels boolean

If true, display channel names in the cells.

showColumnHeaders boolean

If true, display column headers.

showRowHeaders boolean

If true, display row headers.

rowHeaderWidth number

The width of the row headers in pixels.

gridDefaultCellConfigs ValueTableMultiCellConfig required

Panel-level defaults for cell visualisations, applying to every layout mode.

layout ValueTableLayoutV2 required

​

ValueTableFlowCell#

A cell in a flow layout, wrapped with the metadata identifying which grouped fan-out it came from.

cell ValueTableCell required

​

groupId string (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.

partition map of string to string

Tag key to value, selecting which grouping of a grouped compute response this cell renders. Corresponds to compute.api.Grouping.tagsWithValues. Must be absent when groupId is absent.

ValueTableGridRowColumnConfig#

position integer required

The index of the row or column to apply this configuration to.

header string

​

cellConfig ValueTableMultiCellConfig

​

ValueTableGridValueTableCell#

row integer required

​

column integer required

​

cell ValueTableCell required

​

ValueTableLayout#

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

grid ValueTableLayoutGrid

​

ValueTableLayoutColumn#

A layout that renders each channel as a column of a sortable, filterable table.

columnChannels array of ValueTableColumnChannel

The channels to display, one column each.

columnTableState ColumnTableState

Client-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.

cells array of ValueTableFlowCell

The cells to display, in render order.

wrapWidth integer required

The number of cells per wrap line, and therefore the flow’s column count. Never infer that count from columnConfigs, which is sparse: [] means wrapWidth columns none of which are configured, not zero columns.

columnConfigs array of ValueTableGridRowColumnConfig

Column-level configurations, sparse over the wrapWidth columns: a column with no header and no cell config has no entry. position is authoritative rather than the array index, and must be less than wrapWidth. The count-plus-configs pairing mirrors ValueTableLayoutGrid’s columnCount, though that arm’s list is written densely.

groups map of string to ValueTableMultiCellConfig

Per-group cell configuration, keyed by ValueTableFlowCell.groupId. A group with no entry falls back to gridDefaultCellConfigs; 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.

showRowHeaders boolean

If true, display row headers.

rowHeaderWidth number

The width of the row headers in pixels.

showColumnHeaders boolean

If true, display column headers.

showCellLabels boolean

If true, display channel names in the cells.

gridDefaultCellConfigs ValueTableMultiCellConfig required

Panel-level defaults for cell visualisations

columnConfigs array of ValueTableGridRowColumnConfig

Column-level configurations.

rowConfigs array of ValueTableGridRowColumnConfig

Row-level configurations.

rowCount integer required

​

columnCount integer required

​

cells array of ValueTableGridValueTableCell

An 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.

grid ValueTableLayoutGrid

​

flow ValueTableLayoutFlow

​

column ValueTableLayoutColumn

​

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.

range RangeCellConfig

​

enum EnumCellConfig

​

numeric NumericCellConfig

​

staleness StalenessCellConfig

​

numericArray NumericArrayCellConfig

​

enumArray EnumArrayCellConfig

​

struct StructCellConfig

​

ValueTableStalenessConfig#

Configuration for showing staleness of values while streaming

hideStaleness boolean

If 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.

numeric map of HexColor to number

​

numericPreset NumericPresetColorRange

​

enum map 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.

standard StandardValve

​

relief ReliefValve

​

check CheckValve

​

ValveCommanding#

actions array of VizActionOption

Up 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#

stateMappings array of ValveStateRule

Up to 8 rules evaluated in menu order; first match wins. Missing, non-finite, stale, or unmatched feedback renders unknown.

ValveInputPredicate#

variableName string required

Workbook channel variable providing numeric valve feedback.

predicate ValuePredicate required

​

ValveNormalPosition#

The valve’s position when not powered.

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

normallyOpen NormallyOpenValvePosition

​

normallyClosed NormallyClosedValvePosition

​

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.

allOf array of ValveInputPredicate

Must contain between 1 and 8 predicates.

ValveStateRule#

state ValveState required

​

condition ValveStateCondition required

​

ValveVizDefinition#

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

v1 ValveVizDefinitionV1

​

ValveVizDefinitionV1#

title string

The label displayed on the valve.

valve Valve required

​

rotationDegrees integer

Clockwise rotation in degrees. Multiples of 90; absent means no rotation.

VariableLocator#

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

variable string

​

series ChannelLocator

​

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.

staticNumeric number

​

VariableValue#

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

double number

​

computeNode compute.api.ComputeNodeWithContext

​

duration run.api.Duration

​

integer integer

​

channel ChannelSeries deprecated

Deprecated: use series instead.

derived DerivedSeries

​

series SeriesVariable

​

string string

​

stringSet array of string

​

timestamp Timestamp

​

Vec3d#

A three-dimensional Cartesian vector.

x number required

​

y number required

​

z number required

​

VersionedVizId#

rid string required

​

version integer required

​

VerticalTank#

An empty JSON object, {}.

VideoPanelDataSource#

Enhanced video panel data source to be compatible with multiple assets

runRid string (RID)

​

assetRid string (RID) required

​

refName string required

​

VideoVizDefinition#

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

v1 VideoVizDefinitionV1

​

v2 VideoVizDefinitionV2

​

VideoVizDefinitionV1#

events array of Event deprecated

Deprecated: Please use the workbook’s eventRefs field instead.

comparisonRunGroups array of ComparisonRunGroup

​

title string

​

refName string deprecated

Deprecated: Datasource field will be preferred over refName field to support multiple assets.

datasource VideoPanelDataSource

​

VideoVizDefinitionV2#

Stores a video as a variable rather than the deprecated video datasource rid.

title string

​

variable string required

​

annotations array of string

Workbook 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.

sendCommands SendCommandsAction

​

VizActionOption#

A labeled action the user can select from a visualization’s action menu.

label string required

Menu label; must be non-empty and at most 128 characters.

action VizAction required

​

confirmation CommandConfirmation

If present, require explicit confirmation after selection and before execution.

VizCommand#

variableName string required

Workbook 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.

value CommandValue required

​

VizDefinition#

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

boundary BoundaryVizDefinition

​

burstDisc BurstDiscVizDefinition

​

button ButtonVizDefinition

​

cartesian CartesianChartDefinition

​

checklist ChecklistChartDefinition

​

endNode EndNodeVizDefinition

​

frequency FrequencyChartDefinition

​

geo GeoVizDefinition

​

geo3d Geo3dDefinition

​

heatExchanger HeatExchangerVizDefinition

​

histogram HistogramChartDefinition

​

image ImageVizDefinition

​

instrument InstrumentVizDefinition

​

log LogPanelDefinition

​

markdown MarkdownPanelDefinition

​

numberInput NumberInputVizDefinition

​

orifice OrificeVizDefinition

​

plotly PlotlyPanelDefinition

​

procedure ProcedureVizDefinition

​

pump PumpVizDefinition

​

regulator RegulatorVizDefinition

​

shape ShapeVizDefinition

​

tank TankVizDefinition

​

thrustChamber ThrustChamberVizDefinition

​

timeSeries TimeSeriesChartDefinition

​

timeSeriesTable TimeSeriesTablePanelDefinition

​

valueTable ValueTableDefinition

​

valve ValveVizDefinition

​

video VideoVizDefinition

​

VizPanel#

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

v1 VizPanelV1

​

VizPanelV1#

Deprecated - use ChartPanel instead

id string required

​

vizId string required

​

hideLegend boolean required deprecated

Deprecated: No longer used.

hideLabel boolean

When omitted, treat as false.

Window#

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

duration DurationConstant

​

WindowSymmetry#

DFT_EVEN

Generates dft-even/periodic window values.

SYMMETRIC

Generates 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.

input Dataset required

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

series array of NamedSeries

The named derived series to add.

WorkbookAlignmentStrategy#

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

driverSeries DriverSeriesAlignment

​

union UnionAlignment

​

intersect IntersectAlignment

​

workbookcommon.api.Offset#

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

custom UserDuration

​

runAlign RunAlignment

​

eventAlign EventAlignment

​

WorkbookContent#

channelVariables map of ChannelVariableName to ChannelVariable required

​

inputs WorkbookInputs

​

charts map of VizId to VizDefinition required

map of visualizations. Previously termed “charts”

settings WorkbookSettings

​

dataScopeInputs WorkbookDataScopeInputs

​

timeRangeInputs map of string to TimeRangeInput deprecated

Deprecated: Deprecated, use timeRanges instead.

timeRanges map of string to TimeRange

​

reportContent string

​

version string

Schema 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#

variables map of VariableName to VariableLocator

​

WorkbookDataScopeInput#

A data scope input that binds a variable name to an asset or run RID. The variable name is the map key.

name string required deprecated

Deprecated: Deprecated in favor of label.

label string

​

value DataScopeInputValue required

​

colorMode WorkbookDataScopeInputColorMode

How traces from this input are colored. Absent means bySeries (palette rotation, the original behaviour) for backward compatibility.

alignment DatasetAnchor

Structural dataset alignment applied before any input time shift. Absent means the input uses the dataset’s source timestamps.

filters array of DataScopeInputFilter

Filters 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.

byChannel ByChannelColorMode

​

bySource BySourceColorMode

​

bySeries BySeriesColorMode

​

WorkbookDataScopeInputs#

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

v1 WorkbookDataScopeInputsV1

​

WorkbookDataScopeInputsV1#

A map of data scope input variable name to its definition.

inputs map of WorkbookDataScopeInputId to WorkbookDataScopeInput

​

WorkbookFillStrategy#

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

forwardFill UserDuration

​

linear UserDuration

​

WorkbookInput#

A workbook input is a value managed at the workbook level that can be applied to multiple elements.

id string (UUID) required

The unique identifier of the input.

label string

The label of the input for display purposes.

value InputType required

​

WorkbookInputs#

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

v1 WorkbookInputsV1

​

WorkbookInputsV1#

A list of workbook inputs.

inputs array of WorkbookInput

​

WorkbookLayout#

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

v1 WorkbookLayoutV1

​

WorkbookLayoutV1#

rootPanel Panel required

Only TabbedPanel supported.

WorkbookOffsets#

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

v1 WorkbookOffsetsV1

​

WorkbookOffsetsV1#

runs map of RunRid to RunOffset

Deprecated - use dataScope inputs

assets map of AssetRid to AssetOffset

Deprecated - use dataScope inputs

inputs map of WorkbookDataScopeInputId to InputOffset

​

WorkbookRelativeTimestampFormat#

Workbook-level display format for relative timestamps.

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

inherit InheritRelativeTimestampFormat

​

temporalSubunits TemporalSubunitsRelativeTimestampFormat

​

totalSeconds TotalSecondsRelativeTimestampFormat

​

WorkbookSettings#

assetSettings map of AssetRid to AssetSettings

Settings for assets to be used in the workbook. This should be present for asset workbooks.

runSettings map of RunRid to RunSettings

Settings for runs to be used in the workbook. This should be present for run workbooks.

timeSettings WorkbookTimeSettings

Time range settings when users access a workbook. Time range URL query params will take precedence over persisted the global time range.

offsets WorkbookOffsets

Time offsets that can be applied to the workbook.

defaultStalenessConfiguration StalenessConfiguration

Default 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.

fillStrategy WorkbookFillStrategy

Workbook-wide fill strategy for compute requests. When unset, compute falls back to its default.

alignmentStrategy WorkbookAlignmentStrategy

Workbook-wide alignment strategy for compute requests. When unset, compute falls back to its default.

statsPanelScope WorkbookStatsPanelScope

Which 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.

selectedTab SelectedTabStatsPanelScope

​

allTabs AllTabsStatsPanelScope

​

WorkbookTimeRangeType#

ABSOLUTE

​

RELATIVE

​

WorkbookTimeSettings#

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

v1 WorkbookTimeSettingsV1

​

WorkbookTimeSettingsV1#

Time range configuration for workbooks

timeRangeType WorkbookTimeRangeType required

The time range type of the workbook

globalTimeRange Range

The global time range a workbook falls back to.

isGlobalTime boolean required

If true, workbook will default to globalTimeRange for all tabs. If false, will attempt to use tabTime to populate the workbook time range.

tabTimeRanges map of string to Range

​

relativeTimestampFormat WorkbookRelativeTimestampFormat

Relative 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.

input NumericSeries required

​

groupByTags array of StringConstant

Tags to group by for the normalization. If left empty, all groups in the input will be considered as a single family. Otherwise, inputs will be normalized separately across the groups specified by the tags.

interpolationConfiguration InterpolationConfiguration deprecated

Configuration for aligning values across groups at each timestamp. Defaults to forward fill interpolation with a 1s interpolation radius. Deprecated: Setting interpolation on this node is deprecated.

Page design based on Scalar, MIT License.