> ## Documentation Index
> Fetch the complete documentation index at: https://developer.plugchoice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Firmware

Triggers a firmware update to the latest available version for the specified charger. Returns `202 Accepted` when the update is successfully requested. Returns `422 Unprocessable Entity` with a `message` field when no newer firmware is available, no update track is configured, or the current version cannot be determined.

<ParamField path="charger" type="string" required>
  The UUID of the charger to update.
</ParamField>

## Response

<ResponseField name="current_version" type="string">
  The current firmware version installed on the charger. May be `null`.
</ResponseField>

<ResponseField name="latest_version" type="string">
  The target firmware version for the update. May be `null`.
</ResponseField>

<ResponseField name="update_available" type="boolean">
  Whether a newer firmware version is available for this charger.
</ResponseField>

<ResponseField name="auto_update" type="boolean">
  Whether automatic firmware updates are enabled for this charger.
</ResponseField>

<ResponseField name="can_update" type="boolean">
  Whether an update can currently be triggered. Always `false` after a successful trigger.
</ResponseField>

<ResponseField name="status" type="string">
  The firmware update status. Always `requested` after a successful trigger.
</ResponseField>

<ResponseField name="progress" type="integer">
  The firmware update progress percentage. `12` immediately after a successful trigger.
</ResponseField>

<ResponseField name="last_status" type="string">
  The most recent raw firmware status reported. May be `null`.
</ResponseField>

<ResponseField name="last_status_at" type="string">
  ISO 8601 timestamp of the most recent firmware status. May be `null`.
</ResponseField>

<ResponseField name="availability_reason" type="string">
  The reason a newer version is unavailable when applicable. May be `null`.
</ResponseField>
