Devices

Warden's view of each device, excluding a device from checks, and rebooting it.

MethodPathSummary
GET/api/devicesList devices with their issues
GET/api/devices/:idA device's findings, updates and history
POST/api/devices/:id/rebootReboot a device now (clears the "reboot pending" upgrade blocker)
POST/api/devices/:id/excludeExclude a device from Warden ("don't check"), or include it again
DELETE/api/devices/:id/excludeInclude 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_id cookies from Bramble sign-in).
Licence: Warden.

Response 200

FieldTypeDescription
devicesarray 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_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
deviceobject
device.inventory_hashany
device.patch_capableboolean
device.excludedobject, or null
device.excluded.reasonstring
device.excluded.byany
device.excluded.atstring (date-time)
findingsarray of any
updatesarray of any
historyarray of object
history[].idinteger
history[].job_idinteger
history[].job_namestring
history[].statusstring: "pending" | "dispatched" | "succeeded" | "failed" | "skipped" | "cancelled"
history[].messagestring, or null
history[].dispatched_atstring (date-time), or null
history[].finished_atstring (date-time), or null
history[].rebootedboolean
history[].reboot_requiredboolean, or null
history[].packages_jsonstring, or null
history[].result_jsonstring, or null
history[].packagesarray of any
history[].resultany
ticketsarray of any
resolved30dinteger
removalsarray of any
upgradesarray of any
lifecycleany
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

StatusMessage
404Device 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_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequiredinteger

Response 202

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404Device 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_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
reasonstring

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404Device not found
409A 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_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404Device not found
404Device 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();