Organisations

Organisations with their overview, activity, contacts, locations, RMM link, and lists of their assets, passwords, documents, domains and diagrams.

MethodPathSummary
GET/api/orgsList organisations
POST/api/orgsCreate an organisation
GET/api/orgs/:idGet an organisation
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
DELETE/api/orgs/:id/logoRemove an organisation's logo
PUT/api/orgs/:idUpdate an organisation
GET/api/orgs/:id/overviewThe organisation's one-page summary: open tickets, devices, what's running out, what changed, pinned documents
GET/api/orgs/:id/activityAn organisation's recent activity
GET/api/orgs/:id/contactsAn organisation's contacts
POST/api/orgs/:id/contactsAdd a contact
GET/api/orgs/:id/locationsAn organisation's locations
POST/api/orgs/:id/locationsAdd a location
GET/api/orgs/:id/rmmThe organisation's RMM sites and devices
POST/api/orgs/:id/rmm/link-siteLink an RMM site to the organisation
POST/api/orgs/:id/rmm/unlink-siteUnlink an RMM site
POST/api/orgs/:id/rmm/importImport RMM devices as configurations
GET/api/orgs/:id/assetsAn organisation's assets
POST/api/orgs/:id/assetsAdd an asset
GET/api/orgs/:id/passwordsAn organisation's passwords
POST/api/orgs/:id/passwordsAdd a password to an organisation
GET/api/orgs/:id/documentsAn organisation's documents
POST/api/orgs/:id/documentsAdd a document to an organisation
GET/api/orgs/:id/domainsAn organisation's domains
POST/api/orgs/:id/domainsAdd a domain
GET/api/orgs/:id/diagramsAn organisation's diagrams
POST/api/orgs/:id/diagramsCreate a diagram
GET/api/orgs/:id/diagram-sourcesEverything the editor's side panels and live overlay need
GET/api/orgs/:id/diagram-statusLive state of the assets on a diagram (polled by the editor)
POST/api/orgs/:id/diagrams/generateDraw 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_id cookies from Bramble sign-in).
Licence: Atlas.

Response 200

FieldTypeDescription
orgsarray of object
orgs[].idinteger
orgs[].namestring
orgs[].short_namestring, or null
orgs[].domainstring, or null
orgs[].websitestring, or null
orgs[].phonestring, or null
orgs[].statusstring
orgs[].org_typestring, or null
orgs[].alert_notestring, or null
orgs[].account_manager_idinteger, or null
orgs[].logo_file_idinteger, or null
orgs[].updated_atstring (date-time), or null
orgs[].contactsboolean
orgs[].open_ticketsboolean
orgs[].assetsinteger
orgs[].passwordsinteger
orgs[].documentsinteger
orgs[].expiringinteger
orgs[].devicesnumber
orgs[].devices_onlinenumber
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/orgs

Creates 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_id cookies from Bramble sign-in).
Licence: Atlas.

Request body JSON

NameTypeDescription
namestring
short_namestring
domainstring
websitestring
phonestring
addressstring
notesstring
alert_notestring
statusstring
org_typestring
account_manager_idinteger
primary_contact_idinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
organy
countsobject
counts.contactsinteger
counts.typesarray 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();

#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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
ticketsarray of any
ticket_statsobject
ticket_stats.opennumber
ticket_stats.closed_30dnumber
ticket_stats.new_30dnumber
devicesarray of object
devices[].idinteger
devices[].namestring
devices[].onlineany
devices[].os_typestring
devices[].device_typestring
devices[].last_seenany
devices[].assetany
expiringany
recentany
pinnedany
locationobject, or null
location.idinteger, or null
location.tenant_idinteger
location.customer_idinteger
location.namestring
location.address1string, or null
location.address2string, or null
location.citystring, or null
location.regionstring, or null
location.postcodestring, or null
location.countrystring, or null
location.phonestring, or null
location.is_primaryboolean
location.notesstring, or null
location.created_atstring (date-time), or null
location.updated_atstring (date-time), or null
location.archived_atstring (date-time), or null
primary_contactany
importantany
managerany
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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Query parameters

