Skip to content

POST /api/settings/set/

Partially update saved settings (merge semantics).

Auth: Bearer (powerUser).


{
"access": {
"devPasswordEnable": true,
"devPassword": "Ab12",
"webUserPassEnable": true,
"webPwrPassEnable": true,
"modbusPasswordEnable": true
},
"network": {
"dhcpEnable": false,
"ipAddress": "192.168.1.77",
"subnetMask": "255.255.255.0",
"gateway": "192.168.1.1"
},
"vpnWireguard": {
"enabled": true,
"autoConfigEnable": false,
"privateKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"address": "10.8.0.2/24",
"peerPublicKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"peerHostname": "vpn.example.com",
"peerPort": 51820,
"allowedIps": ["0.0.0.0/0", "10.20.0.0/16"],
"keepaliveSec": 25
},
"recorder": {
"enabled": true,
"periodSec": 120
}
}
  • All top-level groups are optional: general, dateTime, display, access, recorder, network, ntp, web, modbus, vpnWireguard, channels, protection.
  • The meta group is read-only.
  • Nested objects are updated partially (merged).
  • An omitted password field means “do not change the password.”
  • Arrays are replaced in full: network.dns, vpnWireguard.allowedIps, channels.items, protection.trip.channels, protection.alarm.channels, protection.fan.channels.
  • Unknown keys are not allowed → 400 ERROR_INVALID_VALUE.
  • The value type must match the schema.
  • Channel arrays must have a length of 4.
  • sensorTypeId must correspond to GET /api/reference/sensor-types/.
  • Request body ≤ 4096 bytes.

The constraints below match the firmware validation in Application/User/settings.h.

  • general.logDebugMask: 0..65535 (bitmask, bit0 = WireGuard).
  • dateTime.timezoneOffset: -720..840 minutes.
  • dateTime.dst.mode: 0..3.
  • dateTime.dst.deltaMin: 0..180 minutes.
  • display.contrast: 0..64.
  • display.activeBacklightPercent: 0..100.
  • display.idleBacklightEnable: true | false.
  • display.idleBacklightPercent: 0..100.
  • display.idleTimeoutSec: 30..3600 seconds.
  • access.devPasswordEnable, access.webUserPassEnable, access.webPwrPassEnable, access.modbusPasswordEnable: true | false; false disables validation of the corresponding password without deleting the saved value.
  • access.devPassword: string with a length of 4..23 characters.
  • access.webUserPass, access.webPwrPass, access.modbusPassword: string with a length of 8..23 characters.
  • Allowed password characters: digits 0–9, Latin letters A–Z, a–z and the characters ., -, _, :, /, @.
  • A null password, an empty string, a value that is too short or too long, or an invalid character → 400 ERROR_INVALID_VALUE.
  • To leave a password unchanged, omit the field. The protection state is changed independently using the corresponding ...PasswordEnable flag.
  • recorder.enabled: true | false.
  • recorder.periodSec: 5..3600 seconds.
  • ntp.syncPeriodSec: 300..86400 seconds.
  • ntp.server1, ntp.server2: up to 31 characters each.
  • web.port: 1..65535.
  • web.vpnTrusted: true | false.
  • web.vpnAccessLevel: 0..2 (password, user, powerUser); 0 uses standard password authorization.
  • modbus.unitId: 0..247; 0 — accept requests with any Unit ID.
  • modbus.port: 1..65535.
  • modbus.timeoutSec: 1..3600 seconds.
  • modbus.protectMode: 0..2 (none, write-protect, read-write-protect).
  • modbus.vpnAccessLevel: 0..3 (disabled, password, read-only, read-write).
  • vpnWireguard.autoConfigEnable: true | false.
  • vpnWireguard.autoConfigUrl: Auto-configuration server URL.
  • vpnWireguard.privateKey: WireGuard base64 string for the static private key. An empty string "" clears the key.
  • vpnWireguard.address: IPv4 CIDR string, for example 10.8.0.2/24. An empty string "" clears the address.
  • vpnWireguard.peerPublicKey: WireGuard base64 string for the static peer public key. An empty string "" clears the key.
  • vpnWireguard.peerHostname: peer hostname.
  • vpnWireguard.peerPort: 1..65535.
  • vpnWireguard.allowedIps: array of 2 IPv4 CIDR strings. An empty string "" clears the element.
  • vpnWireguard.keepaliveSec: 1..300 seconds.
  • channels.filterLevel: 1..10.
  • channels.items[].userOffset: -10.0..10.0 °C.
  • channels.items[].ptcMinikaNominal: 60.0..180.0 °C.
  • channels.items[].linked: 0..1; when a TRIP/ALARM/FAN threshold or hysteresis is written for a linked channel, the value is automatically copied to all linked channels.
  • protection.trip.delaySec, protection.alarm.delaySec, protection.fan.delaySec, protection.fault.delaySec: 0..60 seconds.
  • protection.trip.channels[].threshold, protection.alarm.channels[].threshold, protection.fan.channels[].threshold: -40.0..240.0 °C.
  • protection.trip.channels[].hysteresis, protection.alarm.channels[].hysteresis, protection.fan.channels[].hysteresis: 0.0..100.0 °C.
  • protection.fan.mode: 0..3.

{}
  • When vpnWireguard.autoConfigEnable = false, the static WireGuard parameters from vpnWireguard are saved and used.
  • When vpnWireguard.autoConfigEnable = true, static WireGuard parameters may remain saved in settings but are ignored at runtime; configuration is obtained from the service identity API in Overvis mode.