Ok, I have done some testing, hope this might help.
Working: turn thermostat on/off:
~ curl -H 'Content-Type: application/json' -X PUT -d '{"mode": "off"}' http://172.30.33.0:40850/api/445A30xxxx/sensors/71/config
[{"success":{"/sensors/71/config/mode":"off"}}]
~ curl -X GET http://172.30.33.0:40850/api/445A30xxxx/sensors/71
{"config":{"heatsetpoint":1950,"mode":"off","offset":0,"on":true,"reachable":true},"ep":1,"etag":"edbe66b2e451bff5e1d8119f231d27e6","lastannounced":null,"lastseen":"2023-04-11T18:48Z","manufacturername":"NAMRON AS","modelid":"4512737","name":"Termostat kjeller","state":{"lastupdated":"2023-04-11T18:46:54.201","on":false,"temperature":1956},"swversion":"6.9.1.0_r4","type":"ZHAThermostat","uniqueid":"1f:ff:00:01:00:00:03:cb-01-0201"}#
~ curl -H 'Content-Type: application/json' -X PUT -d '{"mode": "heat"}' http://172.30.33.0:40850/api/445A30xxxx/sensors/71/config
[{"success":{"/sensors/71/config/mode":"heat"}}]#
~ curl -X GET http://172.30.33.0:40850/api/445A30xxxx/sensors/71
{"config":{"heatsetpoint":1950,"mode":"heat","offset":0,"on":true,"reachable":true},"ep":1,"etag":"6cebb2eb1a3af85bb8f4bc8443346404","lastannounced":null,"lastseen":"2023-04-11T18:48Z","manufacturername":"NAMRON AS","modelid":"4512737","name":"Termostat kjeller","state":{"lastupdated":"2023-04-11T18:46:54.201","on":false,"temperature":1956},"swversion":"6.9.1.0_r4","type":"ZHAThermostat","uniqueid":"1f:ff:00:01:00:00:03:cb-01-0201"}
Not working - set heatpoint:
~ curl -H 'Content-Type: application/json' -X PUT -d '{"heatsetpoint": 2200}' http://172.30.33.0:40850/api/445A30xxxx/sensors/71/config
[{"success":{"/sensors/71/config/heatsetpoint":2200}}]
~ curl -X GET http://172.30.33.0:40850/api/445A30xxxx/sensors/71
{"config":{"heatsetpoint":2200,"mode":"heat","offset":0,"on":true,"reachable":true},"ep":1,"etag":"37b39178940d2c20e6cf0a9196f931cd","lastannounced":null,"lastseen":"2023-04-11T18:48Z","manufacturername":"NAMRON AS","modelid":"4512737","name":"Termostat kjeller","state":{"lastupdated":"2023-04-11T18:46:54.201","on":false,"temperature":1956},"swversion":"6.9.1.0_r4","type":"ZHAThermostat","uniqueid":"1f:ff:00:01:00:00:03:cb-01-0201"}
With config heatsetpoint nothing changes on the thermostat, but API returns the value. After a few seconds, the correct (unchanged) value is returned:
~ curl -X GET http://172.30.33.0:40850/api/445A30xxxx/sensors/71
{"config":{"heatsetpoint":1950,"mode":"heat","offset":0,"on":true,"reachable":true},"ep":1,"etag":"d176980e901e012d4a39aa38d12dbc31","lastannounced":null,"lastseen":"2023-04-11T18:57Z","manufacturername":"NAMRON AS","modelid":"4512737","name":"Termostat kjeller","state":{"lastupdated":"2023-04-11T18:57:46.187","on":false,"temperature":2006},"swversion":"6.9.1.0_r4","type":"ZHAThermostat","uniqueid":"1f:ff:00:01:00:00:03:cb-01-0201"}