OS endpoints
Minimum role: manager for all /os paths except POST /os/datadisk/wipe, which is explicitly carved out of the manager set and requires admin. GET /os/info is also readable by any role via the info-path rule.
| Method | Path | Role | Description |
|---|---|---|---|
| GET | /os/info | default | OS version, board, boot slot info |
| POST | /os/update | manager | Update the OS |
| GET | /os/config/swap | manager | Read swap settings |
| POST | /os/config/swap | manager | Change swap settings |
| POST | /os/config/sync | manager | Trigger OS config reload |
| POST | /os/datadisk/move | manager | Migrate the data disk to another device |
| GET | /os/datadisk/list | manager | List candidate data-disk targets |
| POST | /os/datadisk/wipe | admin | Wipe the data disk |
| POST | /os/boot-slot | manager | Switch active boot slot and reboot |
| GET | /os/boards/green | manager | Green board LED settings |
| POST | /os/boards/green | manager | Change green board LEDs |
| GET | /os/boards/yellow | manager | Yellow board LED settings |
| POST | /os/boards/yellow | manager | Change yellow board LEDs |
| GET | /os/boards/raspberrypi/firmware | manager | Raspberry Pi firmware state |
| POST | /os/boards/raspberrypi/firmware/update | manager | Trigger Raspberry Pi firmware update |
| GET | /os/boards/{board} | manager | Empty success if {board} is the board in use |
GET /os/info
Response data keys: version, version_latest, update_available, board, boot (active slot), data_disk (device ID in use), boot_slots — a map keyed by boot name (A/B) with state, status, and version per slot.
POST /os/update
| Field | Type | Default |
|---|---|---|
version | version tag | latest |
GET /os/config/swap
Response data: swap_size, swappiness. Requires an OS version that ships swap settings support; otherwise returns 404.
POST /os/config/swap
| Field | Type | Description |
|---|---|---|
swap_size | string matching \d+[KMG](i?B)? or \d+B | Swap file size |
swappiness | int 0–200 | Kernel swappiness |
Changing either value creates a reboot-required issue in the resolution center.
POST /os/datadisk/move
| Field | Type | Required |
|---|---|---|
device | string | yes |
GET /os/datadisk/list
Response data: devices (list of disk IDs) and disks — objects with name, vendor, model, serial, size, id, dev_path.
POST /os/boot-slot
| Field | Type | Required | Values |
|---|---|---|---|
boot_slot | string | yes | "A" or "B" |
Board endpoints
GET /os/boards/green returns / POST accepts: activity_led, power_led, system_health_led (booleans).
GET /os/boards/yellow returns / POST accepts: disk_led, heartbeat_led, power_led (booleans). Changing yellow board settings creates a reboot-required issue.
GET /os/boards/raspberrypi/firmware returns: current_version, latest_version, update_available, update_blocked, update_pending, blocked_reason. Requires OS Agent 1.9.0+ and a board exposing firmware management; otherwise 404. POST .../firmware/update takes no body and is rejected while the update is blocked for the current boot device.
GET /os/boards/{board} returns empty data if the named board is in use, otherwise an error.