Update the user's charging configuration
Apply mode and/or threshold changes to all of the user’s charging
devices in one transaction. Rejects modes outside available_modes and
thresholds below any device’s band minimum (422).
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
The organization ID of the user's organization
The user whose charging configuration to update
Body
All fields optional — omitted fields are left unchanged. The mode must
be in available_modes (none always is); thresholds must satisfy
every device's hysteresis-band minimum (min_band_w on GET).
hems_mode fans out to the EV rows only. A raw-threshold write
flips preset-mode EVs to custom (current effective values materialized,
then the provided fields overlaid); combining a preset hems_mode with
raw thresholds is contradictory and rejected.
User-facing charging mode on the partner-API wire — the projection of the
DesiredSteering subset {NO_STEERING, DAY_AHEAD, HEMS, DAY_AHEAD_HEMS}.
Only the Day-Ahead + HEMS nibbles are user-selectable here; Intraday and Curtailment are
folded into the same projection (a Day-Ahead+Intraday device still reads spot). Use
to_desired_steering / wire_mode_from_desired to cross the boundary — never compare a
DesiredSteering against one of these directly.
none, spot, hems, hems_and_spot How an EV's HEMS start/stop thresholds are determined (SC-137).
The preset modes derive the surplus start/stop band at session start from the
household PV size (kWp) and the actuation floor — see
core_app.services.smart_charging.thresholds.derive_preset_thresholds. The
stored raw threshold columns on ElectricVehicle are read only in CUSTOM
mode (or as fallback when no usable kWp is known).
EAGER - start on a small surplus fraction of kWp; tolerate more import. BALANCED - the default middle ground. CONSERVATIVE - start only on a large surplus; stop early on import. CUSTOM - the user/operator set the raw threshold columns explicitly.
eager, balanced, conservative, custom 0 <= x <= 500000 <= x <= 50000Response
OK
User-facing charging mode on the partner-API wire — the projection of the
DesiredSteering subset {NO_STEERING, DAY_AHEAD, HEMS, DAY_AHEAD_HEMS}.
Only the Day-Ahead + HEMS nibbles are user-selectable here; Intraday and Curtailment are
folded into the same projection (a Day-Ahead+Intraday device still reads spot). Use
to_desired_steering / wire_mode_from_desired to cross the boundary — never compare a
DesiredSteering against one of these directly.
none, spot, hems, hems_and_spot Why a mode is unavailable (or HEMS ineligible). Stable wire codes the frontend maps to unlock hints — e.g. a locked HEMS row rendering "Connect an inverter".
no_ev, no_battery_capacity, no_actuator, wallbox_not_modulating, no_inverter, inverter_no_export_data 