Webhooks & integrations
Getting data into and out of Bramble without a session — Flows webhooks and events, calendars, status, error reporting and devices.
These are the ways other systems connect to Bramble without signing in as a person. Each uses a secret token or key instead, so treat every URL below like a password.
#Flows webhooks
Add a Webhook trigger to a flow in Bramble Flows. It gets a private address:
https://<your-org>.brambleit.cloud/flows/hook/<token>- Method: whatever the trigger is set to (
GET,POST, … or any). Another method gets405. - Body: JSON, form or text. The flow receives
{ method, headers, query, body, received_at }. Cookies,Authorizationand forwarding headers are removed before the flow sees them. - Secret header (optional): set a header name and value on the trigger;
calls without it get
401. - Reply: by default
202 { ok: true, run_id }straight away. If the trigger is set to reply from the flow, a Respond to the webhook step decides the status, headers and body (Bramble waits up to 30 seconds, then sends202 { ok, run_id, still_running: true }). - Limits: 120 calls a minute per webhook, plus the flow's own limits
(
429). If the flow is set to skip while still running, an overlapping call gets409. - An unknown token, a turned-off flow, or a hook used on another
organisation's address all get the same
404.
curl -X POST -H "Content-Type: application/json" \
-H "X-Hook-Secret: $SECRET" \
-d '{"order":1234,"status":"paid"}' \
https://<your-org>.brambleit.cloud/flows/hook/<token>#Approvals and forms
Flows' Ask for approval and Ask with a form steps email private links
(/flows/hook/a/<token> and /flows/hook/w/<token>). They work without
signing in, expire, and only accept one answer.
#Events from Bramble apps
A flow can start when something happens in Bramble. Use the App event trigger and pick the event. From there it can call any system on the internet. Available events:
| App | Events |
|---|---|
| PSA | psa.ticket.created, psa.ticket.assigned, psa.ticket.status_changed, psa.ticket.customer_replied, psa.ticket.agent_replied, psa.ticket.note_added, psa.ticket.updated, psa.sla.warning, psa.sla.breached |
| RMM | rmm.alert.raised, rmm.alert.resolved, rmm.device.offline, rmm.device.online, rmm.device.enrolled, rmm.script.finished |
| Warden | warden.finding.new, warden.patch.completed, warden.patch.failed |
| HR | hr.starter.created, hr.leaver.started, hr.leaver.changed, hr.person.updated, hr.checklist.started, hr.leave.requested, hr.leave.booked, hr.leave.decided |
| Forms | forms.response.submitted |
| Drive | drive.file.uploaded |
| To Do | todo.task.created, todo.task.completed |
| Projects | project.task.created, project.task.assigned, project.task.status_changed |
| People | core.user.created, core.user.disabled, core.user.enabled |
| Atlas | atlas.expiring (domains, certificates and other dated items) |
Who can use each event follows the app's licence and admin rights. Flows can also trigger on audit-log activity and on a schedule.
Flows can't reach private networks (10.x, 192.168.x, localhost, cloud
metadata addresses and so on). To call something on your own network, send the
request from one of your RMM devices with Flows' device step.
#Calendars and contacts
| What | Address | Sign-in |
|---|---|---|
| CalDAV (phones, desktop calendar apps) | https://<your-org>.brambleit.cloud/mail/dav/ |
Email + password or app password (HTTP Basic) |
| CardDAV (contacts) | https://<your-org>.brambleit.cloud/mail/dav/addressbooks/ |
Same |
| Discovery | /.well-known/caldav, /.well-known/carddav |
— |
Subscribe link (read-only .ics) |
https://<your-org>.brambleit.cloud/mail/ics/<token>.ics |
The token. In Calendar, open the calendar's settings and choose "Make a private link" |
The .ics link is for calendar services that can only subscribe to a URL.
Anyone with the link can read that calendar, so replace it if it leaks.
#Status page
status.brambleit.com runs outside the platform so it stays up when Bramble Cloud is down.
GET https://status.brambleit.com/api/v1/status.json: current status of every service, open incidents and maintenance. Public, and allowed from any website.GET /api/v1/<page>/status.jsonfor another public status page.- RSS / Atom:
/<page>/feed.rss,/<page>/feed.atom. - Push monitors (for cron jobs and backups that should report in):
GETorPOST https://status.brambleit.com/api/push/<token>?status=up&msg=....
#Devices (RMM agent)
The Bramble RMM agent talks to BRM-API's /api/v1/app/rmmdev/... routes:
- Enrol with an enrolment key (Admin Centre → RMM → Enrollment Keys) and a certificate signing request. Bramble returns the device's certificate.
- Sign in each session by signing a challenge with that certificate
(
/agent/auth/challenge→/agent/auth/verify). That gives a session token. - Check in, report inventory and results, fetch tasks, upload backups and logs with that token.
Enrolment keys are 32 random characters. Anyone who has one can add a device to your organisation, so keep them private and delete the ones you no longer use.
Was this page helpful?
Thanks for your feedback.