Node State List Request
The NodeStateListRequest retrieves the current state of one or more nodes in a single call. For each node, you can request a configurable set of state details — such as the connection, operation, control, battery, and power state — and paginate through large result sets.
Preparations
- Launch the development client as described in the FlexConnect API — First Steps.
- Navigate to
http://localhost:8080/ui. - Select the documentation for Node State List Request in the left pane.
Request
Run the NodeStateListRequest using the JSON body below.
- Run the request on
app/v1/NodeStateListRequest. - Replace the
stringValueof each entry infilter.idswith the identifier of one of your nodes. - Adjust the
pagination.limitand thedetailTypeslist to match your use case.
Request body
{
"header": {
"reqId": 1234,
"timeoutMs": 10000
},
"pagination": {
"limit": 100
},
"filter": {
"ids": [
{ "type": { "id": 2 }, "stringValue": "356C2F687081150182505CCCC11BC5C461B60B53" },
{ "type": { "id": 2 }, "stringValue": "54F2664E28EDF2593B9CAAAF041687BEDB0A15C8" },
{ "type": { "id": 2 }, "stringValue": "50F6ED70B16F6846D296AD29F0530B4A3008F529" },
{ "type": { "id": 2 }, "stringValue": "6D60D12A3688E7D2CA3F2C0BD8D5BA01459E9E10" },
{ "type": { "id": 2 }, "stringValue": "870673858C4F56FB3C26550C6CA4CFDA43F45606" }
]
},
"detailTypes": [1, 2, 3, 4, 5, 6]
}Request fields
| Field | Description |
|---|---|
header.reqId | Client-defined identifier for the request. The same value is returned in the response header to correlate requests and responses. |
header.timeoutMs | Maximum time (in milliseconds) the platform waits for the result before responding with a timeout error. |
pagination.limit | Maximum number of node states returned in a single response. Use the cursor returned in the response to iterate through larger result sets. |
filter.ids | List of node identifiers to query. All identifiers must be of the same type. The identifiers in the response are returned in the same type. |
detailTypes | List of optional state details to include for each node. Only the requested details are populated in the response. |
Identifier type
The type.id value of 2 refers to the SKI identifier. Use the identifier type that matches the values you have for your nodes.
detailTypes values
The detailTypes array selects which optional state attributes are returned for each node. Any combination can be requested.
| Value | Code | Description |
|---|---|---|
| 1 | CONNECTION_STATE | Whether the node is currently connected to the platform. |
| 2 | OPERATION_STATE | Whether the node is in normal operation, in a failure state, or in service mode. |
| 3 | CONTROL_STATE | The control state of the energy storage system (idle, failsafe, power, local, regulated). |
| 4 | BATTERY_STATE | Current capacity, maximum usable capacity, and state of health of the battery. Only populated when the node is connected. |
| 5 | POWER_STATE | Desired power setpoint, current active power, and the identifier of the schedule currently in effect. Only populated when the node is connected. |
| 6 | UPTIME_SECONDS | Uptime of the node in seconds since its last restart. |
Response
Response body
{
"header": {
"reqId": 1234
},
"pagination": {
"cursorNext": "1wsf="
},
"nodeStates": [
{
"id": {
"type": { "id": 2 },
"stringValue": "356C2F687081150182505CCCC11BC5C461B60B53"
},
"connectionState": {
"state": 1,
"timestamp": 1740268800000
},
"operationState": {
"state": 1,
"timestamp": 1740268800000
},
"controlState": {
"state": 3,
"timestamp": 1740268800000
},
"batteryState": {
"state": {
"currentCapacity": { "number": 1677 },
"maximumUsableCapacity": { "number": 1842 },
"stateOfHealth": { "number": 912, "scale": -1 }
},
"timestamp": 1740268800000
},
"powerState": {
"state": {
"desiredPowerSetpoint": { "number": 600 },
"currentActivePower": { "number": 500 },
"scheduleId": 582
},
"timestamp": 1740268800000
},
"uptimeSeconds": 62415
}
]
}Response fields
Each entry in nodeStates represents a single node. The optional state attributes (connectionState, operationState, controlState, batteryState, powerState, uptimeSeconds) are only included if their corresponding value was specified in the detailTypes of the request.
Connection-dependent values
The batteryState and powerState attributes are only populated when the node's connectionState is CONNECTED.
connectionState.state values
| Value | Code | Description |
|---|---|---|
| 1 | CONNECTED | The node is connected to the platform. |
| 2 | DISCONNECTED | The node is disconnected from the platform. |
| 3 | PROVISIONED | The node has been provisioned but has never connected to the platform. |
operationState.state values
| Value | Code | Description |
|---|---|---|
| 1 | NORMAL_OPERATION | All systems are operating normally. |
| 2 | FAILURE | One or more systems are in a failed state. |
| 3 | SERVICE | The system is in service mode. |
controlState.state values
| Value | Code | Description |
|---|---|---|
| 1 | IDLE | The ESS has no active control instructions. |
| 2 | FAILSAFE | The ESS is in the failsafe state and cannot operate due to a failure. |
| 3 | POWER | The ESS is in the power control state. Charge and discharge commands are defined by the active schedule with the highest priority. |
| 4 | LOCAL | The ESS is in the PCC (Point of Common Coupling) control state. |
| 5 | REGULATED | A regulation authority (such as a grid operator) is in control of the ESS. |
batteryState.state
| Element | Description |
|---|---|
currentCapacity | Currently available battery capacity in Watt-hours, taking the configured state-of-charge limits into account. |
maximumUsableCapacity | Maximum usable battery capacity in Watt-hours, taking the configured state-of-charge limits into account. This value decreases over time as the battery degrades. |
stateOfHealth | State of health of the battery in percent. |
All values are represented as scaled numbers — the actual value equals number × 10^scale (a missing scale is treated as 0).
powerState.state
| Element | Description |
|---|---|
desiredPowerSetpoint | Desired power setpoint in Watts as specified by the active power schedule. Positive values represent charging, negative values represent discharging. |
currentActivePower | Currently measured active power in Watts at the grid connection point. May differ from the setpoint due to battery constraints. Positive values represent charging, negative values discharging. |
scheduleId | Identifier of the schedule currently applied. A value of 0 means that no schedule is currently applied; -1 means that no schedule can be applied due to a failure. |
Pagination
When the requested result set is larger than the pagination.limit, the response includes a pagination.cursorNext value (and, when iterating, a cursorPrevious value).
To retrieve the next page, repeat the request and pass the received cursorNext value as pagination.cursorValue. Iteration ends when no further cursor is returned.
{
"header": {
"reqId": 1235,
"timeoutMs": 10000
},
"pagination": {
"limit": 100,
"cursorValue": "1wsf="
},
"filter": {
"ids": [{ "type": { "id": 2 }, "stringValue": "356C2F687081150182505CCCC11BC5C461B60B53" }]
},
"detailTypes": [1, 2, 3, 4, 5, 6]
}Reducing payload size
Only request the detailTypes you actually need. For example, when periodically polling for liveness, requesting just CONNECTION_STATE (1) significantly reduces the response payload.