Legacy v1 (BRM-API)
The original Drive endpoints in BRM-API, kept for older clients. Use /drive/api/v2.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/drive/items | List items in a folder |
| GET | /v1/app/drive/recent | List the caller's 20 most recently updated files |
| GET | /v1/app/drive/search | Search the caller's items by name |
| GET | /v1/app/drive/quota | Get the caller's personal storage quota and usage |
| GET | /v1/app/drive/item/:id/path | Get the breadcrumb path to an item |
| POST | /v1/app/drive/folder | Create a folder. If parent_id is given it must be an existing, non-deleted item belonging to the caller's tenant |
| PATCH | /v1/app/drive/item/:id | Rename an item. Only affects items owned (created_by) by the caller |
| POST | /v1/app/drive/item/:id/move | Move an item into a different folder |
| DELETE | /v1/app/drive/item/:id | Move an item to trash |
| GET | /v1/app/drive/trash | List the caller's trashed items |
| POST | /v1/app/drive/trash/restore/:id | Restore an item out of trash |
| POST | /v1/app/drive/item/:id/share | Create a public share link for a file |
| GET | /v1/app/drive/item/:id/shares | List active share links for an item |
| DELETE | /v1/app/drive/share/:token | Revoke a share link. Only affects shares on items owned by the caller |
#List items in a folder
/v1/app/drive/itemsList items in a folder. Returns the caller's own files/folders (created_by = caller) directly under the given parent, or at the root when parent_id is omitted.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/items- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Query parameters
| Name | Type | Description |
|---|---|---|
parent_id | integer |
Response 200
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | integer | |
items[].parent_id | integer, or null | |
items[].type | string: "file" | "folder" | |
items[].name | string | |
items[].mime_type | string, or null | |
items[].size_bytes | integer | |
items[].created_by | integer | |
items[].created_at | string (date-time) | |
items[].updated_at | string (date-time) |
Example response
{
"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"
}
]
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/drive/items' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/items', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/items",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/items' -Headers $headers#List the caller's 20 most recently updated files
/v1/app/drive/recentList the caller's 20 most recently updated files. Files only (not folders), most recently updated first.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/recent- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Response 200
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | integer | |
items[].parent_id | integer, or null | |
items[].type | string: "file" | "folder" | |
items[].name | string | |
items[].mime_type | string, or null | |
items[].size_bytes | integer | |
items[].updated_at | string (date-time) |
Example response
{
"items": [
{
"id": 42,
"parent_id": 7,
"type": "file",
"name": "Example name",
"mime_type": "string",
"size_bytes": 1,
"updated_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/drive/recent' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/recent', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/recent",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/recent' -Headers $headers#Search the caller's items by name
/v1/app/drive/searchSearch the caller's items by name. Case-insensitive substring match on name, up to 50 results.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/search- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Query parameters
| Name | Type | Description |
|---|---|---|
q | any |
Response 200
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | integer | |
items[].parent_id | integer, or null | |
items[].type | string: "file" | "folder" | |
items[].name | string | |
items[].mime_type | string, or null | |
items[].size_bytes | integer | |
items[].updated_at | string (date-time) |
Example response
{
"items": [
{
"id": 42,
"parent_id": 7,
"type": "file",
"name": "Example name",
"mime_type": "string",
"size_bytes": 1,
"updated_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/drive/search' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/search', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/search",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/search' -Headers $headers#Get the caller's personal storage quota and usage
/v1/app/drive/quotaGet the caller's personal storage quota and usage. Quota is license-aware — the highest active "base" drive_products.personal_bytes plus any stackable "addon" products, falling back to a 10 GB default when the tenant has no drive licenses assigned.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/quota- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Response 200
| Field | Type | Description |
|---|---|---|
quota_bytes | number | |
used_bytes | number | |
license_name | string | |
addons | array of any |
Example response
{
"quota_bytes": 12.5,
"used_bytes": 12.5,
"license_name": "Example license name",
"addons": []
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/drive/quota' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/quota', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/quota",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/quota' -Headers $headers#Get the breadcrumb path to an item
/v1/app/drive/item/:id/pathGet the breadcrumb path to an item. Walks up parent_id (max 50 levels) from the item to the root, restricted to the caller's own items.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/item/:id/path- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
path | array of any |
Example response
{
"path": []
}Errors
| Status | Message |
|---|---|
| 404 | Not found |
Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42/path' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42/path', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42/path",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42/path' -Headers $headers#Create a folder. If parent_id is given it must be an existing, non-deleted item belonging to the caller's tenant
/v1/app/drive/folder- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/folder- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
parent_id | integer |
Response 201
| Field | Type | Description |
|---|---|---|
id | integer | |
name | string | |
type | string |
Example response
{
"id": 42,
"name": "Example name",
"type": "string"
}Errors
| Status | Message |
|---|---|
| 400 | Name required |
| 404 | Parent folder not found |
Example request
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/drive/folder' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","parent_id":7}'const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/folder', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","parent_id":7}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/folder",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","parent_id":7},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","parent_id":7}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/folder' -Headers $headers -ContentType 'application/json' -Body $body#Rename an item. Only affects items owned (created_by) by the caller
/v1/app/drive/item/:id- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/item/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 400 | Name required |
| 404 | Not found |
Example request
curl -X PATCH 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name"}'const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42', {
method: 'PATCH',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name"}),
});
const data = await res.json();import os, requests
r = requests.patch(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name"},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name"}'
Invoke-RestMethod -Method PATCH -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42' -Headers $headers -ContentType 'application/json' -Body $body#Move an item into a different folder
/v1/app/drive/item/:id/moveMove an item into a different folder. New parent (when given) must be an existing folder owned by the caller; a folder cannot be moved into itself.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/item/:id/move- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Request body JSON
| Name | Type | Description |
|---|---|---|
parent_id | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 400 | Cannot move a folder into itself |
| 400 | Target folder not found |
| 404 | Target folder not found |
| 404 | Not found |
Example request
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/string/move' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"parent_id":7}'const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/item/string/move', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"parent_id":7}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/item/string/move",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"parent_id":7},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"parent_id":7}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/string/move' -Headers $headers -ContentType 'application/json' -Body $body#Move an item to trash
/v1/app/drive/item/:idMove an item to trash. Soft delete (sets deleted_at). Only affects items owned by the caller.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/item/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 404 | Not found |
Example request
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/item/42' -Headers $headers#List the caller's trashed items
/v1/app/drive/trashList the caller's trashed items. Items with deleted_at set, most recently deleted first.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/trash- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Response 200
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | integer | |
items[].type | string: "file" | "folder" | |
items[].name | string | |
items[].mime_type | string, or null | |
items[].size_bytes | integer | |
items[].deleted_at | string (date-time), or null |
Example response
{
"items": [
{
"id": 42,
"type": "file",
"name": "Example name",
"mime_type": "string",
"size_bytes": 1,
"deleted_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/drive/trash' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/trash', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/trash",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/trash' -Headers $headers#Restore an item out of trash
/v1/app/drive/trash/restore/:idRestore an item out of trash. Clears deleted_at. Only affects items owned by the caller that are currently trashed.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/drive/trash/restore/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
ok | boolean |
Example response
{
"ok": true
}Errors
| Status | Message |
|---|---|
| 404 | Not found |
Example request
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/drive/trash/restore/42' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/drive/trash/restore/42', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/drive/trash/restore/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/drive/trash/restore/42' -Headers $headersWas this page helpful?
Thanks for your feedback.