PSA API
Bramble PSA: tickets and their messages, notes and attachments; queues; customers and contacts (shared with Atlas); categories and types; agreements; and your own signature. Works with an API key. PSA settings (statuses, SLAs, workflows, templates, procedures) are in the Admin Centre API.
- Address
https://<your-org>.brambleit.cloud/api- Sign-in
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer). - Address
https://<your-org>.brambleit.cloud/psa- Sign-in
- Signed-in browser session (the
sso_session/session_idcookies from Bramble sign-in). - Endpoints
- 54
- OpenAPI
- psa.json
- Guides
- How PSA works
Queues decide access. You see the tickets in queues your groups can use; each queue can have its own statuses and ticket types.
Messages. A ticket's conversation is a list of messages: replies (emailed to the contact), internal notes, and incoming email. Message bodies are HTML; Bramble cleans them before display.
Events. New tickets, replies, status changes and SLA warnings can start
Flows (psa.ticket.created and others).
Resources
Tickets
Searching and listing tickets, one ticket with its conversation, creating, updating, bulk changes, replies and notes, and attachments.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/psa/check | Check PSA app access |
| GET | /v1/app/psa/tickets | List tickets for tenant |
| GET | /v1/app/psa/tickets/:id | Get a single ticket with messages and activity |
| POST | /v1/app/psa/tickets | Create a ticket |
| POST | /v1/app/psa/tickets/bulk | Bulk update tickets (close, set_status, set_type, set_category, set_priority, assign) |
| POST | /v1/app/psa/tickets/:id | Update ticket fields |
| POST | /v1/app/psa/tickets/:id/delete | Delete ticket |
| POST | /v1/app/psa/tickets/:id/messages | Add a message or internal note to a ticket |
| GET | /v1/app/psa/attachments/:id | Download/view an attachment by DB id |
| GET | /v1/app/psa/tickets/:id/attachments | List attachments for a ticket |
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) |
Customers
Customers (organisations), their agreements, and their links to RMM sites and to a Bramble organisation.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/psa/customers | List customers |
| POST | /v1/app/psa/customers | Create customer |
| POST | /v1/app/psa/customers/:id | Update customer |
| POST | /v1/app/psa/customers/:id/delete | Delete customer |
| GET | /v1/app/psa/customers/:id/contacts | Contacts for a customer |
| GET | /v1/app/psa/customers/:id/tickets | Tickets for a customer |
| GET | /v1/app/psa/customers/:id/devices | ════════════════════════════════════════════════════════════════════════════════ CUSTOMER ↔ RMM DEVICES (RMM-license gated) ════════════════════════════════… |
| GET | /v1/app/psa/rmm-sites | RMM sites (to link to customers) |
| POST | /v1/app/psa/customers/:id/link-site | Link a customer to an RMM site |
| GET | /v1/app/psa/customers/:id/links | One customer record (ticket #85, services/customerLinks.js): the RMM sites and the customer's own Bramble organisation linked to a PSA customer, plus what co… |
| GET | /v1/app/psa/customers/:id/agreement | A customer's agreement |
| POST | /v1/app/psa/customers/:id/agreement | Add an agreement line |
| PUT | /v1/app/psa/customers/:id/agreement/:lineId | Update an agreement line |
| DELETE | /v1/app/psa/customers/:id/agreement/:lineId | Remove an agreement line |
| PUT | /v1/app/psa/customers/:id/bramble-tenant | Link a customer to its Bramble organisation |
| POST | /v1/app/psa/customers/:id/unlink-site | Unlink a customer from an RMM site |
Contacts
People at customers.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/psa/contacts | List contacts |
| POST | /v1/app/psa/contacts | Create contact |
| POST | /v1/app/psa/contacts/:id | Update contact |
| POST | /v1/app/psa/contacts/:id/delete | Delete contact |
Categories
Ticket categories and subcategories.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/psa/categories | List categories (flat, with parent_id) |
| POST | /v1/app/psa/categories | Create category |
| POST | /v1/app/psa/categories/:id | Update category |
| POST | /v1/app/psa/categories/:id/delete | Delete category |
PSA settings
PSA configuration for the organisation, and your own preferences and email signature.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/psa/me/signature | Your own email signature (PSA v2, ticket #57): added under every reply you send |
| PUT | /v1/app/psa/me/signature | Set your email signature |
| GET | /v1/app/psa/config | Get tenant PSA config |
| POST | /v1/app/psa/config | Save tenant PSA config (upsert) |
| POST | /v1/app/psa/config/test-smtp | Send a test email via configured SMTP |
| POST | /v1/app/psa/config/email-preview | Email preview for BRM-Admin → PSA → Branding: the saved settings with any unsaved changes from the form on top (nothing is stored) |
| GET | /v1/app/psa/config/poller-status | Get IMAP poller status (interval, last run, results) |
| POST | /v1/app/psa/config/poll-now | Trigger an immediate IMAP poll |
| POST | /v1/app/psa/config/test-imap | Test global IMAP connection |
Web pages
These return pages for the browser rather than data.
GET /GET /ticket/*GET /customersGET /customers/*GET /contactsGET /settingsGET /categories