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 (?)
}
```