Queues
Queues, the agents who work them, and each queue's statuses, ticket types and reply templates.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/psa/agents | List agents (tenant users) |
| GET | /v1/app/psa/queues | List queues for tenant (inc |
| POST | /v1/app/psa/queues | Create a queue (set parent_id for sub-queue) |
| POST | /v1/app/psa/queues/:id | Update a queue |
| POST | /v1/app/psa/queues/:id/delete | Delete a queue (also removes sub-queues via FK cascade) |
| POST | /v1/app/psa/queues/:id/test-imap | Test IMAP connection for a specific queue |
| GET | /v1/app/psa/statuses | List email templates |
| GET | /v1/app/psa/types | List ticket types |
| GET | /v1/app/psa/templates | List reply templates |
| GET | /v1/app/psa/queues/:id/categories | Get category IDs assigned to a queue |
| POST | /v1/app/psa/queues/:id/categories | Set categories for a queue (replaces all) |
#List agents (tenant users)
GET
/v1/app/psa/agents- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/agents- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Response 200
| Field | Type | Description |
|---|---|---|
agents | array of object | |
agents[].id | integer | |
agents[].first_name | string, or null | |
agents[].last_name | string, or null | |
agents[].email | string |
Example response
JSON
{
"agents": [
{
"id": 42,
"first_name": "Alex",
"last_name": "Morgan",
"email": "alex@example.com"
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/psa/agents' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/agents', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/agents",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/agents' -Headers $headers#List queues for tenant (inc
GET
/v1/app/psa/queuesList queues for tenant (inc. parent/child hierarchy info)
- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Response 200
| Field | Type | Description |
|---|---|---|
queues | array of object | |
queues[].restricted | boolean |
Example response
JSON
{
"queues": [
{
"…sanitiseQueue(q)": "…",
"…lists[q.id] || { group_i": "…",
"restricted": false
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues' -Headers $headers#Create a queue (set parent_id for sub-queue)
POST
/v1/app/psa/queues- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Request body JSON
| Name | Type | Description |
|---|---|---|
namerequired | string | |
parent_id | integer | |
email_address | any | |
imap_host | any | |
imap_port | any | |
imap_user | any | |
imap_pass | array of any | |
imap_tls | array of any | |
smtp_host | any | |
smtp_port | any | |
smtp_user | any | |
smtp_pass | array of any | |
smtp_from | any |
Response 200
| Field | Type | Description |
|---|---|---|
queue | any |
Example response
JSON
{
"queue": null
}Errors
| Status | Message |
|---|---|
| 400 | name is required |
| 400 | Parent queue not found or is itself a sub-queue |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","parent_id":7,"email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…"}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","parent_id":7,"email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…"}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","parent_id":7,"email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…"},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","parent_id":7,"email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…"}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues' -Headers $headers -ContentType 'application/json' -Body $body#Update a queue
POST
/v1/app/psa/queues/:id- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Request body JSON
| Name | Type | Description |
|---|---|---|
name | string | |
parent_id | string | |
email_address | any | |
imap_host | any | |
imap_port | any | |
imap_user | any | |
imap_pass | array of any | |
imap_tls | array of any | |
smtp_host | any | |
smtp_port | any | |
smtp_user | any | |
smtp_pass | array of any | |
smtp_from | any | |
is_active | boolean |
Response 200
| Field | Type | Description |
|---|---|---|
queue | any |
Example response
JSON
{
"queue": null
}Errors
| Status | Message |
|---|---|
| 400 | Queue cannot be its own parent |
| 400 | Parent queue not found or is itself a sub-queue |
| 404 | Queue not found |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/string' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Example name","parent_id":"string","email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…","is_active":true}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/string', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"name":"Example name","parent_id":"string","email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…","is_active":true}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/string",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"name":"Example name","parent_id":"string","email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…","is_active":True},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"name":"Example name","parent_id":"string","email_address":"…","imap_host":"…","imap_port":"…","imap_user":"…","imap_pass":[],"imap_tls":[],"smtp_host":"…","smtp_port":"…","smtp_user":"…","smtp_pass":[],"smtp_from":"…","is_active":true}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/string' -Headers $headers -ContentType 'application/json' -Body $body#Delete a queue (also removes sub-queues via FK cascade)
POST
/v1/app/psa/queues/:id/delete- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/:id/delete- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
success | boolean |
Example response
JSON
{
"success": true
}Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/delete' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/delete', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/delete",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/delete' -Headers $headers#Test IMAP connection for a specific queue
POST
/v1/app/psa/queues/:id/test-imap- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/:id/test-imap- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
success | boolean | |
inbox | object | |
inbox.messages | array of any | |
inbox.unseen | any |
Example response
JSON
{
"success": true,
"inbox": {
"messages": [],
"unseen": null
}
}Errors
| Status | Message |
|---|---|
| 400 | IMAP not configured on this queue |
| 404 | Queue not found |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/test-imap' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/test-imap', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/test-imap",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/test-imap' -Headers $headers#List email templates
GET
/v1/app/psa/statusesList email templates. Read-only — template management has moved to BRM-Admin's PSA > Templates tab.
- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/statuses- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Response 200
| Field | Type | Description |
|---|---|---|
statuses | array of object | |
statuses[].id | integer | |
statuses[].name | string | |
statuses[].group_key | string | |
statuses[].color | any | |
statuses[].is_active | boolean | |
statuses[].is_default | boolean |
Example response
JSON
{
"statuses": [
{
"id": 42,
"name": "Example name",
"group_key": "…",
"color": null,
"is_active": true,
"is_default": true
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/psa/statuses' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/statuses', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/statuses",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/statuses' -Headers $headers#List ticket types
GET
/v1/app/psa/types- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/types- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Response 200
| Field | Type | Description |
|---|---|---|
types | array of any |
Example response
JSON
{
"types": []
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/psa/types' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/types', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/types",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/types' -Headers $headers#List reply templates
GET
/v1/app/psa/templates- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/templates- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Response 200
| Field | Type | Description |
|---|---|---|
templates | array of object | |
templates[].id | integer | |
templates[].tenant_id | integer | |
templates[].name | string | |
templates[].subject | string, or null | |
templates[].body | string | |
templates[].category | string, or null | |
templates[].is_active | integer, or null | |
templates[].created_at | string (date-time), or null | |
templates[].updated_at | string (date-time), or null |
Example response
JSON
{
"templates": [
{
"id": 42,
"tenant_id": 1,
"name": "Example name",
"subject": "Example subject",
"body": "<p>…</p>",
"category": "string",
"is_active": 1,
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z"
}
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/psa/templates' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/templates', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/templates",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/templates' -Headers $headers#Get category IDs assigned to a queue
GET
/v1/app/psa/queues/:id/categories- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/:id/categories- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
category_ids | array of integer |
Example response
JSON
{
"category_ids": [
7
]
}Example request
Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories' \
-H "X-API-Key: $BRAMBLE_KEY"JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories' -Headers $headers#Set categories for a queue (replaces all)
POST
/v1/app/psa/queues/:id/categories- Address
https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/:id/categories- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: PSA.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Request body JSON
| Name | Type | Description |
|---|---|---|
category_ids | array of any |
Response 200
| Field | Type | Description |
|---|---|---|
success | boolean |
Example response
JSON
{
"success": true
}Errors
| Status | Message |
|---|---|
| 404 | Queue not found |
Example request
Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"category_ids":[]}'JavaScript
const res = await fetch('https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"category_ids":[]}),
});
const data = await res.json();Python
import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"category_ids":[]},
)
r.raise_for_status()
data = r.json()PowerShell
$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"category_ids":[]}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v1/app/psa/queues/42/categories' -Headers $headers -ContentType 'application/json' -Body $bodyWas this page helpful?
Thanks for your feedback.