Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
RunnersSystem Utilssession-dimension-query

session-dimension-query

Platform reserved (system-utils only). Queries the Core API database for session dimensions matching optional filters, then returns one row per distinct session with a nested matchingDimensions array. Downstream nodes (for example system-arbex-js) can aggregate session metadata or build daily rollups.

When to use it

Use in platform or static session templates when you need cross-session discovery anchored on dimensions (dashboard instances), not just session table fields. Typical patterns:

  • Find all sessions for a calendar day whose scenario window overlaps a date range.
  • Scope by session template name, simulation name, dimension name, or project.
  • Feed session metadataJson (hits, misses, accuracy, and similar) into a leaderboard or summary node.

Configuration

At least one filter is required. Omitting all filters fails the node.

KeyTypePurpose
from / toISO datetimeLiteral scenario window overlap when dateRangeSource is literal (default).
dateRangeSourcestringHow to resolve from / to. See table below. Counts as a filter on its own.
fromMetadataPath / toMetadataPathstringDot paths into the running session MetadataJson when dateRangeSource is sessionMetadata.
fromOutputPath / toOutputPathstringDot paths into a parent node output when dateRangeSource is parentOutput.
dimensionNamestringSubstring match on dimension name.
dashboardVersion"Legacy" or "Next"Filter by dashboard version.
userIdintDimension must include this core user.
sessionTemplateNamestringExact case-insensitive match on parent session template name.
sessionTemplateIdintParent session template id.
sessionSimulationNamestringExact case-insensitive match on parent Session.SimulationName.
scenarioNamestringExact case-insensitive match on ScenarioInstance.ScenarioName.
projectId / projectNameint / stringScope to one project.
limit / offsetintPagination on distinct sessions (default limit 200, max 1000).
includeStaticBackedSessionsboolDefault false; excludes sessions backing platform static instances.

Dynamic date range (dateRangeSource)

Static templates should not hard-code calendar dates in from / to. Use dateRangeSource instead:

ValueBehavior
literal (default)Use from / to from node configuration as written.
sessionCreatedAtDayCalendar day (UTC) of the running session createdAt. Use when each static refresh creates a new session for that day.
utcNowDayCalendar day (UTC) at processing time. Use when the same static session is reprocessed on a schedule.
sessionMetadataRead ISO datetimes from fromMetadataPath / toMetadataPath on the running session MetadataJson.
parentOutputRead ISO datetimes from fromOutputPath / toOutputPath on the first parent node output. Requires a wired parent.

Resolved bounds use the same overlap normalization as the dimension catalog API. The output criteria.from / criteria.to echo the resolved values.

Example (daily static, no hard-coded dates)

{ "dateRangeSource": "sessionCreatedAtDay", "sessionTemplateName": "fn-shots-analytics", "sessionSimulationName": "Exercise-A", "limit": 500 }

Example (literal dates, ad hoc query)

{ "dateRangeSource": "literal", "from": "2026-05-23T00:00:00Z", "to": "2026-05-23T23:59:59Z", "sessionTemplateName": "fn-shots-analytics", "limit": 500 }

Output shape

JSON written to object storage:

{ "totalCount": 12, "limit": 200, "offset": 0, "criteria": { "...applied filters including resolved from/to..." }, "sessions": [ { "session": { "id": "...", "name": "...", "simulationName": "...", "projectId": 1, "sessionTemplateId": 5, "sessionTemplateName": "fn-shots-analytics", "metadataJson": { "hits": 10, "misses": 2 }, "createdAt": "..." }, "matchingDimensions": [ { "id": 99, "dimensionName": "Trainee dashboard", "dashboardVersion": "Next", "nodeOutputId": 1234, "scenarioInstance": { "scenarioInstanceId": "...", "scenarioName": "...", "from": "...", "to": "..." }, "dimensionUserIds": [1, 2] } ] } ] }

Limitations

  • Platform reserved: not for integrator-owned dashboard-v2 graphs on dashboard-utils.
  • Requires at least one filter; unbounded catalog scans are rejected.
  • Pagination applies to distinct sessions, not individual dimensions.
  • Does not resolve HEAT Auth display names; session rows contain only core-api fields.
  • No HTTP API endpoint in this release; the node calls SessionService in-process.