Variables
Read and write PLC variables by symbol path. Requires feature flag Variables enabled.
Read Variable
GET /api/plcs/{plcId}/variables/{symbolPath}Policy: ReadAccess (role >= viewer, scope ads:read)
curl http://localhost:5000/api/plcs/Line1/variables/MAIN.nCounter{
"data": { "symbol": "MAIN.nCounter", "value": 42, "typeName": "UDINT" },
"error": null
}Batch Read
GET /api/plcs/{plcId}/variables?paths=MAIN.a&paths=MAIN.bPolicy: ReadAccess
Reads multiple variables in one request. Maximum 100 symbols per request.
Write Variable
PUT /api/plcs/{plcId}/variables/{symbolPath}Policy: WriteAccess (role >= operator, scope ads:write)
curl -X PUT http://localhost:5000/api/plcs/Line1/variables/MAIN.nCounter \
-H "Content-Type: application/json" \
-d '{"value": 100}'Batch Write
PUT /api/plcs/{plcId}/variablesPolicy: WriteAccess
curl -X PUT http://localhost:5000/api/plcs/Line1/variables \
-H "Content-Type: application/json" \
-d '{"values": {"MAIN.a": 1, "MAIN.b": 2}}'Maximum 100 symbols per request.
Value Constraints
GET /api/plcs/{plcId}/constraints/{symbolPath}Policy: ReadAccess
Returns the configured validation constraints for a symbol, including Min, Max, Enum, Pattern, and ReadOnly fields. If no constraints are configured for the symbol, the response contains empty/null fields.
curl http://localhost:5000/api/plcs/Line1/constraints/MAIN.nSpeed{
"data": { "symbol": "MAIN.nSpeed", "min": 0, "max": 100, "enum": null, "pattern": null, "readOnly": false },
"error": null
}Writes are validated against these constraints. A write that violates a constraint returns 400 with error code VALUE_OUT_OF_RANGE.
Symbol Access Control
Write operations are checked against the symbol access guard configured per PLC (see Configuration). If a symbol is denied by the allowlist/denylist rules, the API returns 403 with error code SYMBOL_WRITE_DENIED.