Legacy v1 (BRM-API)

The original Sites endpoints in BRM-API, before Sites v2. Use /sites/api/v2.

MethodPathSummary
GET/v1/app/sitesList sites the caller is a member of
POST/v1/app/sitesCreate a site. Creator is automatically added as a drive_site_members row with role owner
DELETE/v1/app/sites/:idSoft-delete a site. Requires owner role on the site (drive_site_members)
GET/v1/app/sites/:id/quotaGet a site's storage usage against the tenant's shared site-storage pool
GET/v1/app/sites/:id/itemsList items in a site folder
GET/v1/app/sites/:id/item/:itemId/pathGet the breadcrumb path to an item within a site
POST/v1/app/sites/:id/folderCreate a folder within a site
PATCH/v1/app/sites/:id/item/:itemIdRename an item within a site
POST/v1/app/sites/:id/item/:itemId/moveMove an item into a different folder within a site
DELETE/v1/app/sites/:id/item/:itemIdSoft-delete an item within a site
GET/v1/app/sites/:id/trashList trashed items within a site
POST/v1/app/sites/:id/trash/restore/:itemIdRestore an item out of trash within a site
GET/v1/app/sites/:id/membersList a site's members
POST/v1/app/sites/:id/membersAdd or update a site member
DELETE/v1/app/sites/:id/member/:targetUserIdRemove a member from a site
GET/v1/app/sites/:id/searchSearch a site's items by name

#List sites the caller is a member of

GET/v1/app/sites

List sites the caller is a member of. Includes the caller's role on each site, current usage, and member count.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Response 200

