Files

Attachments on any record, stored encrypted in Bramble.

MethodPathSummary
GET/api/filesFiles on a record
POST/api/filesAttach a file
GET/api/files/:idDownload a file
DELETE/api/files/:idDelete a file

#Files on a record

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

Query parameters

NameTypeDescription
kindstringThe record's kind.
idintegerIts id.

Response 200

FieldTypeDescription
filesarray of object
files[].idinteger, or null
files[].filenamestring
files[].mimestring
files[].sizeinteger
files[].uploaded_namestring, or null
files[].created_atstring (date-time), or null
Example response
JSON
{
  "files": [
    {
      "id": 42,
      "filename": "Example filename",
      "mime": "string",
      "size": 1,
      "uploaded_name": "Example uploaded name",
      "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/files', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Attach a file

POST/api/files

The request body is the file's bytes; kind, id and name are in the query string.

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

Query parameters

NameTypeDescription
kindstring
idnumber
namestring

Response 200

FieldTypeDescription
fileobject
file.idinteger
file.filenamestring
file.mimeany
file.sizeinteger
file.urlstring
Example response
JSON
{
  "file": {
    "id": 42,
    "filename": "Example filename",
    "mime": null,
    "size": 1,
    "url": "https://example.com/…"
  }
}

Errors

StatusMessage
411The upload has no size
413Images can be up to 25 MB
413Files can be up to …

Example request

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

#Download a file

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

Path parameters

NameTypeDescription
idrequiredinteger

Query parameters

NameTypeDescription
downloadstring

Errors

StatusMessage
404File not found

Example request

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

#Delete a file

DELETE/api/files/:id
Address
https://<your-org>.brambleit.cloud/atlas/api/files/: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
}

Errors

StatusMessage
404File not found

Example request

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