App settings: Warden
Warden administration: overview, network device integrations (UniFi), SIEM (Logs & auditing) collection, general settings, ticket and notification rules, and connectors.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/admin/warden/overview | Warden configuration status + headline numbers for the admin overview |
| GET | /v1/admin/warden/network | Detection + PSA integration settings, and the site -> PSA customer map |
| PUT | /v1/admin/warden/network | Update the network |
| GET | /v1/admin/warden/siem | Get the SIEM |
| PUT | /v1/admin/warden/siem | Update the SIEM |
| GET | /v1/admin/warden/settings | Get the settings |
| PUT | /v1/admin/warden/settings | Update the settings |
| GET | /v1/admin/warden/lookups | RMM sites and PSA queues/customers for the settings dropdowns |
| GET | /v1/admin/warden/ticket-rules | List ticket rules |
| POST | /v1/admin/warden/ticket-rules | Create a ticket rule |
| PUT | /v1/admin/warden/ticket-rules/:id | Update a ticket rule |
| DELETE | /v1/admin/warden/ticket-rules/:id | Delete a ticket rule |
| GET | /v1/admin/warden/notify-channels | The tenant's named notification channels Warden can deliver through (set up in Admin → RMM → Notification channels) |
| GET | /v1/admin/warden/notify-rules | Warden notification rules, with each rule's last delivery |
| POST | /v1/admin/warden/notify-rules | Create a notify rule |
| PUT | /v1/admin/warden/notify-rules/:id | Update a notification rule |
| DELETE | /v1/admin/warden/notify-rules/:id | Delete a notify rule |
| POST | /v1/admin/warden/notify-rules/:id/test | Queue a test message for a rule (Warden sends it within ~15s; poll notify-rules for the result) |
| GET | /v1/admin/warden/connectors | List connectors |
| POST | /v1/admin/warden/connectors | Create a connector |
| PUT | /v1/admin/warden/connectors/:id | Update a connector |
| POST | /v1/admin/warden/connectors/:id/reset-pin | After a controller is replaced or gets a new certificate |
| DELETE | /v1/admin/warden/connectors/:id | Delete a connector |
#Warden configuration status + headline numbers for the admin overview
GET
/v1/admin/warden/overview- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/overview- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
settings | object | |
findings | object | |
findings.open_ | integer | |
findings.critical | number | |
findings.kev | number | |
devices | object | |
devices.total | integer | |
devices.supported | number | |
devices.limited_ | number | |
policies | object | |
policies.n | integer | |
policies.enabled | number | |
rules | object | |
rules.n | integer | |
rules.enabled | number | |
mapped_sites | integer | |
total_sites | integer |
Example response
JSON
{
"settings": {
"…DEFAULT_SETTINGS": "…",
"…s || {}": "…"
},
"findings": {
"open_": 1,
"critical": 12.5,
"kev": 12.5
},
"devices": {
"total": 3,
"supported": 12.5,
"limited_": 12.5
},
"policies": {
"n": 3,
"enabled": 12.5
},
"rules": {
"n": 3,
"enabled": 12.5
},
"mapped_sites": 1,
"total_sites": 3
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/overview' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/overview', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/overview",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/overview' -Headers $headers#Detection + PSA integration settings, and the site -> PSA customer map
GET
/v1/admin/warden/network- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/network- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
network | object | |
network.enabled | boolean | |
network.hour | integer | |
network.extra_targets | string | |
probes | array of any |
Example response
JSON
{
"network": {
"enabled": true,
"hour": 1,
"extra_targets": "string"
},
"probes": []
}Errors
| Status | Message |
|---|---|
| 503 | Network scanning needs the Warden service restarted first |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/network' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/network', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/network",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/network' -Headers $headers#Update the network
PUT
/v1/admin/warden/network- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/network- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Request body JSON
| Name | Type | Description |
|---|---|---|
hour | integer | |
extra_targets | array of any | |
enabled | boolean |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 400 | Not an IPv4 address or /16–/32 network: … |
| 503 | Network scanning needs the Warden service restarted first |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/network' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"hour":1,"extra_targets":[],"enabled":true}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/network', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"hour":1,"extra_targets":[],"enabled":true}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/network",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"hour":1,"extra_targets":[],"enabled":True},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"hour":1,"extra_targets":[],"enabled":true}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/network' -Headers $headers -ContentType 'application/json' -Body $body#Get the SIEM
GET
/v1/admin/warden/siem- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
siem | object | |
siem.updated_at | string (date-time), or null | |
retention_options | array of any | |
devices | object | |
devices.windows | number | |
devices.linux | number | |
devices.collecting | number | |
devices.audit_applied | number | |
devices.audit_failed | number |
Example response
JSON
{
"siem": {
"…SIEM_DEFAULTS": "…",
"…rest": "…",
"updated_at": "2026-11-12T09:30:00.000Z"
},
"retention_options": [],
"devices": {
"windows": 12.5,
"linux": 12.5,
"collecting": 12.5,
"audit_applied": 12.5,
"audit_failed": 12.5
}
}Errors
| Status | Message |
|---|---|
| 503 | Logs & auditing needs the Warden service restarted first |
Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem' -Headers $headers#Update the SIEM
PUT
/v1/admin/warden/siem- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Request body JSON
| Name | Type | Description |
|---|---|---|
retention_days | number | |
enabled | boolean | |
process_creation | boolean | |
powershell | boolean | |
bramble_audit | boolean | |
audit_policy | boolean |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 400 | Keep events for … days |
| 503 | Logs & auditing needs the Warden service restarted first |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"retention_days":12.5,"enabled":true,"process_creation":false,"powershell":false,"bramble_audit":false,"audit_policy":false}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"retention_days":12.5,"enabled":true,"process_creation":false,"powershell":false,"bramble_audit":false,"audit_policy":false}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"retention_days":12.5,"enabled":True,"process_creation":False,"powershell":False,"bramble_audit":False,"audit_policy":False},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"retention_days":12.5,"enabled":true,"process_creation":false,"powershell":false,"bramble_audit":false,"audit_policy":false}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/siem' -Headers $headers -ContentType 'application/json' -Body $body#Get the settings
GET
/v1/admin/warden/settings- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
settings | object | |
settings.tenant_id | integer | |
site_customers | array of object | |
site_customers[].site_id | integer | |
site_customers[].psa_customer_id | integer |
Example response
JSON
{
"settings": {
"…DEFAULT_SETTINGS": "…",
"…s || {}": "…",
"tenant_id": 1
},
"site_customers": [
{
"site_id": 7,
"psa_customer_id": 7
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings' -Headers $headers#Update the settings
PUT
/v1/admin/warden/settings- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Request body JSON
| Name | Type | Description |
|---|---|---|
hide_low_priority | any | |
include_unfixed | any | |
psa_enabled | any | |
psa_queue_id | number | |
psa_default_customer_id | number | |
psa_auto_close | boolean | |
site_customers | array of any |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 400 | Unknown PSA queue |
| 400 | Unknown PSA customer |
| 400 | Choose a PSA queue to enable ticketing |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"hide_low_priority":"…","include_unfixed":"…","psa_enabled":"…","psa_queue_id":12.5,"psa_default_customer_id":12.5,"psa_auto_close":false,"site_customers":[]}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"hide_low_priority":"…","include_unfixed":"…","psa_enabled":"…","psa_queue_id":12.5,"psa_default_customer_id":12.5,"psa_auto_close":false,"site_customers":[]}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"hide_low_priority":"…","include_unfixed":"…","psa_enabled":"…","psa_queue_id":12.5,"psa_default_customer_id":12.5,"psa_auto_close":False,"site_customers":[]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"hide_low_priority":"…","include_unfixed":"…","psa_enabled":"…","psa_queue_id":12.5,"psa_default_customer_id":12.5,"psa_auto_close":false,"site_customers":[]}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/settings' -Headers $headers -ContentType 'application/json' -Body $body#RMM sites and PSA queues/customers for the settings dropdowns
GET
/v1/admin/warden/lookups- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/lookups- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
sites | array of any | |
queues | array of any | |
customers | array of any |
Example response
JSON
{
"sites": [],
"queues": [],
"customers": []
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/lookups' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/lookups', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/lookups",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/lookups' -Headers $headers#List ticket rules
GET
/v1/admin/warden/ticket-rules- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
rules | array of object | |
rules[].id | integer | |
rules[].tenant_id | integer | |
rules[].name | string | |
rules[].enabled | boolean | |
rules[].min_severity | string: "critical" | "high" | "medium" | "low" | |
rules[].kev_only | boolean | |
rules[].fixable_only | boolean | |
rules[].site_ids | array of any | |
rules[].priority | string: "low" | "medium" | "high" | "critical" | |
rules[].queue_id | integer, or null | |
rules[].created_at | string (date-time), or null |
Example response
JSON
{
"rules": [
{
"id": 42,
"tenant_id": 1,
"name": "Example name",
"enabled": true,
"min_severity": "critical",
"kev_only": false,
"fixable_only": false,
"site_ids": [],
"priority": "low",
"queue_id": 7,
"created_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules' -Headers $headers#Create a ticket rule
POST
/v1/admin/warden/ticket-rules- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
enabled | boolean | |
min_severity | string: "critical" | "high" | "medium" | "low" | |
kev_only | any | |
fixable_only | boolean | |
site_ids | array of any | |
priority | string: "low" | "medium" | "high" | "critical" | |
queue_id | number |
Response 201
| Field | Type | Description |
|---|---|---|
id | integer |
Example response
JSON
{
"id": 42
}Errors
| Status | Message |
|---|---|
| 400 | Name is required |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","fixable_only":false,"site_ids":[],"priority":"low","queue_id":12.5}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","fixable_only":false,"site_ids":[],"priority":"low","queue_id":12.5}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","enabled":True,"min_severity":"critical","kev_only":"…","fixable_only":False,"site_ids":[],"priority":"low","queue_id":12.5},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","fixable_only":false,"site_ids":[],"priority":"low","queue_id":12.5}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules' -Headers $headers -ContentType 'application/json' -Body $body#Update a ticket rule
PUT
/v1/admin/warden/ticket-rules/:id- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
enabled | boolean | |
min_severity | string: "critical" | "high" | "medium" | "low" | |
kev_only | any | |
fixable_only | boolean | |
site_ids | array of any | |
priority | string: "low" | "medium" | "high" | "critical" | |
queue_id | number |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 400 | Name is required |
| 404 | Rule not found |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","fixable_only":false,"site_ids":[],"priority":"low","queue_id":12.5}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","fixable_only":false,"site_ids":[],"priority":"low","queue_id":12.5}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","enabled":True,"min_severity":"critical","kev_only":"…","fixable_only":False,"site_ids":[],"priority":"low","queue_id":12.5},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","fixable_only":false,"site_ids":[],"priority":"low","queue_id":12.5}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42' -Headers $headers -ContentType 'application/json' -Body $body#Delete a ticket rule
DELETE
/v1/admin/warden/ticket-rules/:id- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Rule not found |
Example request
Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/ticket-rules/42' -Headers $headers#The tenant's named notification channels Warden can deliver through (set up in Admin → RMM → Notification channels)
GET
/v1/admin/warden/notify-channels- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-channels- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
channels | array of object | |
channels[].id | integer | |
channels[].channel_type | string | |
channels[].name | string | |
channels[].is_enabled | boolean | |
channels[].last_sent_at | string (date-time), or null | |
channels[].last_error | string, or null | |
channels[].last_error_at | string (date-time), or null |
Example response
JSON
{
"channels": [
{
"id": 42,
"channel_type": "string",
"name": "Example name",
"is_enabled": true,
"last_sent_at": "2026-11-12T09:30:00.000Z",
"last_error": "string",
"last_error_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-channels' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-channels', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-channels",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-channels' -Headers $headers#Warden notification rules, with each rule's last delivery
GET
/v1/admin/warden/notify-rules- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
rules | array of object | |
rules[].id | integer | |
rules[].tenant_id | integer | |
rules[].name | string | |
rules[].enabled | boolean | |
rules[].events | array of any | |
rules[].min_severity | string: "critical" | "high" | "medium" | "low" | |
rules[].kev_only | boolean | |
rules[].site_ids | array of any | |
rules[].actions | array of any | |
rules[].test_requested_at | string (date-time), or null | |
rules[].created_at | string (date-time), or null | |
rules[].updated_at | string (date-time), or null | |
rules[].last | object, or null | |
log | any |
Example response
JSON
{
"rules": [
{
"id": 42,
"tenant_id": 1,
"name": "Example name",
"enabled": true,
"events": [],
"min_severity": "critical",
"kev_only": false,
"site_ids": [],
"actions": [],
"test_requested_at": "2026-11-12T09:30:00.000Z",
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z",
"last": {}
}
],
"log": null
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules' -Headers $headers#Create a notify rule
POST
/v1/admin/warden/notify-rules- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Request body JSON
| Name | Type | Description |
|---|---|---|
events | array of any | |
actions | array of any | |
name | string | |
enabled | boolean | |
min_severity | string: "critical" | "high" | "medium" | "low" | |
kev_only | any | |
site_ids | array of any |
Response 201
| Field | Type | Description |
|---|---|---|
id | integer |
Example response
JSON
{
"id": 42
}Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"events":[],"actions":[],"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","site_ids":[]}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"events":[],"actions":[],"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","site_ids":[]}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"events":[],"actions":[],"name":"Example name","enabled":True,"min_severity":"critical","kev_only":"…","site_ids":[]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"events":[],"actions":[],"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","site_ids":[]}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules' -Headers $headers -ContentType 'application/json' -Body $body#Update a notification rule
PUT
/v1/admin/warden/notify-rules/:id- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
events | array of any | |
actions | array of any | |
name | string | |
enabled | boolean | |
min_severity | string: "critical" | "high" | "medium" | "low" | |
kev_only | any | |
site_ids | array of any |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Rule not found |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"events":[],"actions":[],"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","site_ids":[]}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"events":[],"actions":[],"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","site_ids":[]}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"events":[],"actions":[],"name":"Example name","enabled":True,"min_severity":"critical","kev_only":"…","site_ids":[]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"events":[],"actions":[],"name":"Example name","enabled":true,"min_severity":"critical","kev_only":"…","site_ids":[]}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42' -Headers $headers -ContentType 'application/json' -Body $body#Delete a notify rule
DELETE
/v1/admin/warden/notify-rules/:id- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Rule not found |
Example request
Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42' -Headers $headers#Queue a test message for a rule (Warden sends it within ~15s; poll notify-rules for the result)
POST
/v1/admin/warden/notify-rules/:id/test- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/:id/test- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 202
| Field | Type | Description |
|---|---|---|
message | string |
Example response
JSON
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | Rule not found |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42/test' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42/test', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42/test",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/notify-rules/42/test' -Headers $headers#List connectors
GET
/v1/admin/warden/connectors- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Response 200
| Field | Type | Description |
|---|---|---|
connectors | array of object | |
connectors[].enabled | boolean | |
connectors[].pinned | boolean | |
connectors[].devices | number | |
connectors[].updatable | number | |
pollers | array of any |
Example response
JSON
{
"connectors": [
{
"…r": "…",
"enabled": true,
"pinned": false,
"devices": 12.5,
"updatable": 12.5
}
],
"pollers": []
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors' -Headers $headers#Create a connector
POST
/v1/admin/warden/connectors- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
url | string | |
api_key | string | |
poll_minutes | integer | |
probe_device_id | integer | |
enabled | boolean |
Response 201
| Field | Type | Description |
|---|---|---|
id | integer |
Example response
JSON
{
"id": 42
}Errors
| Status | Message |
|---|---|
| 400 | Choose a Linux RMM device on the same network as the controller to poll it |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":true}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":true}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":True},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":true}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors' -Headers $headers -ContentType 'application/json' -Body $body#Update a connector
PUT
/v1/admin/warden/connectors/:id- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
url | string | |
api_key | string | |
poll_minutes | integer | |
probe_device_id | integer | |
enabled | boolean |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
JSON
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 400 | Choose a Linux RMM device on the same network as the controller to poll it |
| 404 | Integration not found |
Example request
Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":true}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42', {
method: 'PUT',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":true}),
});
const data = await res.json();Python
import os, requests
r = requests.put(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":True},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","url":"https://example.com/…","api_key":"…","poll_minutes":1,"probe_device_id":7,"enabled":true}'
Invoke-RestMethod -Method PUT -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42' -Headers $headers -ContentType 'application/json' -Body $body#After a controller is replaced or gets a new certificate
POST
/v1/admin/warden/connectors/:id/reset-pin- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/:id/reset-pin- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
JSON
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 404 | Integration not found |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42/reset-pin' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42/reset-pin', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42/reset-pin",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42/reset-pin' -Headers $headers#Delete a connector
DELETE
/v1/admin/warden/connectors/:id- Address
https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Warden.
Permission (any of):secure.admin.manage.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
JSON
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 404 | Integration not found |
Example request
Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/admin/warden/connectors/42' -Headers $headersWas this page helpful?
Thanks for your feedback.