---
# System prepended metadata

title: Mesh wide upgrade json examples

---

This is a draft to define the JSON objects retrieved from the shared state, for each node, that gives information about the firmware upgrade status.

The possible stats are: **UPDATED**, **UPGRADE_AVAILABLE**, **DOWNLOADING**, **UPGRADE_READY**, **UPGRADE_SCHEDULED**.
The error states are: **DOWNLOAD_ERROR**, **UPGRADE_CHECK_FAILED**, **INTERNAL_ERROR** (when is not possible to perform an action, could be an unexpected error related to permissions, or too outadted nodes that don't have the needed methods etc...)


### JSON example

Not clear if use this JSON for all the states or delegate some of the information to the name state itself.

```json
{
    "state": "UPGRADE_AVAILABLE",
    "new_version_info": "LibreRouterOs_1.5",
    "safe_upgrade": true,
    "downloaded": false, // Is already downloaded
    "downloading": false, // Is downloading the firmware
    "firmware_check": false, // If is downloaded, check the download is upgradable (check the firmware with sysupgrade)
    "scheduled": 30000, // Ms to perform the upgrade. If -1 means not set (?)
}
```