Organisations
Organisations with their overview, activity, contacts, locations, RMM link, and lists of their assets, passwords, documents, domains and diagrams.
| Method | Path | Summary |
|---|---|---|
| GET | /api/orgs | List organisations |
| POST | /api/orgs | Create an organisation |
| GET | /api/orgs/:id | Get an organisation |
| POST | /api/orgs/:id/logo | The organisation's logo: a PNG/JPEG/WebP (the page scales it to 256 px first), kept as an Atlas file in Blob |
| DELETE | /api/orgs/:id/logo | Remove an organisation's logo |
| PUT | /api/orgs/:id | Update an organisation |
| GET | /api/orgs/:id/overview | The organisation's one-page summary: open tickets, devices, what's running out, what changed, pinned documents |
| GET | /api/orgs/:id/activity | An organisation's recent activity |
| GET | /api/orgs/:id/contacts | An organisation's contacts |
| POST | /api/orgs/:id/contacts | Add a contact |
| GET | /api/orgs/:id/locations | An organisation's locations |
| POST | /api/orgs/:id/locations | Add a location |
| GET | /api/orgs/:id/rmm | The organisation's RMM sites and devices |
| POST | /api/orgs/:id/rmm/link-site | Link an RMM site to the organisation |
| POST | /api/orgs/:id/rmm/unlink-site | Unlink an RMM site |
| POST | /api/orgs/:id/rmm/import | Import RMM devices as configurations |
| GET | /api/orgs/:id/assets | An organisation's assets |
| POST | /api/orgs/:id/assets | Add an asset |
| GET | /api/orgs/:id/passwords | An organisation's passwords |
| POST | /api/orgs/:id/passwords | Add a password to an organisation |
| GET | /api/orgs/:id/documents | An organisation's documents |
| POST | /api/orgs/:id/documents | Add a document to an organisation |
| GET | /api/orgs/:id/domains | An organisation's domains |
| POST | /api/orgs/:id/domains | Add a domain |
| GET | /api/orgs/:id/diagrams | An organisation's diagrams |
| POST | /api/orgs/:id/diagrams | Create a diagram |
| GET | /api/orgs/:id/diagram-sources | Everything the editor's side panels and live overlay need |
| GET | /api/orgs/:id/diagram-status | Live state of the assets on a diagram (polled by the editor) |
| POST | /api/orgs/:id/diagrams/generate | Draw a diagram from network data |
#List organisations
GET
/api/orgs- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Response 200
| Field | Type | Description |
|---|---|---|
orgs | array of object | |
orgs[].id | integer | |
orgs[].name | string | |
orgs[].short_name | string, or null | |
orgs[].domain | string, or null | |
orgs[].website | string, or null | |
orgs[].phone | string, or null | |
orgs[].status | string | |
orgs[].org_type | string, or null | |
orgs[].alert_note | string, or null | |
orgs[].account_manager_id | integer, or null | |
orgs[].logo_file_id | integer, or null | |
orgs[].updated_at | string (date-time), or null | |
orgs[].contacts | boolean | |
orgs[].open_tickets | boolean | |
orgs[].assets | integer | |
orgs[].passwords | integer | |
orgs[].documents | integer | |
orgs[].expiring | integer | |
orgs[].devices | number | |
orgs[].devices_online | number |
Example response
JSON
{
"orgs": [
{
"id": 42,
"name": "Example name",
"short_name": "Example short name",
"domain": "string",
"website": "string",
"phone": "string",
"status": "active",
"org_type": "string",
"alert_note": "string",
"account_manager_id": 7,
"logo_file_id": 7,
"updated_at": "2026-11-12T09:30:00.000Z",
"contacts": false,
"open_tickets": false,
"assets": 1,
"passwords": 1,
"documents": 1,
"expiring": 1,
"devices": 12.5,
"devices_online": 12.5
}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Create an organisation
POST
/api/orgsCreates the customer (it also appears in PSA).
- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
short_name | string | |
domain | string | |
website | string | |
phone | string | |
address | string | |
notes | string | |
alert_note | string | |
status | string | |
org_type | string | |
account_manager_id | integer | |
primary_contact_id | integer |
Response 200
| Field | Type | Description |
|---|---|---|
org | any |
Example response
JSON
{
"org": null
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","short_name":"Example short name","domain":"string","website":"string","phone":"string","address":"string","notes":"string","alert_note":"string","status":"active","org_type":"string","account_manager_id":7,"primary_contact_id":7}),
});
const data = await res.json();#Get an organisation
GET
/api/orgs/:id- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
org | any | |
counts | object | |
counts.contacts | integer | |
counts.types | array of any |
Example response
JSON
{
"org": null,
"counts": {
"contacts": 1,
"types": []
}
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#The organisation's logo: a PNG/JPEG/WebP (the page scales it to 256 px first), kept as an Atlas file in Blob
POST
/api/orgs/:id/logoThe organisation's logo: a PNG/JPEG/WebP (the page scales it to 256 px first), kept as an Atlas file in Blob. Replacing or removing it deletes the old one.
- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/logo- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
logo_file_id | integer |
Example response
JSON
{
"logo_file_id": 7
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/logo', {
method: 'POST',
credentials: 'include',
});
const data = await res.json();#Remove an organisation's logo
DELETE
/api/orgs/:id/logo- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/logo- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
JSON
{
"ok": true
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/logo', {
method: 'DELETE',
credentials: 'include',
});
const data = await res.json();#Update an organisation
PUT
/api/orgs/:id- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
org | any |
Example response
JSON
{
"org": null
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42', {
method: 'PUT',
credentials: 'include',
});
const data = await res.json();#The organisation's one-page summary: open tickets, devices, what's running out, what changed, pinned documents
GET
/api/orgs/:id/overview- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/overview- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
tickets | array of any | |
ticket_stats | object | |
ticket_stats.open | number | |
ticket_stats.closed_30d | number | |
ticket_stats.new_30d | number | |
devices | array of object | |
devices[].id | integer | |
devices[].name | string | |
devices[].online | any | |
devices[].os_type | string | |
devices[].device_type | string | |
devices[].last_seen | any | |
devices[].asset | any | |
expiring | any | |
recent | any | |
pinned | any | |
location | object, or null | |
location.id | integer, or null | |
location.tenant_id | integer | |
location.customer_id | integer | |
location.name | string | |
location.address1 | string, or null | |
location.address2 | string, or null | |
location.city | string, or null | |
location.region | string, or null | |
location.postcode | string, or null | |
location.country | string, or null | |
location.phone | string, or null | |
location.is_primary | boolean | |
location.notes | string, or null | |
location.created_at | string (date-time), or null | |
location.updated_at | string (date-time), or null | |
location.archived_at | string (date-time), or null | |
primary_contact | any | |
important | any | |
manager | any |
Example response
JSON
{
"tickets": [],
"ticket_stats": {
"open": 12.5,
"closed_30d": 12.5,
"new_30d": 12.5
},
"devices": [
{
"id": 42,
"name": "Example name",
"online": null,
"os_type": "string",
"device_type": "string",
"last_seen": null,
"asset": null
}
],
"expiring": null,
"recent": null,
"pinned": null,
"location": {
"id": 42,
"tenant_id": 1,
"customer_id": 7,
"name": "Example name",
"address1": "string",
"address2": "string",
"city": "string",
"region": "string",
"postcode": "string",
"country": "string",
"phone": "string",
"is_primary": true,
"notes": "string",
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z",
"archived_at": "2026-11-12T09:30:00.000Z"
},
"primary_contact": null,
"important": null,
"manager": null
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/overview', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#An organisation's recent activity
GET
/api/orgs/:id/activity- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/activity- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Query parameters
| Name | Type | Description |
|---|---|---|
before | integer |
Response 200
| Field | Type | Description |
|---|---|---|
activity | array of object | |
activity[].id | integer | |
activity[].actor_name | any | |
activity[].action | string | |
activity[].kind | string | |
activity[].ref_id | any | |
activity[].detail | string, or null | |
activity[].created_at | string (date-time) |
Example response
JSON
{
"activity": [
{
"id": 42,
"actor_name": null,
"action": "string",
"kind": "string",
"ref_id": null,
"detail": "string",
"created_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/activity', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#An organisation's contacts
GET
/api/orgs/:id/contacts- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/contacts- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
contacts | array of object |
Example response
JSON
{
"contacts": [
{}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/contacts', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Add a contact
POST
/api/orgs/:id/contacts- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/contacts- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
first_name | string | |
last_name | string | |
email | string | |
phone | string | |
mobile | string | |
job_title | string | |
contact_type | string | |
location_id | integer | |
is_important | boolean | |
notes | string | |
primary | any |
Response 200
| Field | Type | Description |
|---|---|---|
contact | object |
Example response
JSON
{
"contact": {}
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/contacts', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"first_name":"Alex","last_name":"Morgan","email":"alex@example.com","phone":"string","mobile":"string","job_title":"Example job title","contact_type":"string","location_id":7,"is_important":true,"notes":"string","primary":"…"}),
});
const data = await res.json();#An organisation's locations
GET
/api/orgs/:id/locations- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/locations- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
locations | array of object | |
locations[].id | integer, or null | |
locations[].tenant_id | integer | |
locations[].customer_id | integer | |
locations[].name | string | |
locations[].address1 | string, or null | |
locations[].address2 | string, or null | |
locations[].city | string, or null | |
locations[].region | string, or null | |
locations[].postcode | string, or null | |
locations[].country | string, or null | |
locations[].phone | string, or null | |
locations[].is_primary | boolean | |
locations[].notes | string, or null | |
locations[].created_at | string (date-time), or null | |
locations[].updated_at | string (date-time), or null | |
locations[].archived_at | string (date-time), or null |
Example response
JSON
{
"locations": [
{
"id": 42,
"tenant_id": 1,
"customer_id": 7,
"name": "Example name",
"address1": "string",
"address2": "string",
"city": "string",
"region": "string",
"postcode": "string",
"country": "string",
"phone": "string",
"is_primary": true,
"notes": "string",
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z",
"archived_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/locations', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Add a location
POST
/api/orgs/:id/locations- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/locations- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
address1 | string | |
address2 | string | |
city | string | |
region | string | |
postcode | string | |
country | string | |
phone | string | |
is_primary | boolean | |
notes | string |
Response 200
| Field | Type | Description |
|---|---|---|
location | object | |
location.id | integer, or null | |
location.tenant_id | integer | |
location.customer_id | integer | |
location.name | string | |
location.address1 | string, or null | |
location.address2 | string, or null | |
location.city | string, or null | |
location.region | string, or null | |
location.postcode | string, or null | |
location.country | string, or null | |
location.phone | string, or null | |
location.is_primary | boolean | |
location.notes | string, or null | |
location.created_at | string (date-time), or null | |
location.updated_at | string (date-time), or null | |
location.archived_at | string (date-time), or null |
Example response
JSON
{
"location": {
"id": 42,
"tenant_id": 1,
"customer_id": 7,
"name": "Example name",
"address1": "string",
"address2": "string",
"city": "string",
"region": "string",
"postcode": "string",
"country": "string",
"phone": "string",
"is_primary": true,
"notes": "string",
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z",
"archived_at": "2026-11-12T09:30:00.000Z"
}
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/locations', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","address1":"string","address2":"string","city":"string","region":"string","postcode":"string","country":"string","phone":"string","is_primary":true,"notes":"string"}),
});
const data = await res.json();#The organisation's RMM sites and devices
GET
/api/orgs/:id/rmm- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/rmm- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
sites | array of any | |
devices | array of any | |
available_sites | array of any |
Example response
JSON
{
"sites": [],
"devices": [],
"available_sites": []
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/rmm', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Link an RMM site to the organisation
POST
/api/orgs/:id/rmm/link-site- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/rmm/link-site- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
site_id | integer | The RMM site. |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
JSON
{
"ok": true
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/rmm/link-site', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"site_id":7}),
});
const data = await res.json();#Unlink an RMM site
POST
/api/orgs/:id/rmm/unlink-site- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/rmm/unlink-site- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
site_id | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
JSON
{
"ok": true
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/rmm/unlink-site', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"site_id":7}),
});
const data = await res.json();#Import RMM devices as configurations
POST
/api/orgs/:id/rmm/import- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/rmm/import- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
device_ids | array of any | The devices to import. |
Response 200
| Field | Type | Description |
|---|---|---|
imported | integer | |
ids | array of any |
Example response
JSON
{
"imported": 1,
"ids": []
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/rmm/import', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"device_ids":[]}),
});
const data = await res.json();#An organisation's assets
GET
/api/orgs/:id/assets- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/assets- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Query parameters
| Name | Type | Description |
|---|---|---|
type | integer | Only this asset type. |
category | string: "configuration" | "flexible" | Only this category. |
Response 200
| Field | Type | Description |
|---|---|---|
assets | array of object | |
assets[].location_name | string | |
assets[].data | object |
Example response
JSON
{
"assets": [
{
"location_name": "Example location name",
"data": {}
}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/assets', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Add an asset
POST
/api/orgs/:id/assets- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/assets- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
status | string | |
location_id | integer | |
contact_id | integer | |
notes | array of any | |
hostname | string | |
ip | string | |
mac | string | |
serial | string | |
manufacturer | string | |
model | string | |
os | string | |
purchased_on | string (date) | |
warranty_expires | string (date) | |
type_id | integer | |
data | any |
Response 200
| Field | Type | Description |
|---|---|---|
asset | object | |
asset.id | integer |
Example response
JSON
{
"asset": {
"id": 42
}
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/assets', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","status":"active","location_id":7,"contact_id":7,"notes":[],"hostname":"office-pc-01","ip":"192.0.2.10","mac":"string","serial":"string","manufacturer":"string","model":"string","os":"string","purchased_on":"2026-11-12","warranty_expires":"2026-11-12","type_id":7,"data":"…"}),
});
const data = await res.json();#An organisation's passwords
GET
/api/orgs/:id/passwords- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/passwords- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
passwords | array of object |
Example response
JSON
{
"passwords": [
{}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/passwords', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Add a password to an organisation
POST
/api/orgs/:id/passwords- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/passwords- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/passwords', {
method: 'POST',
credentials: 'include',
});
const data = await res.json();#An organisation's documents
GET
/api/orgs/:id/documents- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/documents- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
documents | array of any |
Example response
JSON
{
"documents": []
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/documents', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Add a document to an organisation
POST
/api/orgs/:id/documents- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/documents- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/documents', {
method: 'POST',
credentials: 'include',
});
const data = await res.json();#An organisation's domains
GET
/api/orgs/:id/domains- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/domains- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
domains | array of object | |
domains[].id | integer, or null | |
domains[].tenant_id | integer | |
domains[].customer_id | integer | |
domains[].name | string | |
domains[].registrar | string, or null | |
domains[].dns_host | string, or null | |
domains[].expires_on | string (date), or null | |
domains[].auto_check | boolean | |
domains[].check_ssl | boolean | |
domains[].ssl_host | string, or null | |
domains[].ssl_expires_at | string (date-time), or null | |
domains[].ssl_issuer | string, or null | |
domains[].ssl_subject | string, or null | |
domains[].nameservers | string, or null | |
domains[].last_checked_at | string (date-time), or null | |
domains[].last_error | string, or null | |
domains[].notes | string, or null | |
domains[].created_at | string (date-time), or null | |
domains[].updated_at | string (date-time), or null | |
domains[].archived_at | string (date-time), or null |
Example response
JSON
{
"domains": [
{
"id": 42,
"tenant_id": 1,
"customer_id": 7,
"name": "Example name",
"registrar": "string",
"dns_host": "string",
"expires_on": "2026-11-12",
"auto_check": false,
"check_ssl": false,
"ssl_host": "string",
"ssl_expires_at": "2026-11-12T09:30:00.000Z",
"ssl_issuer": "string",
"ssl_subject": "Example ssl subject",
"nameservers": "Example nameservers",
"last_checked_at": "2026-11-12T09:30:00.000Z",
"last_error": "string",
"notes": "string",
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z",
"archived_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/domains', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Add a domain
POST
/api/orgs/:id/domains- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/domains- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
domain | string |
Example response
JSON
{
"domain": "string"
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/domains', {
method: 'POST',
credentials: 'include',
});
const data = await res.json();#An organisation's diagrams
GET
/api/orgs/:id/diagrams- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/diagrams- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
diagrams | array of object |
Example response
JSON
{
"diagrams": [
{}
]
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/diagrams', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Create a diagram
POST
/api/orgs/:id/diagrams- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/diagrams- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
kind | string | network or rack. |
name | string | The diagram's name. |
data | any | The diagram itself (editor JSON). |
description | string | |
location_id | integer | |
thumb | any |
Response 200
| Field | Type | Description |
|---|---|---|
diagram | object | |
diagram.id | integer |
Example response
JSON
{
"diagram": {
"id": 42
}
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/diagrams', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"kind":"string","name":"Example name","data":"…","description":"string","location_id":7,"thumb":"…"}),
});
const data = await res.json();#Everything the editor's side panels and live overlay need
GET
/api/orgs/:id/diagram-sources- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/diagram-sources- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
assets | array of any | |
lans | array of any | |
internet | any | |
locations | array of any | |
unifi | array of object | |
unifi[].connector_id | integer | |
unifi[].updated_at | string (date-time) | |
unifi[].sites | array of any | |
discovered | any | |
rmm_sites | array of any |
Example response
JSON
{
"assets": [],
"lans": [],
"internet": null,
"locations": [],
"unifi": [
{
"connector_id": 7,
"updated_at": "2026-11-12T09:30:00.000Z",
"sites": []
}
],
"discovered": null,
"rmm_sites": []
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/diagram-sources', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Live state of the assets on a diagram (polled by the editor)
GET
/api/orgs/:id/diagram-status- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/diagram-status- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
at | string | |
assets | array of any |
Example response
JSON
{
"at": "string",
"assets": []
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/diagram-status', {
method: 'GET',
credentials: 'include',
});
const data = await res.json();#Draw a diagram from network data
POST
/api/orgs/:id/diagrams/generate- Address
https://<your-org>.brambleit.cloud/atlas/api/orgs/:id/diagrams/generate- Requires
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in).
Licence: Atlas.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
clients | boolean | Include client devices from UniFi. |
discovered | boolean | Include devices found by RMM network discovery. |
guess | boolean | Guess links where the data doesn't say. |
Response 200
| Field | Type | Description |
|---|---|---|
sources | object | |
sources.assets | integer | |
sources.unifi | integer | |
sources.discovered | integer | |
sources.internet | integer | |
sources.lans | array of any |
Example response
JSON
{
"…g": "…",
"sources": {
"assets": 1,
"unifi": 1,
"discovered": 1,
"internet": 1,
"lans": []
}
}Example request
JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/orgs/42/diagrams/generate', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({"clients":false,"discovered":false,"guess":false}),
});
const data = await res.json();Was this page helpful?
Thanks for your feedback.