NameTypeDescription
beforeinteger

Response 200

FieldTypeDescription
activityarray of object
activity[].idinteger
activity[].actor_nameany
activity[].actionstring
activity[].kindstring
activity[].ref_idany
activity[].detailstring, or null
activity[].created_atstring (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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
first_namestring
last_namestring
emailstring
phonestring
mobilestring
job_titlestring
contact_typestring
location_idinteger
is_importantboolean
notesstring
primaryany

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
locationsarray of object
locations[].idinteger, or null
locations[].tenant_idinteger
locations[].customer_idinteger
locations[].namestring
locations[].address1string, or null
locations[].address2string, or null
locations[].citystring, or null
locations[].regionstring, or null
locations[].postcodestring, or null
locations[].countrystring, or null
locations[].phonestring, or null
locations[].is_primaryboolean
locations[].notesstring, or null
locations[].created_atstring (date-time), or null
locations[].updated_atstring (date-time), or null
locations[].archived_atstring (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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namestring
address1string
address2string
citystring
regionstring
postcodestring
countrystring
phonestring
is_primaryboolean
notesstring

Response 200

FieldTypeDescription
locationobject
location.idinteger, or null
location.tenant_idinteger
location.customer_idinteger
location.namestring
location.address1string, or null
location.address2string, or null
location.citystring, or null
location.regionstring, or null
location.postcodestring, or null
location.countrystring, or null
location.phonestring, or null
location.is_primaryboolean
location.notesstring, or null
location.created_atstring (date-time), or null
location.updated_atstring (date-time), or null
location.archived_atstring (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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
sitesarray of any
devicesarray of any
available_sitesarray 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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
site_idintegerThe RMM site.

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
site_idinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
device_idsarray of anyThe devices to import.

Response 200

FieldTypeDescription
importedinteger
idsarray 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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Query parameters

NameTypeDescription
typeintegerOnly this asset type.
categorystring: "configuration" | "flexible"Only this category.

Response 200

FieldTypeDescription
assetsarray of object
assets[].location_namestring
assets[].dataobject
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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namestring
statusstring
location_idinteger
contact_idinteger
notesarray of any
hostnamestring
ipstring
macstring
serialstring
manufacturerstring
modelstring
osstring
purchased_onstring (date)
warranty_expiresstring (date)
type_idinteger
dataany

Response 200

FieldTypeDescription
assetobject
asset.idinteger
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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
domainsarray of object
domains[].idinteger, or null
domains[].tenant_idinteger
domains[].customer_idinteger
domains[].namestring
domains[].registrarstring, or null
domains[].dns_hoststring, or null
domains[].expires_onstring (date), or null
domains[].auto_checkboolean
domains[].check_sslboolean
domains[].ssl_hoststring, or null
domains[].ssl_expires_atstring (date-time), or null
domains[].ssl_issuerstring, or null
domains[].ssl_subjectstring, or null
domains[].nameserversstring, or null
domains[].last_checked_atstring (date-time), or null
domains[].last_errorstring, or null
domains[].notesstring, or null
domains[].created_atstring (date-time), or null
domains[].updated_atstring (date-time), or null
domains[].archived_atstring (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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
kindstringnetwork or rack.
namestringThe diagram's name.
dataanyThe diagram itself (editor JSON).
descriptionstring
location_idinteger
thumbany

Response 200

FieldTypeDescription
diagramobject
diagram.idinteger
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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
assetsarray of any
lansarray of any
internetany
locationsarray of any
unifiarray of object
unifi[].connector_idinteger
unifi[].updated_atstring (date-time)
unifi[].sitesarray of any
discoveredany
rmm_sitesarray 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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
atstring
assetsarray 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_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
clientsbooleanInclude client devices from UniFi.
discoveredbooleanInclude devices found by RMM network discovery.
guessbooleanGuess links where the data doesn't say.

Response 200

FieldTypeDescription
sourcesobject
sources.assetsinteger
sources.unifiinteger
sources.discoveredinteger
sources.internetinteger
sources.lansarray 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();