Devices
Warden's view of each device, excluding a device from checks, and rebooting it.
| Method | Path | Summary |
|---|---|---|
| GET | /api/devices | List devices with their issues |
| GET | /api/devices/:id | A device's findings, updates and history |
| POST | /api/devices/:id/reboot | Reboot a device now (clears the "reboot pending" upgrade blocker) |
| POST | /api/devices/:id/exclude | Exclude a device from Warden ("don't check"), or include it again |
| DELETE | /api/devices/:id/exclude | Include an excluded device again |
#List devices with their issues
GET
/api/devices- Address
https://<your-org>.brambleit.cloud/warden/api/devices- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Warden.
Response 200
| Field | Type | Description |
|---|---|---|
devices | array of any |
Example response
JSON
{
"devices": []
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/devices', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#A device's findings, updates and history
GET
/api/devices/:id- Address
https://<your-org>.brambleit.cloud/warden/api/devices/:id- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Warden.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
device | object | |
device.inventory_hash | any | |
device.patch_capable | boolean | |
device.excluded | object, or null | |
device.excluded.reason | string | |
device.excluded.by | any | |
device.excluded.at | string (date-time) | |
findings | array of any | |
updates | array of any | |
history | array of object | |
history[].id | integer | |
history[].job_id | integer | |
history[].job_name | string | |
history[].status | string: "pending" | "dispatched" | "succeeded" | "failed" | "skipped" | "cancelled" | |
history[].message | string, or null | |
history[].dispatched_at | string (date-time), or null | |
history[].finished_at | string (date-time), or null | |
history[].rebooted | boolean | |
history[].reboot_required | boolean, or null | |
history[].packages_json | string, or null | |
history[].result_json | string, or null | |
history[].packages | array of any | |
history[].result | any | |
tickets | array of any | |
resolved30d | integer | |
removals | array of any | |
upgrades | array of any | |
lifecycle | any |
Example response
JSON
{
"device": {
"…d": "…",
"…state || {}": "…",
"inventory_hash": null,
"patch_capable": false,
"excluded": {
"reason": "string",
"by": null,
"at": "2026-11-12T09:30:00.000Z"
}
},
"findings": [],
"updates": [],
"history": [
{
"id": 42,
"job_id": 7,
"job_name": "Example job name",
"status": "pending",
"message": "Saved",
"dispatched_at": "2026-11-12T09:30:00.000Z",
"finished_at": "2026-11-12T09:30:00.000Z",
"rebooted": false,
"reboot_required": false,
"packages_json": "string",
"result_json": "string",
"packages": [],
"result": null
}
],
"tickets": [],
"resolved30d": 1,
"removals": [],
"upgrades": [],
"lifecycle": null
}Errors
| Status | Message |
|---|---|
| 404 | Device not found |
Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/devices/42', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Reboot a device now (clears the "reboot pending" upgrade blocker)
POST
/api/devices/:id/reboot- Address
https://<your-org>.brambleit.cloud/warden/api/devices/:id/reboot- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Warden.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 202
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Device not found |
Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/devices/42/reboot', {
method: 'POST',
credentials: 'include',
});
const data = await res.json();#Exclude a device from Warden ("don't check"), or include it again
POST
/api/devices/:id/exclude- Address
https://<your-org>.brambleit.cloud/warden/api/devices/:id/exclude- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Warden.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
reason | string |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Device not found |
| 409 | A scan is running. Try again when it finishes. |
Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/devices/42/exclude', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"reason":"string"}),
});
const data = await res.json();#Include an excluded device again
DELETE
/api/devices/:id/exclude- Address
https://<your-org>.brambleit.cloud/warden/api/devices/:id/exclude- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Warden.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Device not found |
| 404 | Device not found or not excluded |
Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/devices/42/exclude', {
method: 'DELETE',
credentials: 'include',
});
const data = await res.json();Was this page helpful?
Thanks for your feedback.