FieldTypeDescription
sitesarray of object
sites[].idinteger
sites[].namestring
sites[].descriptionstring, or null
sites[].created_atstring (date-time), or null
sites[].rolestring: "owner" | "editor" | "viewer"
sites[].used_bytesany
sites[].member_countboolean
Example response
JSON
{
  "sites": [
    {
      "id": 42,
      "name": "Example name",
      "description": "string",
      "created_at": "2026-11-12T09:30:00.000Z",
      "role": "owner",
      "used_bytes": null,
      "member_count": false
    }
  ]
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/sites' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create a site. Creator is automatically added as a drive_site_members row with role owner

POST/v1/app/sites
Address
https://<your-org>.brambleit.cloud/api/v1/app/sites
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Request body JSON

NameTypeDescription
namestring
descriptionstring

Response 201

FieldTypeDescription
idinteger
namestring
Example response
JSON
{
  "id": 42,
  "name": "Example name"
}

Errors

StatusMessage
400Name required

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/sites' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","description":"string"}'

#Soft-delete a site. Requires owner role on the site (drive_site_members)

DELETE/v1/app/sites/:id
Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

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

Errors

StatusMessage
403Not authorised

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Get a site's storage usage against the tenant's shared site-storage pool

GET/v1/app/sites/:id/quota

Get a site's storage usage against the tenant's shared site-storage pool. Requires any membership (viewer or above) on the site. Sites don't have their own per-site quota — they draw from a tenant-wide shared pool sized from drive_licenses' shared_bytes.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/quota
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
site_used_bytesnumber
pool_bytesinteger
pool_used_bytesinteger
Example response
JSON
{
  "site_used_bytes": 12.5,
  "pool_bytes": 1,
  "pool_used_bytes": 1
}

Errors

StatusMessage
403Not a member

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/quota' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List items in a site folder

GET/v1/app/sites/:id/items

List items in a site folder. Requires any membership on the site.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/items
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Query parameters

NameTypeDescription
parent_idinteger

Response 200

FieldTypeDescription
itemsarray of object
items[].idinteger
items[].parent_idinteger, or null
items[].typestring: "file" | "folder"
items[].namestring
items[].mime_typestring, or null
items[].size_bytesinteger
items[].created_byinteger
items[].created_atstring (date-time)
items[].updated_atstring (date-time)
Example response
JSON
{
  "items": [
    {
      "id": 42,
      "parent_id": 7,
      "type": "file",
      "name": "Example name",
      "mime_type": "string",
      "size_bytes": 1,
      "created_by": 1,
      "created_at": "2026-11-12T09:30:00.000Z",
      "updated_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Errors

StatusMessage
403Not a member

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/items' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Get the breadcrumb path to an item within a site

GET/v1/app/sites/:id/item/:itemId/path

Get the breadcrumb path to an item within a site. Requires any membership on the site. Walks up parent_id (max 50 levels) to the site root.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/item/:itemId/path
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger
itemIdrequiredinteger

Response 200

FieldTypeDescription
patharray of any
Example response
JSON
{
  "path": []
}

Errors

StatusMessage
403Not a member
404Not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/item/1/path' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create a folder within a site

POST/v1/app/sites/:id/folder

Create a folder within a site. Requires editor or owner role on the site.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/folder
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namestring
parent_idinteger

Response 201

FieldTypeDescription
idinteger
namestring
typestring
Example response
JSON
{
  "id": 42,
  "name": "Example name",
  "type": "string"
}

Errors

StatusMessage
400Name required
403Not authorised

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/folder' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","parent_id":7}'

#Rename an item within a site

PATCH/v1/app/sites/:id/item/:itemId

Rename an item within a site. Requires editor or owner role on the site.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/item/:itemId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger
itemIdrequiredinteger

Request body JSON

NameTypeDescription
namestring

Response 200

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

Errors

StatusMessage
400Name required
403Not authorised
404Not found

Example request

Bash
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/item/1' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name"}'

#Move an item into a different folder within a site

POST/v1/app/sites/:id/item/:itemId/move

Move an item into a different folder within a site. Requires editor or owner role on the site. Target folder (when given) must exist in the same site; the move is also blocked if the target is a descendant of the item being moved (would orphan the branch).

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/item/:itemId/move
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger
itemIdrequiredstring

Request body JSON

NameTypeDescription
parent_idinteger

Response 200

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

Errors

StatusMessage
400Cannot move a folder into itself
400Cannot move a folder into its own subfolder
403Not authorised
404Target folder not found
404Not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/item/string/move' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parent_id":7}'

#Soft-delete an item within a site

DELETE/v1/app/sites/:id/item/:itemId

Soft-delete an item within a site. Requires editor or owner role on the site.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/item/:itemId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger
itemIdrequiredinteger

Response 200

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

Errors

StatusMessage
403Not authorised
404Not found

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/item/1' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List trashed items within a site

GET/v1/app/sites/:id/trash

List trashed items within a site. Requires any membership on the site.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/trash
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
itemsarray of object
items[].idinteger
items[].typestring: "file" | "folder"
items[].namestring
items[].mime_typestring, or null
items[].size_bytesinteger
items[].deleted_atstring (date-time), or null
Example response
JSON
{
  "items": [
    {
      "id": 42,
      "type": "file",
      "name": "Example name",
      "mime_type": "string",
      "size_bytes": 1,
      "deleted_at": "2026-11-12T09:30:00.000Z"
    }
  ]
}

Errors

StatusMessage
403Not a member

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/trash' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Restore an item out of trash within a site

POST/v1/app/sites/:id/trash/restore/:itemId

Restore an item out of trash within a site. Requires editor or owner role on the site.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/trash/restore/:itemId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger
itemIdrequiredinteger

Response 200

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

Errors

StatusMessage
403Not authorised
404Not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/trash/restore/1' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List a site's members

GET/v1/app/sites/:id/members

List a site's members. Requires any membership on the site. Ordered owner, then editor, then viewer.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/members
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
membersarray of any
Example response
JSON
{
  "members": []
}

Errors

StatusMessage
403Not a member

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/members' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Add or update a site member

POST/v1/app/sites/:id/members

Add or update a site member. Requires owner role on the site. Target user must be a staff user in the caller's tenant. If the user is already a member their role is updated (upsert on site_id+user_id).

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/members
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
user_idrequiredinteger
rolestringDefault "viewer".

Response 201

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

Errors

StatusMessage
400user_id required
403Not authorised
404User not found in tenant

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/members' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":7,"role":"string"}'

#Remove a member from a site

DELETE/v1/app/sites/:id/member/:targetUserId

Remove a member from a site. Requires owner role on the site. An owner cannot remove themselves this way.

Address
https://<your-org>.brambleit.cloud/api/v1/app/sites/:id/member/:targetUserId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: Sites.

Path parameters

NameTypeDescription
idrequiredinteger
targetUserIdrequiredstring

Response 200

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

Errors

StatusMessage
400Cannot remove yourself from site
403Not authorised

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/sites/42/member/string' \
  -H "X-API-Key: $BRAMBLE_KEY"