Network devices

Hosts found by RMM network probes with their findings, and network kit (UniFi) from connectors: polling and firmware upgrades.

MethodPathSummary
GET/api/networkScoped by the probe that saw a host: with a site/group picked, only that site's probes, their hosts and findings
POST/api/network/scanScan network hosts now
POST/api/network/findings/statusAccept or dismiss network findings
GET/api/network/kitConnectors are set up in BRM-Admin → Warden → Network integrations
POST/api/network/kit/:id/pollRefresh a network device now
POST/api/network/kit/upgradeFirmware upgrades: { connector_id, device_ids, when (ISO time, or empty for now) }
DELETE/api/network/kit/jobs/:idCancel a firmware upgrade

#Scoped by the probe that saw a host: with a site/group picked, only that site's probes, their hosts and findings

GET/api/network
Address
https://<your-org>.brambleit.cloud/warden/api/network
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Response 200

FieldTypeDescription
enabledboolean
hourinteger
probesarray of any
runsarray of any
hostsarray of object
hosts[].idinteger
hosts[].tenant_idinteger
hosts[].ipstring
hosts[].macstring, or null
hosts[].vendorstring, or null
hosts[].hostnamestring, or null
hosts[].os_guessstring, or null
hosts[].probe_device_idstring, or null
hosts[].first_seenstring (date-time), or null
hosts[].last_seenstring (date-time), or null
hosts[].last_run_idinteger, or null
hosts[].rmmany
hosts[].servicesarray of any
hosts[].findingsinteger
findingsarray of object
findings[].idinteger
findings[].tenant_idinteger
findings[].ipstring
findings[].portinteger
findings[].check_keystring
findings[].severitystring: "critical" | "high" | "medium" | "low"
findings[].titlestring
findings[].detailstring, or null
findings[].statusstring: "open" | "resolved" | "accepted"
findings[].status_notestring, or null
findings[].status_bystring, or null
findings[].first_seenstring (date-time), or null
findings[].last_seenstring (date-time), or null
findings[].resolved_atstring (date-time), or null
findings[].hostany
countsobject
counts.hostsinteger
counts.servicesinteger
counts.acceptedinteger
Example response
JSON
{
  "enabled": true,
  "hour": 1,
  "probes": [],
  "runs": [],
  "hosts": [
    {
      "id": 42,
      "tenant_id": 1,
      "ip": "192.0.2.10",
      "mac": "string",
      "vendor": "string",
      "hostname": "office-pc-01",
      "os_guess": "string",
      "probe_device_id": "string",
      "first_seen": "2026-11-12T09:30:00.000Z",
      "last_seen": "2026-11-12T09:30:00.000Z",
      "last_run_id": 7,
      "rmm": null,
      "services": [],
      "findings": 1
    }
  ],
  "findings": [
    {
      "id": 42,
      "tenant_id": 1,
      "ip": "192.0.2.10",
      "port": 1,
      "check_key": "…",
      "severity": "critical",
      "title": "Example title",
      "detail": "string",
      "status": "open",
      "status_note": "active",
      "status_by": "active",
      "first_seen": "2026-11-12T09:30:00.000Z",
      "last_seen": "2026-11-12T09:30:00.000Z",
      "resolved_at": "2026-11-12T09:30:00.000Z",
      "host": null
    }
  ],
  "counts": {
    "hosts": 1,
    "services": 1,
    "…Object.fromEntries(SEVS.": "…",
    "accepted": 1
  }
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Scan network hosts now

POST/api/network/scan
Address
https://<your-org>.brambleit.cloud/warden/api/network/scan
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Response 201

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network/scan', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Accept or dismiss network findings

POST/api/network/findings/status
Address
https://<your-org>.brambleit.cloud/warden/api/network/findings/status
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Request body JSON

NameTypeDescription
idsarray of any
statusstring
notestring

Response 200

FieldTypeDescription
updatedinteger
Example response
JSON
{
  "updated": 1
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network/findings/status', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"ids":[],"status":"active","note":"string"}),
});
const data = await res.json();

#Connectors are set up in BRM-Admin → Warden → Network integrations

GET/api/network/kit
Address
https://<your-org>.brambleit.cloud/warden/api/network/kit
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Response 200

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network/kit', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Refresh a network device now

POST/api/network/kit/:id/poll
Address
https://<your-org>.brambleit.cloud/warden/api/network/kit/:id/poll
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 202

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

Errors

StatusMessage
404Integration not found

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network/kit/12.5/poll', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Firmware upgrades: { connector_id, device_ids, when (ISO time, or empty for now) }

POST/api/network/kit/upgrade
Address
https://<your-org>.brambleit.cloud/warden/api/network/kit/upgrade
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Request body JSON

NameTypeDescription
connector_idinteger
device_idsarray of any
whenany

Response 201

FieldTypeDescription
messagestring
Example response
JSON
{
  "…r": "…",
  "message": "Saved"
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network/kit/upgrade', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"connector_id":7,"device_ids":[],"when":"…"}),
});
const data = await res.json();

#Cancel a firmware upgrade

DELETE/api/network/kit/jobs/:id
Address
https://<your-org>.brambleit.cloud/warden/api/network/kit/jobs/:id
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

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

Errors

StatusMessage
409Only a scheduled upgrade that hasn't started can be cancelled

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/network/kit/jobs/12.5', {
  method: 'DELETE',
  credentials: 'include',
});
const data = await res.json();