Diagrams

Network diagrams and rack layouts with versions. "Generate" draws a starting diagram from Atlas assets, RMM network discovery and UniFi topology.

MethodPathSummary
GET/api/diagrams/:idGet a diagram
PUT/api/diagrams/:idSave a diagram
DELETE/api/diagrams/:idArchive a diagram
POST/api/diagrams/:id/duplicateCopy a diagram
GET/api/diagrams/:id/versionsA diagram's versions
GET/api/diagrams/:id/versions/:vidGet a diagram version
POST/api/diagrams/:id/versions/:vid/restoreRestore a diagram version

#Get a diagram

GET/api/diagrams/:id
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/: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
diagramany
Example response
JSON
{
  "diagram": null
}

Example request

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

#Save a diagram

PUT/api/diagrams/:id
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/:id
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
base_versionnumberThe version you started from. If it has changed, you get 409.
namestring
descriptionstring
location_idinteger
pinnedboolean
thumbany
dataany
checkpointanyKeep this save as a named version.

Response 200

FieldTypeDescription
okboolean
versionany
Example response
JSON
{
  "ok": true,
  "version": null
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/diagrams/42', {
  method: 'PUT',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"base_version":12.5,"name":"Example name","description":"string","location_id":7,"pinned":false,"thumb":"…","data":"…","checkpoint":"…"}),
});
const data = await res.json();

#Archive a diagram

DELETE/api/diagrams/:id
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/: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
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/diagrams/42', {
  method: 'DELETE',
  credentials: 'include',
});
const data = await res.json();

#Copy a diagram

POST/api/diagrams/:id/duplicate
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/:id/duplicate
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

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/diagrams/42/duplicate', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"name":"Example name"}),
});
const data = await res.json();

#A diagram's versions

GET/api/diagrams/:id/versions
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/:id/versions
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
versionsarray of object
versions[].idinteger, or null
versions[].versioninteger
versions[].namestring
versions[].saved_namestring, or null
versions[].saved_atstring (date-time), or null
Example response
JSON
{
  "versions": [
    {
      "id": 42,
      "version": 1,
      "name": "Example name",
      "saved_name": "Example saved name",
      "saved_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/diagrams/42/versions', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Get a diagram version

GET/api/diagrams/:id/versions/:vid
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/:id/versions/:vid
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger
vidrequiredinteger

Response 200

FieldTypeDescription
versionobject
version.idinteger, or null
version.diagram_idinteger
version.versioninteger
version.namestring
version.datastring
version.saved_byinteger, or null
version.saved_namestring, or null
version.saved_atstring (date-time), or null
Example response
JSON
{
  "version": {
    "id": 42,
    "diagram_id": 7,
    "version": 1,
    "name": "Example name",
    "data": "string",
    "saved_by": 1,
    "saved_name": "Example saved name",
    "saved_at": "2026-11-12T09:30:00.000Z"
  }
}

Errors

StatusMessage
404Version not found

Example request

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

#Restore a diagram version

POST/api/diagrams/:id/versions/:vid/restore
Address
https://<your-org>.brambleit.cloud/atlas/api/diagrams/:id/versions/:vid/restore
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Atlas.

Path parameters

NameTypeDescription
idrequiredinteger
vidrequiredinteger

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Errors

StatusMessage
404Version not found

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/atlas/api/diagrams/42/versions/1/restore', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();