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.
| Key | Type | Purpose |
|---|---|---|
from / to | ISO datetime | Literal scenario window overlap when dateRangeSource is literal (default). |
dateRangeSource | string | How to resolve from / to. See table below. Counts as a filter on its own. |
fromMetadataPath / toMetadataPath | string | Dot paths into the running session MetadataJson when dateRangeSource is sessionMetadata. |
fromOutputPath / toOutputPath | string | Dot paths into a parent node output when dateRangeSource is parentOutput. |
dimensionName | string | Substring match on dimension name. |
dashboardVersion | "Legacy" or "Next" | Filter by dashboard version. |
userId | int | Dimension must include this core user. |
sessionTemplateName | string | Exact case-insensitive match on parent session template name. |
sessionTemplateId | int | Parent session template id. |
sessionSimulationName | string | Exact case-insensitive match on parent Session.SimulationName. |
scenarioName | string | Exact case-insensitive match on ScenarioInstance.ScenarioName. |
projectId / projectName | int / string | Scope to one project. |
limit / offset | int | Pagination on distinct sessions (default limit 200, max 1000). |
includeStaticBackedSessions | bool | Default 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:
| Value | Behavior |
|---|---|
literal (default) | Use from / to from node configuration as written. |
sessionCreatedAtDay | Calendar day (UTC) of the running session createdAt. Use when each static refresh creates a new session for that day. |
utcNowDay | Calendar day (UTC) at processing time. Use when the same static session is reprocessed on a schedule. |
sessionMetadata | Read ISO datetimes from fromMetadataPath / toMetadataPath on the running session MetadataJson. |
parentOutput | Read 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-v2graphs 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
SessionServicein-process.