Appearance
API endpoint reference
Every endpoint in the OpsMerge API, grouped by feature area. For authentication, API keys, scopes, rate limits, and request/response conventions, start with the API guide. For full request/response schemas and an in-browser test client, use the interactive docs.
Paths below are relative to the base URL https://app.opsmerge.cloud/api/v1. Stable and beta endpoints — the public API — authenticate with a bearer API key (see creating a key):
bash
curl -H "Authorization: Bearer om_your_api_key_here" \
https://app.opsmerge.cloud/api/v1/auth/meEach endpoint carries a stability tier: stable endpoints are the public API proper (6 months' notice before breaking changes), beta endpoints are recent and may still change, and internal endpoints exist for the web UI — documented for transparency, but with zero compatibility guarantees. Build integrations on stable endpoints.
Internal endpoints don't necessarily take API keys: most use the web UI's session token, and some (login, signup, password reset, client-portal and public quote links) have their own authentication or none at all. The interactive docs show each endpoint's exact security scheme.
Auth
Authentication and session management
| Endpoint | Tier | What it does |
|---|---|---|
GET /beta-invites/validate | internal | Pre-flight check a beta invite code |
POST /beta-request | internal | Submit a beta-tester application |
POST /login | internal | Authenticate and obtain a bearer token |
POST /logout | internal | Invalidate the current bearer token |
POST /password/reset | internal | Complete a password reset |
POST /password/reset-request | internal | Request a password-reset email |
POST /signup | internal | Start a self-serve signup |
GET /signup/check-slug | internal | Check tenant slug availability |
GET /signup/provision/status/{token} | internal | Poll tenant provisioning status |
POST /signup/resend | internal | Resend the signup verification email |
GET /signup/verify | internal | Consume the signup magic link |
MFA
Multi-factor authentication (TOTP)
| Endpoint | Tier | What it does |
|---|---|---|
POST /mfa/disable | internal | Disable MFA for the current user |
POST /mfa/login | internal | Complete MFA login |
POST /mfa/setup | internal | Begin TOTP MFA setup |
GET /mfa/status | internal | Get MFA status for the current user |
POST /mfa/verify-setup | internal | Verify a TOTP code to complete MFA setup |
SSO
OpenID Connect Single Sign-On
| Endpoint | Tier | What it does |
|---|---|---|
POST /sso/exchange | internal | Exchange an SSO authorization code for a bearer token |
GET /sso/providers | internal | List SSO providers (admin) |
POST /sso/providers | internal | Create an SSO provider |
GET /sso/providers/public | internal | List enabled SSO providers for the login page |
PUT /sso/providers/{id} | internal | Update an SSO provider |
DELETE /sso/providers/{id} | internal | Delete an SSO provider |
GET /sso/{providerID}/authorize | internal | Initiate SSO authorization (redirect to identity provider) |
GET /sso/{providerID}/callback | internal | SSO callback from the identity provider |
Users
User account management
| Endpoint | Tier | What it does |
|---|---|---|
GET /users | stable | List users in the current tenant |
POST /users | stable | Create a new user |
GET /users/{id} | stable | Get a user by ID |
PUT /users/{id} | stable | Update a user |
DELETE /users/{id} | stable | Soft-delete a user |
POST /users/{id}/password | stable | Change a user's password |
Roles
Role and permission management
| Endpoint | Tier | What it does |
|---|---|---|
GET /permissions | stable | List all available permission keys |
GET /roles | stable | List roles |
POST /roles | stable | Create a role |
GET /roles/{id} | stable | Get a role by ID |
PUT /roles/{id} | stable | Update a role |
DELETE /roles/{id} | stable | Delete a role |
Organizations
Multi-tenant organization management (superuser only)
| Endpoint | Tier | What it does |
|---|---|---|
GET /organizations | internal | List all organizations (platform admin) |
POST /organizations | internal | Create an organization (platform admin) |
GET /organizations/{id} | internal | Get an organization by ID (platform admin) |
PUT /organizations/{id} | internal | Update an organization (platform admin) |
Clients
Client management within an organization
| Endpoint | Tier | What it does |
|---|---|---|
GET /clients | stable | List clients |
POST /clients | stable | Create a client |
GET /clients/{id} | stable | Get a client by ID |
PUT /clients/{id} | stable | Update a client |
DELETE /clients/{id} | stable | Delete a client |
PUT /clients/{id}/alert-template | stable | Assign or clear the client's alert template |
GET /clients/{id}/usage | stable | Get reference counts for a client |
Sites
Site management within clients
| Endpoint | Tier | What it does |
|---|---|---|
GET /clients/{clientID}/sites | stable | List sites under a client |
POST /clients/{clientID}/sites | stable | Create a site under a client |
GET /sites | stable | List all sites across all clients |
GET /sites/{id} | stable | Get a site by ID |
PUT /sites/{id} | stable | Update a site |
DELETE /sites/{id} | stable | Delete a site |
PUT /sites/{id}/alert-template | stable | Assign or clear the site's alert template |
POST /sites/{id}/token | stable | Generate a registration token for this site |
Agents
Agent lifecycle, status, commands, and bulk operations
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents | stable | List agents |
POST /agents/bulk | stable | Execute a bulk operation on multiple agents |
POST /agents/bulk/rotate-nats-creds | internal | Rotate NATS credentials for every agent in the tenant |
POST /agents/move | internal | Move agents to another site (bulk) |
POST /agents/register | stable | Register a new agent (called by the agent binary) |
GET /agents/{agentID}/forecasts | internal | Get capacity forecasts for an agent |
GET /agents/{agentID}/history | internal | Get unified activity history for an agent |
POST /agents/{agentID}/log-level | internal | Set the agent's log level (optionally time-boxed) |
PUT /agents/{agentID}/primary-contact | internal | Set or clear the agent's primary contact |
GET /agents/{agentID}/recent-users | internal | List contacts recently seen logged in on the agent |
GET /agents/{id} | stable | Get agent details |
PUT /agents/{id} | stable | Update agent metadata |
DELETE /agents/{id} | stable | Delete an agent |
POST /agents/{id}/cmd | stable | Execute a shell command on an agent |
GET /agents/{id}/live-metric | internal | Get a live metric snapshot from the agent |
POST /agents/{id}/maintenance | stable | Toggle agent maintenance mode |
POST /agents/{id}/reboot | stable | Reboot an agent |
POST /agents/{id}/rotate-nats-creds | internal | Rotate one agent's NATS credentials |
Checks
Health check management and results
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/checks | stable | List checks for an agent |
POST /agents/{agentID}/checks | stable | Create a check on an agent |
GET /checks | stable | List checks across all agents |
GET /checks/summary | stable | Get check status summary across all agents |
GET /checks/{id} | stable | Get check details |
PUT /checks/{id} | stable | Update a check |
DELETE /checks/{id} | stable | Delete a check |
GET /checks/{id}/results | stable | Get check result history |
POST /checks/{id}/run | stable | Run a check immediately |
Tasks
Automated task scheduling and results
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/tasks | stable | List tasks for an agent |
POST /agents/{agentID}/tasks | stable | Create a task on an agent |
GET /tasks | stable | List tasks across all agents |
POST /tasks | stable | Create a task (agent or smart-group target) |
GET /tasks/summary | stable | Get task status summary across all agents |
GET /tasks/{id} | stable | Get task details |
PUT /tasks/{id} | stable | Update a task |
DELETE /tasks/{id} | stable | Delete a task |
GET /tasks/{id}/results | stable | Get task execution history |
POST /tasks/{id}/run | stable | Run a task immediately |
Scripts
Script library, execution, and streaming
| Endpoint | Tier | What it does |
|---|---|---|
POST /agents/{agentID}/runscript | stable | Run a script on a specific agent |
GET /agents/{agentID}/script-history | stable | Get script run history for an agent |
GET /script-batches | stable | List script batch runs |
GET /script-batches/{batchID} | stable | Get batch detail with per-agent jobs |
DELETE /script-batches/{batchID} | stable | Cancel a batch |
DELETE /script-batches/{batchID}/jobs/{jobID} | stable | Cancel a single batch job |
GET /script-categories | stable | List script categories |
POST /script-categories | stable | Create a script category |
PUT /script-categories/{id} | stable | Update a script category |
DELETE /script-categories/{id} | stable | Delete a script category |
GET /script-runs/{executionID}/status | stable | Poll async script run status |
GET /script-runs/{executionID}/stream | stable | Stream script output via SSE |
GET /scripts | stable | List scripts |
POST /scripts | stable | Create a script |
GET /scripts/{id} | stable | Get a script by ID |
PUT /scripts/{id} | stable | Update a script |
DELETE /scripts/{id} | stable | Delete a script |
POST /scripts/{scriptID}/dispatch | stable | Dispatch a script to multiple agents as a durable batch |
GET /scripts/{scriptID}/history | stable | Get execution history for a script |
POST /scripts/{scriptID}/run | stable | Bulk-run a script on multiple agents |
Policies
Policy engine — check/task templates with hierarchy cascade
| Endpoint | Tier | What it does |
|---|---|---|
PUT /agents/{agentID}/policy | stable | Assign a direct policy to an agent |
PUT /clients/{clientID}/policy | stable | Assign policies to a client |
GET /organization/policy | stable | Get the organisation default policy assignments |
PUT /organization/policy | stable | Assign the organisation default policies |
GET /policies | stable | List policies |
POST /policies | stable | Create a policy |
GET /policies/{id} | stable | Get policy details |
PUT /policies/{id} | stable | Update a policy |
DELETE /policies/{id} | stable | Delete a policy |
GET /policies/{id}/checks | stable | List check templates in a policy |
POST /policies/{id}/checks | stable | Add a check template to a policy |
GET /policies/{id}/scripts | stable | List scheduled-script bindings on a policy |
POST /policies/{id}/scripts | stable | Schedule a script on a policy |
PUT /policies/{id}/scripts/{binding_id} | stable | Update a scheduled-script binding |
DELETE /policies/{id}/scripts/{binding_id} | stable | Remove a scheduled-script binding |
POST /policies/{id}/scripts/{binding_id}/run-now | stable | Run a scheduled script immediately |
GET /policies/{id}/tasks | stable | List task templates in a policy |
POST /policies/{id}/tasks | stable | Add a task template to a policy |
PUT /policies/{policyID}/checks/{checkID} | stable | Update a policy check template |
DELETE /policies/{policyID}/checks/{checkID} | stable | Remove a check template from a policy |
PUT /policies/{policyID}/tasks/{taskID} | stable | Update a policy task template |
DELETE /policies/{policyID}/tasks/{taskID} | stable | Remove a task template from a policy |
PUT /sites/{siteID}/policy | stable | Assign policies to a site |
Alerts
Alert management and alert templates
| Endpoint | Tier | What it does |
|---|---|---|
GET /alert-templates | stable | List alert templates |
POST /alert-templates | stable | Create an alert template |
PUT /alert-templates/{id} | stable | Update an alert template |
DELETE /alert-templates/{id} | stable | Delete an alert template |
GET /alerts | stable | List alerts |
GET /alerts/summary | stable | Get alert count summary |
GET /alerts/{id} | stable | Get alert details |
DELETE /alerts/{id} | stable | Delete an alert |
PUT /alerts/{id}/acknowledge | stable | Acknowledge an alert |
PUT /alerts/{id}/resolve | stable | Resolve an alert |
PUT /alerts/{id}/snooze | stable | Snooze an alert |
Notifications
SMTP, webhook, and notification settings
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/notifications | internal | List curated PSA notifications |
GET /psa/notifications/{system_key} | internal | Get one curated notification |
PUT /psa/notifications/{system_key} | internal | Update a curated notification |
GET /settings/notifications | internal | Get notification settings (SMTP, Twilio, Slack, Teams, Discord) |
PUT /settings/notifications | internal | Update channel webhook defaults (Slack, Teams, Discord) |
POST /settings/notifications/test/discord | internal | Send a test notification to the default Discord webhook |
POST /settings/notifications/test/slack | internal | Send a test notification to the default Slack webhook |
POST /settings/notifications/test/teams | internal | Send a test notification to the default Teams webhook |
GET /settings/smtp | internal | Get SMTP configuration |
PUT /settings/smtp | internal | Update SMTP configuration |
POST /settings/smtp/test | internal | Send a test email via SMTP |
Reports
Report templates, data queries, generation, and scheduling
| Endpoint | Tier | What it does |
|---|---|---|
GET /report-history | internal | List report generation history |
GET /report-history/{id} | internal | Get one report history entry (with rendered HTML) |
DELETE /report-history/{id} | internal | Delete a report history entry |
GET /report-history/{id}/download | internal | Download a generated report |
GET /report-queries | internal | List report data queries |
POST /report-queries | internal | Create a report data query |
GET /report-queries/models | internal | List queryable models and operators |
POST /report-queries/test | internal | Test an unsaved (draft) data query |
GET /report-queries/{id} | internal | Get a report data query |
PUT /report-queries/{id} | internal | Update a report data query |
DELETE /report-queries/{id} | internal | Delete a report data query |
POST /report-queries/{id}/duplicate | internal | Duplicate a saved data query |
POST /report-queries/{id}/test | internal | Test a saved data query and return sample results |
GET /report-schedules | internal | List report schedules |
POST /report-schedules | internal | Create a report schedule |
GET /report-schedules/{id} | internal | Get a report schedule |
PUT /report-schedules/{id} | internal | Update a report schedule |
DELETE /report-schedules/{id} | internal | Delete a report schedule |
POST /report-schedules/{id}/run-now | internal | Run a report schedule immediately |
POST /report-schedules/{id}/test-send | internal | Send a test report to one address |
GET /report-templates | internal | List report templates |
POST /report-templates | internal | Create a report template |
POST /report-templates/import | internal | Import a report template from an export envelope |
GET /report-templates/{id} | internal | Get a report template |
PUT /report-templates/{id} | internal | Update a report template |
DELETE /report-templates/{id} | internal | Delete a report template |
POST /report-templates/{id}/duplicate | internal | Duplicate a report template |
GET /report-templates/{id}/export | internal | Export a report template as JSON |
POST /report-templates/{id}/preview | internal | Preview a rendered report template |
POST /report-templates/{id}/preview-data | internal | Preview a template with live query data |
POST /reports/{templateID}/generate | internal | Generate a report from a template |
Files
Remote file browser (browse, download, upload)
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/files | internal | Browse files on an agent |
DELETE /agents/{agentID}/files | internal | Delete a file or directory on an agent |
POST /agents/{agentID}/files/copy | internal | Copy a file on an agent |
POST /agents/{agentID}/files/download | internal | Download a file from an agent |
POST /agents/{agentID}/files/mkdir | internal | Create a directory on an agent |
POST /agents/{agentID}/files/move | internal | Move a file on an agent |
POST /agents/{agentID}/files/upload | internal | Upload a file to an agent |
Software
Software inventory
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/software | internal | List installed software on an agent |
POST /agents/{agentID}/software/scan | internal | Run a software inventory scan on an agent |
GET /software | internal | List software across all agents (organization-wide) |
CodeSigning
Agent binary signing and Authenticode certificates
| Endpoint | Tier | What it does |
|---|---|---|
GET /platform/authenticode | internal | Get platform Authenticode certificate status |
GET /settings/signing-key | internal | Get signing key status (public key only) |
POST /settings/signing-key | internal | Generate an Ed25519 signing key pair |
Distribution
Agent version management, updates, and installer generation
| Endpoint | Tier | What it does |
|---|---|---|
GET /agent-versions | internal | List uploaded agent versions |
POST /agent-versions/upload | internal | Upload a signed agent binary |
DELETE /agent-versions/{id} | internal | Delete an agent version |
GET /agent-versions/{id}/download | internal | Download an agent binary (authenticated) |
POST /agents/installer | internal | Generate a platform-specific installer script |
POST /agents/update | internal | Trigger a fleet-wide agent update (staged rollout) |
GET /agents/update-history | internal | Get agent update history |
GET /agents/update-status | internal | Get agent version distribution |
Security
Security settings, lockout management
| Endpoint | Tier | What it does |
|---|---|---|
GET /settings/locked-accounts | internal | List locked accounts |
POST /settings/locked-accounts/{username}/unlock | internal | Unlock a locked account |
GET /settings/security | internal | Get security settings |
PUT /settings/security | internal | Update security settings |
CustomFields
Custom field definitions and values
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{id}/custom-fields | internal | Get custom field values for an agent |
PUT /agents/{id}/custom-fields | internal | Set custom field values for an agent |
GET /clients/{id}/custom-fields | internal | Get custom field values for a client |
PUT /clients/{id}/custom-fields | internal | Set custom field values for a client |
GET /custom-fields | internal | List custom field definitions |
POST /custom-fields | internal | Create a custom field definition |
PUT /custom-fields/{id} | internal | Update a custom field definition |
DELETE /custom-fields/{id} | internal | Delete a custom field definition |
GET /sites/{id}/custom-fields | internal | Get custom field values for a site |
PUT /sites/{id}/custom-fields | internal | Set custom field values for a site |
Notes
Agent notes
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{id}/notes | internal | List notes for an agent |
POST /agents/{id}/notes | internal | Add a note to an agent |
PUT /agents/{id}/notes/{noteID} | internal | Update an agent note |
DELETE /agents/{id}/notes/{noteID} | internal | Delete an agent note |
Audit
Audit log
| Endpoint | Tier | What it does |
|---|---|---|
GET /audit-logs | internal | List audit logs for the current tenant |
GET /audit-logs/export | internal | Export audit logs (CSV or JSON) |
Tickets
PSA tickets, comments, attachments, watchers and triage
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/tickets | stable | List tickets |
POST /psa/tickets | stable | Create a ticket |
GET /psa/tickets/stream | stable | Stream ticket lifecycle events (SSE) |
GET /psa/tickets/{id} | stable | Get a ticket with comments and attachments |
PATCH /psa/tickets/{id} | stable | Partially update a ticket |
DELETE /psa/tickets/{id} | stable | Delete a ticket |
GET /psa/tickets/{id}/activity | stable | Get ticket activity (audit trail) |
POST /psa/tickets/{id}/archive | stable | Archive a ticket |
GET /psa/tickets/{id}/attachments | stable | List ticket attachments |
POST /psa/tickets/{id}/attachments | stable | Upload a ticket attachment |
GET /psa/tickets/{id}/attachments/{aid}/download | stable | Download a ticket attachment |
GET /psa/tickets/{id}/comments | stable | List ticket comments |
POST /psa/tickets/{id}/comments | stable | Add a ticket comment |
GET /psa/tickets/{id}/links | stable | List linked entities for a ticket |
POST /psa/tickets/{id}/merge | stable | Merge a ticket into another |
POST /psa/tickets/{id}/transition | stable | Transition ticket status |
POST /psa/tickets/{id}/triage/assign | stable | Assign a triage-queue ticket to a client |
POST /psa/tickets/{id}/triage/spam | stable | Mark a triage-queue ticket as spam |
POST /psa/tickets/{id}/unarchive | stable | Unarchive a ticket |
GET /psa/tickets/{id}/watchers | stable | List ticket watchers |
POST /psa/tickets/{id}/watchers | stable | Add a ticket watcher |
DELETE /psa/tickets/{id}/watchers/{user_id} | stable | Remove a ticket watcher |
Ticket Templates
Reusable ticket templates
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/ticket_templates | internal | List ticket templates |
POST /psa/ticket_templates | internal | Create a ticket template |
PATCH /psa/ticket_templates/{id} | internal | Update a ticket template |
DELETE /psa/ticket_templates/{id} | internal | Delete a ticket template |
Canned Responses
Reusable reply snippets for ticket comments
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/canned_responses | internal | List canned responses |
POST /psa/canned_responses | internal | Create a canned response |
PATCH /psa/canned_responses/{id} | internal | Update a canned response |
DELETE /psa/canned_responses/{id} | internal | Delete a canned response |
POST /psa/canned_responses/{id}/preview | internal | Preview a rendered canned response |
Saved Filters
Per-user saved list filters
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/saved_filters | internal | List saved filters |
POST /psa/saved_filters | internal | Create a saved filter |
PATCH /psa/saved_filters/{id} | internal | Update a saved filter |
DELETE /psa/saved_filters/{id} | internal | Delete a saved filter |
Contacts
Client contacts and portal linking
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/contacts | stable | List contacts |
POST /psa/contacts | stable | Create a contact |
POST /psa/contacts/merge | stable | Merge two contacts |
GET /psa/contacts/{id} | stable | Get a contact by ID |
PATCH /psa/contacts/{id} | stable | Partially update a contact |
DELETE /psa/contacts/{id} | stable | Delete a contact |
GET /psa/contacts/{id}/mailbox-stats | stable | Get mailbox storage stats for a contact |
POST /psa/contacts/{id}/portal-link | stable | Link a contact to a client-portal account |
DELETE /psa/contacts/{id}/portal-link | stable | Unlink a contact's client-portal account |
GET /psa/contacts/{id}/tickets | stable | List tickets raised by a contact |
Billing Services
PSA service catalogue and categories
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/billing/service-categories | stable | List service categories |
POST /psa/billing/service-categories | stable | Create a service category |
GET /psa/billing/services | stable | List services in the catalogue |
POST /psa/billing/services | stable | Create a service |
GET /psa/billing/services/{id} | stable | Get a service by ID |
PUT /psa/billing/services/{id} | stable | Update a service |
DELETE /psa/billing/services/{id} | stable | Delete a service |
GET /psa/billing/services/{id}/usage | stable | Get service reference counts |
Contracts
PSA contracts, lines, billing cycles and asset category mapping
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/billing/asset-assignments | stable | List asset billing assignments |
POST /psa/billing/asset-assignments/bulk | stable | Bulk-assign a billing category |
PATCH /psa/billing/asset-assignments/{asset_id} | stable | Update one asset's billing assignment |
GET /psa/billing/categories | stable | List billing categories |
POST /psa/billing/categories | stable | Create a custom billing category |
PATCH /psa/billing/categories/{id} | stable | Update a custom billing category |
DELETE /psa/billing/categories/{id} | stable | Delete a custom billing category |
GET /psa/billing/category-defaults | stable | List asset-type category defaults |
PATCH /psa/billing/category-defaults/{asset_type} | stable | Set the default category for an asset type |
GET /psa/billing/contracts | stable | List contracts |
POST /psa/billing/contracts | stable | Create a contract |
GET /psa/billing/contracts/{id} | stable | Get a contract with its lines |
PUT /psa/billing/contracts/{id} | stable | Update a contract |
GET /psa/billing/contracts/{id}/billing-cycle | stable | Get the contract's open billing cycle |
PUT /psa/billing/contracts/{id}/billing-cycle | stable | Update the contract's billing cycle anchor |
GET /psa/billing/contracts/{id}/forecast | stable | Forecast the next invoice (dry run) |
POST /psa/billing/contracts/{id}/generate-invoice | stable | Generate an invoice from the contract now |
POST /psa/billing/contracts/{id}/lines | stable | Add a line to a contract |
PUT /psa/billing/contracts/{id}/lines/{lineId} | stable | Update a contract line |
DELETE /psa/billing/contracts/{id}/lines/{lineId} | stable | Delete a contract line |
PATCH /psa/billing/contracts/{id}/lines/{lineId}/pax8 | stable | Update Pax8 settings on a Pax8-mapped line |
Invoices
PSA invoices, items, issue/void lifecycle and PDFs
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/billing/invoices | stable | List invoices |
POST /psa/billing/invoices | stable | Create a draft invoice |
POST /psa/billing/invoices/bulk-send | stable | Bulk-send invoices by email |
GET /psa/billing/invoices/{id} | stable | Get invoice detail |
PATCH /psa/billing/invoices/{id} | stable | Update invoice metadata (drafts only) |
POST /psa/billing/invoices/{id}/freeagent-push | internal | Re-enqueue the FreeAgent push |
POST /psa/billing/invoices/{id}/issue | stable | Issue a draft invoice |
POST /psa/billing/invoices/{id}/items | stable | Add a line to a draft invoice |
PATCH /psa/billing/invoices/{id}/items/{itemId} | stable | Update a draft invoice line |
DELETE /psa/billing/invoices/{id}/items/{itemId} | stable | Delete a draft invoice line |
GET /psa/billing/invoices/{id}/pdf | stable | Download the invoice PDF |
POST /psa/billing/invoices/{id}/pdf/regenerate | stable | Regenerate the invoice PDF archive |
POST /psa/billing/invoices/{id}/qbo-push | internal | Re-enqueue the QuickBooks Online push |
POST /psa/billing/invoices/{id}/void | stable | Void an invoice |
GET /psa/billing/run | internal | Billing run review (drafts grouped by client) |
Billing Settings
Tenant billing configuration, VAT, branding and lookups
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/billing/companies-house/lookup | internal | Look up a company by number |
GET /psa/billing/companies-house/search | internal | Search Companies House |
GET /psa/billing/invoice-branding | internal | Get invoice branding settings |
PATCH /psa/billing/invoice-branding | internal | Update invoice branding settings |
POST /psa/billing/invoice-branding/logo | internal | Upload the invoice logo |
DELETE /psa/billing/invoice-branding/logo | internal | Remove the invoice logo |
GET /psa/billing/invoice-branding/preview | internal | Preview a sample invoice PDF |
GET /psa/billing/invoice-number | internal | Get the next invoice number |
PUT /psa/billing/invoice-number | internal | Set the next invoice number (forward-only) |
GET /psa/billing/settings | internal | Get invoicing defaults |
PUT /psa/billing/settings | internal | Save invoicing defaults |
GET /psa/billing/tax-rates | stable | List tax rates |
POST /psa/billing/tax-rates | stable | Create a tax rate |
GET /psa/billing/vat-settings | internal | Get VAT settings |
PATCH /psa/billing/vat-settings | internal | Update VAT settings |
Time Tracking
Time entries, timers and timesheet workflow
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/time/entries | stable | List time entries |
POST /psa/time/entries | stable | Create a time entry |
GET /psa/time/entries/{id} | stable | Get a time entry by ID |
PATCH /psa/time/entries/{id} | stable | Update a time entry |
DELETE /psa/time/entries/{id} | stable | Delete a time entry |
GET /psa/time/settings | stable | Get time tracking settings |
PUT /psa/time/settings | stable | Update time tracking settings |
PUT /psa/time/settings/default-service | stable | Set or clear the default T&M service |
POST /psa/time/settings/reconcile-unassigned | stable | Assign the default service to unassigned billable entries |
GET /psa/time/settings/services | stable | List active services for the default-service picker |
GET /psa/time/settings/unassigned-billable | stable | Count billable time entries with no service |
GET /psa/time/timer-prefs | stable | Get the caller's timer preferences |
PUT /psa/time/timer-prefs | stable | Update the caller's timer preferences |
GET /psa/time/timers | stable | List the caller's live timers |
POST /psa/time/timers | stable | Start a new timer |
PATCH /psa/time/timers/{id} | stable | Update a timer's notes, label, or ticket |
DELETE /psa/time/timers/{id} | stable | Discard a timer without logging time |
POST /psa/time/timers/{id}/pause | stable | Pause a running timer |
POST /psa/time/timers/{id}/resume | stable | Resume a paused timer |
POST /psa/time/timers/{id}/stop | stable | Stop a timer and commit it as a time entry |
GET /psa/time/timesheets | stable | List timesheets |
GET /psa/time/timesheets/{id} | stable | Get a timesheet with its time entries |
POST /psa/time/timesheets/{id}/approve | stable | Approve a submitted timesheet |
POST /psa/time/timesheets/{id}/reject | stable | Reject a submitted timesheet |
POST /psa/time/timesheets/{id}/reopen | stable | Reopen a rejected timesheet |
POST /psa/time/timesheets/{id}/submit | stable | Submit a timesheet for approval |
Knowledge Base
Internal KB articles, versions and categories
| Endpoint | Tier | What it does |
|---|---|---|
GET /kb/articles | stable | List or search knowledge base articles |
POST /kb/articles | stable | Create a knowledge base article |
GET /kb/articles/by-slug/{slug} | stable | Get a knowledge base article by slug |
GET /kb/articles/{id} | stable | Get a knowledge base article |
PUT /kb/articles/{id} | stable | Update a knowledge base article |
DELETE /kb/articles/{id} | stable | Delete a knowledge base article |
POST /kb/articles/{id}/restore/{version} | stable | Restore a prior version of a knowledge base article |
GET /kb/articles/{id}/versions | stable | List versions of a knowledge base article |
GET /kb/categories | stable | List knowledge base categories |
POST /kb/categories | stable | Create a knowledge base category |
PUT /kb/categories/{id} | stable | Update a knowledge base category |
DELETE /kb/categories/{id} | stable | Delete a knowledge base category |
Documents
Document storage, uploads and associations
| Endpoint | Tier | What it does |
|---|---|---|
GET /documents | stable | List documents |
POST /documents/articles | stable | Create a rich-text document article |
GET /documents/articles/{id} | stable | Get a rich-text document article |
PUT /documents/articles/{id} | stable | Update a rich-text document article |
POST /documents/confirm-upload | stable | Confirm a completed upload |
POST /documents/presign-inline-image | stable | Request a presigned upload URL for an inline image |
POST /documents/presigned-upload | stable | Request a presigned upload URL |
GET /documents/quota | stable | Get document storage quota usage |
DELETE /documents/{id} | stable | Delete a document |
PUT /documents/{id}/associations | stable | Replace a document's associations |
GET /documents/{id}/download | stable | Get a download URL for a document |
GET /documents/{id}/raw | stable | Redirect to the raw document content |
Domain Monitoring
SSL/DNS/WHOIS/HTTP domain monitors
| Endpoint | Tier | What it does |
|---|---|---|
GET /domain-monitors | stable | List domain monitors |
POST /domain-monitors | stable | Create a domain monitor |
GET /domain-monitors/{id} | stable | Get a domain monitor |
PUT /domain-monitors/{id} | stable | Update a domain monitor |
DELETE /domain-monitors/{id} | stable | Delete a domain monitor |
GET /domain-monitors/{id}/dns | stable | Get the current DNS snapshot |
GET /domain-monitors/{id}/dns-security | stable | Get the current DNS-security snapshot |
GET /domain-monitors/{id}/history | stable | List check result history |
PUT /domain-monitors/{id}/pause | stable | Pause or resume a domain monitor |
POST /domain-monitors/{id}/refresh | stable | Trigger an immediate check run |
GET /domain-monitors/{id}/ssl | stable | Get the current SSL snapshot |
GET /domain-monitors/{id}/whois | stable | Get the current WHOIS snapshot |
Agent Enrolment
Registration token lifecycle and installer downloads
| Endpoint | Tier | What it does |
|---|---|---|
GET /installers/stub-download | beta | Download the single-EXE installer stub (public, token-authorised) |
PATCH /registration-tokens/{id} | beta | Extend (or shorten) a registration token's expiry |
DELETE /registration-tokens/{id} | beta | Revoke a registration token |
GET /sites/{id}/tokens | beta | List registration tokens for a site |
Quotes
PSA quotes, sections, items and lifecycle
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/quote-settings | beta | Get org-level quote settings |
PATCH /psa/quote-settings | beta | Update org-level quote settings |
GET /psa/quotes | beta | List quotes |
POST /psa/quotes | beta | Create a draft quote |
GET /psa/quotes/{id} | beta | Get a quote with sections, items and signature |
PATCH /psa/quotes/{id} | beta | Update a quote header |
DELETE /psa/quotes/{id} | beta | Delete a draft quote |
GET /psa/quotes/{id}/audit | beta | List the audit trail for a quote |
POST /psa/quotes/{id}/clear-needs-info | beta | Clear the needs_info flag on a quote |
POST /psa/quotes/{id}/items | beta | Add a line item to a quote |
PATCH /psa/quotes/{id}/items/{item_id} | beta | Update a quote line item |
DELETE /psa/quotes/{id}/items/{item_id} | beta | Delete a quote line item |
POST /psa/quotes/{id}/manual-accept | beta | Manually mark a quote accepted |
POST /psa/quotes/{id}/manual-decline | beta | Manually mark a quote declined |
GET /psa/quotes/{id}/messages | beta | List the reply thread for a quote |
POST /psa/quotes/{id}/messages | beta | Send a reply on the quote thread |
GET /psa/quotes/{id}/pdf | beta | Download the quote PDF |
POST /psa/quotes/{id}/revise | beta | Create a new revision of a quote |
POST /psa/quotes/{id}/sections | beta | Add a section to a quote |
PATCH /psa/quotes/{id}/sections/{section_id} | beta | Update a quote section |
DELETE /psa/quotes/{id}/sections/{section_id} | beta | Delete a quote section |
POST /psa/quotes/{id}/send | beta | Send (or resend) a quote to the customer |
POST /psa/quotes/{id}/withdraw | beta | Withdraw a quote |
Quote Templates
Reusable quote templates and instantiation
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/quote-templates | beta | List quote templates |
POST /psa/quote-templates | beta | Create a quote template |
GET /psa/quote-templates/{id} | beta | Get a quote template with sections and items |
PATCH /psa/quote-templates/{id} | beta | Update a quote template |
DELETE /psa/quote-templates/{id} | beta | Delete a quote template |
POST /psa/quote-templates/{id}/instantiate | beta | Instantiate a template into a new draft quote |
POST /psa/quote-templates/{id}/items | beta | Add an item to a quote template |
PATCH /psa/quote-templates/{id}/items/{item_id} | beta | Update a quote template item |
DELETE /psa/quote-templates/{id}/items/{item_id} | beta | Delete a quote template item |
POST /psa/quote-templates/{id}/sections | beta | Add a section to a quote template |
PATCH /psa/quote-templates/{id}/sections/{section_id} | beta | Update a quote template section |
DELETE /psa/quote-templates/{id}/sections/{section_id} | beta | Delete a quote template section |
Quote Approval
Quote approval chains and decisions
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/quote-approval-chains | beta | List quote approval chains |
POST /psa/quote-approval-chains | beta | Create a quote approval chain |
GET /psa/quote-approval-chains/{id} | beta | Get an approval chain with its steps |
PATCH /psa/quote-approval-chains/{id} | beta | Update an approval chain |
DELETE /psa/quote-approval-chains/{id} | beta | Delete an approval chain |
POST /psa/quote-approval-chains/{id}/steps | beta | Add a step to an approval chain |
PATCH /psa/quote-approval-chains/{id}/steps/{step_id} | beta | Update an approval chain step |
DELETE /psa/quote-approval-chains/{id}/steps/{step_id} | beta | Delete an approval chain step |
GET /psa/quotes/{id}/approval-steps | beta | List the per-quote approval run state |
POST /psa/quotes/{id}/approve | beta | Approve a quote awaiting approval |
POST /psa/quotes/{id}/reject | beta | Reject a quote awaiting approval |
POST /psa/quotes/{id}/submit-for-approval | beta | Submit a draft quote for approval |
Projects
PSA projects, phases, milestones, risks and approvals
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/projects | beta | List projects |
POST /psa/projects | beta | Create a project |
POST /psa/projects/from-template | beta | Instantiate a project from a template |
GET /psa/projects/portfolio | beta | Portfolio rollup across all projects |
GET /psa/projects/{id} | beta | Get a project with phases and milestones |
PATCH /psa/projects/{id} | beta | Update a project |
DELETE /psa/projects/{id} | beta | Archive a project |
GET /psa/projects/{id}/approvals | beta | List approvals for a project |
POST /psa/projects/{id}/approvals | beta | Create an approval request |
POST /psa/projects/{id}/approvals/{approval_id}/decide | beta | Decide an approval |
GET /psa/projects/{id}/burn-rate | beta | Project burn-rate |
GET /psa/projects/{id}/dependencies | beta | List task dependencies for a project |
POST /psa/projects/{id}/dependencies | beta | Create a task dependency |
DELETE /psa/projects/{id}/dependencies/{dep_id} | beta | Delete a task dependency |
POST /psa/projects/{id}/discovery/scan | beta | Run a discovery scan |
GET /psa/projects/{id}/milestones | beta | List milestones for a project |
POST /psa/projects/{id}/milestones | beta | Create a milestone |
PATCH /psa/projects/{id}/milestones/{m_id} | beta | Update a milestone (may trigger billing) |
DELETE /psa/projects/{id}/milestones/{m_id} | beta | Delete a milestone |
GET /psa/projects/{id}/phases | beta | List phases for a project |
POST /psa/projects/{id}/phases | beta | Create a phase |
PATCH /psa/projects/{id}/phases/reorder | beta | Reorder all phases |
PATCH /psa/projects/{id}/phases/{phase_id} | beta | Update a phase |
DELETE /psa/projects/{id}/phases/{phase_id} | beta | Delete a phase |
GET /psa/projects/{id}/risks | beta | List RAID entries for a project |
POST /psa/projects/{id}/risks | beta | Create a RAID entry |
PATCH /psa/projects/{id}/risks/{risk_id} | beta | Update a RAID entry |
DELETE /psa/projects/{id}/risks/{risk_id} | beta | Delete a RAID entry |
POST /psa/projects/{id}/shift-tasks | beta | Bulk-shift task due dates |
Project Templates
Reusable project templates and versions
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/project-templates | beta | List project templates |
POST /psa/project-templates | beta | Create a project template |
GET /psa/project-templates/available-vars | beta | List template substitution variables |
POST /psa/project-templates/import-samples | beta | Import the sample template catalogue |
GET /psa/project-templates/{id} | beta | Get a project template with its current version |
PATCH /psa/project-templates/{id} | beta | Update template metadata |
DELETE /psa/project-templates/{id} | beta | Archive a project template |
PUT /psa/project-templates/{id}/payload | beta | Save a new template payload version |
GET /psa/project-templates/{id}/versions | beta | List template version history |
GET /psa/project-templates/{id}/versions/{version} | beta | Get one template version |
Products
Product catalogue and supplier SKU links
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/products | beta | List products |
POST /psa/products | beta | Create a product |
GET /psa/products/{id} | beta | Get a product |
PATCH /psa/products/{id} | beta | Update a product |
DELETE /psa/products/{id} | beta | Delete a product |
GET /psa/products/{id}/supplier-skus | beta | List a product's supplier SKU links |
POST /psa/products/{id}/supplier-skus | beta | Link a supplier SKU to a product |
DELETE /psa/products/{id}/supplier-skus/{link_id} | beta | Unlink a supplier SKU from a product |
Catalogue
Cross-supplier catalogue search
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/catalogue/search | beta | Search the unified product catalogue |
Suppliers
Suppliers and price-feed ingestion
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/suppliers | beta | List suppliers |
POST /psa/suppliers | beta | Create a supplier |
GET /psa/suppliers/{id} | beta | Get a supplier |
PATCH /psa/suppliers/{id} | beta | Update a supplier |
DELETE /psa/suppliers/{id} | beta | Delete a supplier |
GET /psa/suppliers/{id}/feed | beta | List a supplier's feed items |
POST /psa/suppliers/{id}/feed/ingest | beta | Ingest a previewed supplier CSV |
GET /psa/suppliers/{id}/feed/mappings | beta | List a supplier's CSV mapping presets |
POST /psa/suppliers/{id}/feed/mappings | beta | Save a CSV mapping preset |
DELETE /psa/suppliers/{id}/feed/mappings/{mid} | beta | Delete a CSV mapping preset |
POST /psa/suppliers/{id}/feed/preview | beta | Preview a supplier CSV upload |
Procurement
Procured item tracking
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/procured-items | beta | List client procured items |
POST /psa/procured-items | beta | Create a procured item |
GET /psa/procured-items/{id} | beta | Get a procured item |
PATCH /psa/procured-items/{id} | beta | Update a procured item |
DELETE /psa/procured-items/{id} | beta | Delete a procured item |
MDM
Mobile device management (beta, per-org flag)
| Endpoint | Tier | What it does |
|---|---|---|
GET /mdm/connections | beta | List MDM provider connections |
POST /mdm/connections/{provider}/callback | beta | Complete the AMAPI enterprise binding (connect leg 2) |
POST /mdm/connections/{provider}/connect | beta | Start the AMAPI enterprise binding (connect leg 1) |
POST /mdm/connections/{provider}/disconnect | beta | Disconnect the MDM provider (DESTRUCTIVE) |
POST /mdm/connections/{provider}/test | beta | Test the MDM provider connection |
GET /mdm/defaults | beta | Get hierarchy default policies |
PUT /mdm/defaults/org | beta | Set the org default policy |
PUT /mdm/defaults/site/{id} | beta | Set a site default policy |
GET /mdm/devices | beta | List MDM devices |
GET /mdm/devices/{id} | beta | Get an MDM device |
POST /mdm/devices/{id}/clear-lost | beta | Clear lost mode (recovery) |
GET /mdm/devices/{id}/commands | beta | List a device's command history |
POST /mdm/devices/{id}/commands | beta | Issue a device command |
PUT /mdm/devices/{id}/policy | beta | Assign a policy to a device |
POST /mdm/devices/{id}/report-lost | beta | Report a device lost |
POST /mdm/enrolment-tokens | beta | Create a device enrolment token |
POST /mdm/managed-play/web-token | beta | Mint a Managed Google Play web token |
GET /mdm/policies | beta | List MDM policies |
POST /mdm/policies | beta | Create an MDM policy |
GET /mdm/policies/{id} | beta | Get an MDM policy |
PUT /mdm/policies/{id} | beta | Update an MDM policy |
DELETE /mdm/policies/{id} | beta | Delete an MDM policy |
POST /mdm/policies/{id}/push | beta | Push a policy to the provider |
GET /organizations/{id}/mdm-enabled | beta | Get an organization's MDM beta flag |
PUT /organizations/{id}/mdm-enabled | beta | Set an organization's MDM beta flag |
CSAT
Customer satisfaction surveys and analytics
| Endpoint | Tier | What it does |
|---|---|---|
GET /csat/{token} | beta | Load a CSAT survey landing page |
POST /csat/{token} | beta | Submit a CSAT survey response |
GET /psa/csat/aggregate | beta | CSAT aggregate metrics |
GET /psa/csat/responses | beta | List recent CSAT responses |
Asset Groups
Smart asset groups with filter DSL
| Endpoint | Tier | What it does |
|---|---|---|
GET /asset-groups | beta | List asset groups |
POST /asset-groups | beta | Create an asset group |
GET /asset-groups/fields | beta | List queryable criteria fields |
POST /asset-groups/preview | beta | Preview criteria without saving |
POST /asset-groups/recompute-all | beta | Recompute every asset group |
GET /asset-groups/{id} | beta | Get an asset group |
PUT /asset-groups/{id} | beta | Update an asset group |
DELETE /asset-groups/{id} | beta | Delete an asset group |
POST /asset-groups/{id}/clone | beta | Clone an asset group |
GET /asset-groups/{id}/members | beta | List group members |
POST /asset-groups/{id}/recompute | beta | Recompute group membership now |
Network Devices
SNMP network device inventory and polling
| Endpoint | Tier | What it does |
|---|---|---|
GET /device-counts | internal | Get combined agent and network device counts |
GET /network-devices | stable | List network devices |
POST /network-devices | stable | Create a network device |
POST /network-devices/discover | stable | Run SNMP discovery via an agent |
GET /network-devices/{id} | stable | Get a network device |
PUT /network-devices/{id} | stable | Update a network device |
DELETE /network-devices/{id} | stable | Delete a network device |
POST /network-devices/{id}/poll | stable | Poll a device on demand |
Email Gateway
Inbound/outbound email domains, mailboxes, blocklist and activity
| Endpoint | Tier | What it does |
|---|---|---|
GET /clients/{clientID}/email-domains | internal | List a client's email domains |
POST /clients/{clientID}/email-domains | internal | Add an email domain to a client |
DELETE /clients/{clientID}/email-domains/{id} | internal | Remove an email domain from a client |
GET /psa/email/activity | internal | List email activity |
GET /psa/email/activity/summary | internal | Email activity summary |
GET /psa/email/activity/{id} | internal | Get email activity detail |
GET /psa/email/blocklist | internal | List blocklist entries |
POST /psa/email/blocklist | internal | Add blocklist entry |
DELETE /psa/email/blocklist/{id} | internal | Remove blocklist entry |
GET /psa/email/domains | internal | Get outbound domain config (Haraka) |
POST /psa/email/domains | internal | Provision outbound domain (Haraka) |
POST /psa/email/domains/challenge | internal | Issue domain ownership challenge |
POST /psa/email/domains/challenge/verify | internal | Verify domain ownership challenge |
PUT /psa/email/domains/{id} | internal | Update outbound domain (Haraka) |
DELETE /psa/email/domains/{id} | internal | Delete outbound domain (Haraka) |
POST /psa/email/domains/{id}/verify | internal | Verify outbound domain DNS (Haraka) |
GET /psa/email/hyvor/domains | internal | List outbound domains (Hyvor) |
POST /psa/email/hyvor/domains | internal | Add outbound domain (Hyvor) |
PATCH /psa/email/hyvor/domains/{id} | internal | Update outbound domain (Hyvor) |
DELETE /psa/email/hyvor/domains/{id} | internal | Remove outbound domain (Hyvor) |
POST /psa/email/hyvor/domains/{id}/primary | internal | Set primary outbound domain (Hyvor) |
POST /psa/email/hyvor/domains/{id}/verify | internal | Verify outbound domain DNS (Hyvor) |
GET /psa/email/hyvor/sends | internal | List sent messages (Hyvor delivery reporting) |
GET /psa/email/hyvor/sends/{id} | internal | Get sent message detail (Hyvor delivery reporting) |
GET /psa/email/inbound-mailboxes | internal | List inbound mailboxes |
POST /psa/email/inbound-mailboxes | internal | Create inbound mailbox |
PUT /psa/email/inbound-mailboxes/{id} | internal | Update inbound mailbox |
DELETE /psa/email/inbound-mailboxes/{id} | internal | Delete inbound mailbox |
PSA Settings
Ticket categories, priority matrix, SLA plans and AI feature config
| Endpoint | Tier | What it does |
|---|---|---|
PATCH /psa/settings/ai/features | internal | Toggle AI features |
PATCH /psa/settings/ai/rate-limits | internal | Patch AI per-feature daily rate limits |
GET /psa/settings/ai/usage | internal | List AI usage metering rows |
GET /psa/settings/categories | internal | List ticket categories |
POST /psa/settings/categories | internal | Create a ticket category |
PATCH /psa/settings/categories/{id} | internal | Update a ticket category |
DELETE /psa/settings/categories/{id} | internal | Delete a ticket category |
GET /psa/settings/categories/{id}/subtree | internal | List a category subtree |
GET /psa/settings/priority-matrix | internal | Get the 5x5 priority matrix |
POST /psa/settings/priority-matrix/reset | internal | Reset the priority matrix |
PUT /psa/settings/priority-matrix/{impact}/{urgency} | internal | Upsert a priority matrix cell |
DELETE /psa/settings/priority-matrix/{impact}/{urgency} | internal | Delete a priority matrix cell |
GET /psa/settings/sla-calendars | internal | List SLA calendars |
POST /psa/settings/sla-calendars | internal | Create an SLA calendar |
GET /psa/settings/sla-calendars/{id} | internal | Get an SLA calendar |
PATCH /psa/settings/sla-calendars/{id} | internal | Update an SLA calendar |
DELETE /psa/settings/sla-calendars/{id} | internal | Delete an SLA calendar |
GET /psa/settings/sla-plans | internal | List SLA plans |
POST /psa/settings/sla-plans | internal | Create an SLA plan |
GET /psa/settings/sla-plans/resolve | internal | Resolve the SLA plan for a hypothetical ticket |
GET /psa/settings/sla-plans/{id} | internal | Get an SLA plan |
PATCH /psa/settings/sla-plans/{id} | internal | Update an SLA plan |
DELETE /psa/settings/sla-plans/{id} | internal | Delete an SLA plan |
GET /psa/settings/ticket-type-forms | internal | List per-type ticket forms (merged view) |
GET /psa/settings/ticket-type-forms/defaults | internal | List platform-default ticket forms |
PUT /psa/settings/ticket-type-forms/{ticket_type} | internal | Upsert a tenant form override |
DELETE /psa/settings/ticket-type-forms/{ticket_type} | internal | Reset a form to the platform default |
GET /psa/settings/tickets | internal | Get org-wide ticket settings |
PUT /psa/settings/tickets | internal | Update org-wide ticket settings |
GET /psa/status | internal | Get PSA module status for the current tenant |
Ticket Rules
Ticket automation rules and dry-run
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/rules | internal | List automation rules |
POST /psa/rules | internal | Create an automation rule |
POST /psa/rules/dry-run | internal | Dry-run a rule definition |
GET /psa/rules/{id} | internal | Get a rule |
PATCH /psa/rules/{id} | internal | Update a rule |
DELETE /psa/rules/{id} | internal | Delete a rule |
GET /psa/rules/{id}/runs | internal | List rule runs (audit history) |
QuickBooks
QuickBooks Online accounting sync
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/integrations/qbo | internal | Get QuickBooks connection status |
DELETE /psa/integrations/qbo | internal | Disconnect QuickBooks |
POST /psa/integrations/qbo/authorize | internal | Start QuickBooks OAuth flow |
POST /psa/integrations/qbo/callback | internal | Complete QuickBooks OAuth flow |
POST /psa/integrations/qbo/create-from-local | internal | Push a local entity to QuickBooks |
POST /psa/integrations/qbo/link-local | internal | Link a local entity to an existing QuickBooks entity |
GET /psa/integrations/qbo/lookup-local | internal | Autocomplete local map targets (QuickBooks) |
GET /psa/integrations/qbo/pending-imports | internal | List QuickBooks pending imports |
PATCH /psa/integrations/qbo/pending-imports/{id} | internal | Decide a QuickBooks pending import |
GET /psa/integrations/qbo/preferences | internal | Get QuickBooks preferences |
PATCH /psa/integrations/qbo/preferences | internal | Update QuickBooks preferences |
POST /psa/integrations/qbo/sync | internal | Trigger a manual QuickBooks sync |
GET /psa/integrations/qbo/sync-history | internal | List QuickBooks sync history |
GET /psa/integrations/qbo/unmapped-local | internal | List local entities unmapped to QuickBooks |
FreeAgent
FreeAgent accounting sync
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/integrations/freeagent | internal | Get FreeAgent connection status |
DELETE /psa/integrations/freeagent | internal | Disconnect FreeAgent |
POST /psa/integrations/freeagent/authorize | internal | Start FreeAgent OAuth flow |
GET /psa/integrations/freeagent/bank-accounts | internal | List FreeAgent bank accounts |
POST /psa/integrations/freeagent/callback | internal | Complete FreeAgent OAuth flow |
POST /psa/integrations/freeagent/create-from-local | internal | Push a local client to FreeAgent |
GET /psa/integrations/freeagent/income-categories | internal | List FreeAgent income categories |
GET /psa/integrations/freeagent/lookup-local | internal | Autocomplete local map targets (FreeAgent) |
GET /psa/integrations/freeagent/pending-imports | internal | List FreeAgent pending imports |
PATCH /psa/integrations/freeagent/pending-imports/{id} | internal | Decide a FreeAgent pending import |
GET /psa/integrations/freeagent/preferences | internal | Get FreeAgent preferences |
PATCH /psa/integrations/freeagent/preferences | internal | Update FreeAgent preferences |
POST /psa/integrations/freeagent/sync | internal | Trigger a manual FreeAgent sync |
GET /psa/integrations/freeagent/sync-history | internal | List FreeAgent sync history |
GET /psa/integrations/freeagent/unmapped-local | internal | List local entities unmapped to FreeAgent |
Entra
Microsoft Entra contact sync
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/integrations/entra | internal | Get Entra connection status |
DELETE /psa/integrations/entra | internal | Disconnect Entra |
GET /psa/integrations/entra/authorize | internal | Start the Entra OAuth flow |
GET /psa/integrations/entra/callback | internal | Entra OAuth callback |
POST /psa/integrations/entra/connect | internal | Save Entra app credentials |
POST /psa/integrations/entra/sync | internal | Trigger an Entra contact sync |
Pax8
Pax8 marketplace sync
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/integrations/pax8 | internal | Get Pax8 connection status |
DELETE /psa/integrations/pax8 | internal | Disconnect Pax8 |
POST /psa/integrations/pax8/connect | internal | Connect Pax8 |
POST /psa/integrations/pax8/credentials | internal | Rotate Pax8 credentials |
GET /psa/integrations/pax8/linked | internal | List Pax8-linked clients |
GET /psa/integrations/pax8/lookup-local | internal | Typeahead lookup of local clients |
GET /psa/integrations/pax8/pending-imports | internal | List the Pax8 pending-imports queue |
PATCH /psa/integrations/pax8/pending-imports/{id} | internal | Decide a Pax8 pending import |
PATCH /psa/integrations/pax8/preferences | internal | Update Pax8 preferences |
POST /psa/integrations/pax8/sync | internal | Trigger a Pax8 sync now |
GET /psa/integrations/pax8/sync-history | internal | List Pax8 sync history |
CIPP
CIPP tenant mapping and sync
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/integrations/cipp | internal | Get CIPP connection status |
DELETE /psa/integrations/cipp | internal | Disconnect CIPP |
POST /psa/integrations/cipp/connect | internal | Connect CIPP |
POST /psa/integrations/cipp/sync | internal | Trigger a CIPP contact sync |
GET /psa/integrations/cipp/tenants | internal | List CIPP tenant mappings |
POST /psa/integrations/cipp/tenants/auto-create | internal | Auto-create clients for unmapped CIPP tenants |
PUT /psa/integrations/cipp/tenants/{cippTenantId}/map | internal | Map a CIPP tenant to a client |
POST /psa/integrations/cipp/tenants/{cippTenantId}/sync | internal | Sync one CIPP tenant now |
GET /psa/integrations/cipp/unmapped-count | internal | Count unmapped CIPP tenants |
Distributors
Ingram, TD Synnex and Exertis supplier integrations
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/integrations/exertis | internal | Get Exertis connection |
POST /psa/integrations/exertis | internal | Create or update the Exertis connection |
DELETE /psa/integrations/exertis | internal | Disconnect Exertis |
POST /psa/integrations/exertis/catalog | internal | Pull the Exertis catalogue |
POST /psa/integrations/exertis/test | internal | Test the Exertis connection |
GET /psa/integrations/ingram | internal | Get Ingram Micro connection |
POST /psa/integrations/ingram | internal | Create or update the Ingram Micro connection |
DELETE /psa/integrations/ingram | internal | Disconnect Ingram Micro |
GET /psa/integrations/ingram/catalog | internal | Search the Ingram catalogue |
POST /psa/integrations/ingram/pa | internal | Ingram price and availability lookup |
POST /psa/integrations/ingram/test | internal | Test the Ingram connection |
GET /psa/integrations/tdsynnex | internal | Get TD Synnex connection |
POST /psa/integrations/tdsynnex | internal | Create or update the TD Synnex connection |
DELETE /psa/integrations/tdsynnex | internal | Disconnect TD Synnex |
POST /psa/integrations/tdsynnex/pa | internal | TD Synnex price and availability lookup |
POST /psa/integrations/tdsynnex/test | internal | Test the TD Synnex connection |
Bitdefender
Bitdefender GravityZone integration (bring-your-own-tenant)
| Endpoint | Tier | What it does |
|---|---|---|
GET /clients/{client_id}/bitdefender/toggle | internal | Get the per-client Bitdefender billing toggle |
PUT /clients/{client_id}/bitdefender/toggle | internal | Set the per-client Bitdefender billing toggle |
GET /integrations/bitdefender | internal | Get Bitdefender connection status |
DELETE /integrations/bitdefender | internal | Disconnect Bitdefender |
GET /integrations/bitdefender/clients/{client_id}/endpoints | internal | List Bitdefender endpoints for a client |
GET /integrations/bitdefender/companies | internal | List provisioned Bitdefender companies |
GET /integrations/bitdefender/companies/{client_id} | internal | Get the Bitdefender company for one client |
POST /integrations/bitdefender/connect | internal | Connect Bitdefender GravityZone |
GET /integrations/bitdefender/costs | internal | List Bitdefender module cost rows |
PUT /integrations/bitdefender/costs | internal | Upsert a Bitdefender module cost row |
DELETE /integrations/bitdefender/costs/{module_key} | internal | Delete a Bitdefender module cost row |
GET /integrations/bitdefender/defaults | internal | Get Bitdefender provisioning defaults |
PUT /integrations/bitdefender/defaults | internal | Save Bitdefender provisioning defaults |
GET /integrations/bitdefender/incidents/{incident_id} | internal | Get one Bitdefender incident |
GET /integrations/bitdefender/policies | internal | List Bitdefender template policies |
POST /integrations/bitdefender/provision/{client_id} | internal | Provision a Bitdefender company for one client |
GET /integrations/bitdefender/push/health | internal | Get Bitdefender push delivery stats |
POST /integrations/bitdefender/reconcile | internal | Run Bitdefender billing reconciliation now |
GET /integrations/bitdefender/reports | internal | List Bitdefender reports |
GET /integrations/bitdefender/reports/{report_id}/download | internal | Get Bitdefender report download links |
POST /integrations/bitdefender/test | internal | Test Bitdefender credentials |
GET /integrations/bitdefender/usage | internal | List Bitdefender usage snapshots |
GET /integrations/bitdefender/usage/clients/{client_id} | internal | List Bitdefender usage snapshots for one client |
Telecom
Dial 9 telecom billing (EU cell only)
| Endpoint | Tier | What it does |
|---|---|---|
GET /psa/billing/dial9/config | internal | Get Dial 9 configuration |
PUT /psa/billing/dial9/config | internal | Save Dial 9 configuration |
POST /psa/billing/dial9/invoices/{id}/append-lines | internal | Append Dial 9 telecom lines to a draft invoice |
POST /psa/billing/dial9/keypair | internal | Generate a Dial 9 SFTP keypair |
GET /psa/billing/dial9/numbers | internal | List Dial 9 DID inventory |
PATCH /psa/billing/dial9/numbers/{id} | internal | Assign a Dial 9 number |
POST /psa/billing/dial9/peek-host-key | internal | Peek (and optionally pin) the Dial 9 SFTP host key |
GET /psa/billing/dial9/quarantine | internal | List open CDR quarantine rows |
POST /psa/billing/dial9/quarantine/{id}/resolve | internal | Resolve a CDR quarantine row |
POST /psa/billing/dial9/sync | internal | Trigger a Dial 9 sync now |
GET /psa/billing/dial9/tariffs | internal | List Dial 9 tariffs |
PATCH /psa/billing/dial9/tariffs/{id} | internal | Set a Dial 9 tariff markup override |
GET /psa/billing/dial9/units | internal | List Dial 9 units |
PATCH /psa/billing/dial9/units/{id} | internal | Assign a Dial 9 unit to a client |
Client Portal
End-customer portal (session-bound, not an integration surface)
| Endpoint | Tier | What it does |
|---|---|---|
GET /portal/billing/invoices | internal | List the contact's client invoices (portal) |
GET /portal/billing/invoices/{id} | internal | Get invoice detail (portal) |
GET /portal/billing/invoices/{id}/pay | internal | Get the pay-now URL for an invoice (portal) |
GET /portal/billing/payments | internal | List the contact's client payment history (portal) |
GET /portal/branding | internal | Get portal branding (contact-facing) |
GET /portal/documents | internal | List documents for a target (portal) |
POST /portal/documents/confirm-upload | internal | Confirm a presigned document upload (portal) |
POST /portal/documents/presigned-upload | internal | Presign a document upload (portal) |
GET /portal/documents/quota | internal | Get tenant document storage usage (portal) |
DELETE /portal/documents/{id} | internal | Delete an own-uploaded document (portal) |
GET /portal/documents/{id}/download | internal | Get a presigned download URL for a document (portal) |
GET /portal/kb/articles | internal | List or search knowledge base articles (portal) |
GET /portal/kb/articles/{id} | internal | Get a knowledge base article (portal) |
GET /portal/kb/categories | internal | List knowledge base categories (portal) |
GET /portal/self | internal | Get own portal profile |
PATCH /portal/self | internal | Update own portal profile |
POST /portal/self/change-password | internal | Change own portal password |
PUT /portal/self/notification-preferences | internal | Replace own notification preferences |
GET /portal/tickets | internal | List own tickets (portal) |
POST /portal/tickets | internal | Create a ticket (portal) |
GET /portal/tickets/{id} | internal | Get own ticket detail (portal) |
GET /portal/tickets/{id}/attachments/{aid}/download | internal | Download a ticket attachment (portal) |
POST /portal/tickets/{id}/close | internal | Close own resolved ticket (portal) |
POST /portal/tickets/{id}/comments | internal | Add a comment to own ticket (portal) |
GET /public/invoice-refresh/{token} | internal | Preflight an invoice email refresh (public magic link) |
POST /public/invoice-refresh/{token} | internal | Re-send the invoice email (public magic link) |
GET /public/quotes/{token} | internal | View a quote (public magic link) |
POST /public/quotes/{token}/accept | internal | Accept and sign a quote (public magic link) |
POST /public/quotes/{token}/decline | internal | Decline a quote (public magic link) |
PATCH /public/quotes/{token}/items/{item_id}/optional | internal | Toggle an optional quote line (public magic link) |
GET /public/quotes/{token}/pdf | internal | Download the quote PDF (public magic link) |
Portal Branding
Tenant portal branding administration
| Endpoint | Tier | What it does |
|---|---|---|
GET /settings/portal-branding | internal | Get portal branding settings (MSP admin) |
PUT /settings/portal-branding | internal | Update portal branding settings (MSP admin) |
POST /settings/portal-branding/logo | internal | Presign a portal logo upload (MSP admin) |
DELETE /settings/portal-branding/logo | internal | Clear the portal logo (MSP admin) |
Tray
System tray app configuration and self-service script runs
| Endpoint | Tier | What it does |
|---|---|---|
PUT /agents/{agentID}/tray-enabled | internal | Toggle the tray app on a single agent |
GET /tray-configs | internal | List tray configs |
POST /tray-configs | internal | Create a tray config |
GET /tray-configs/resolve/{agentID} | internal | Resolve the effective tray config for an agent |
GET /tray-configs/{configID}/scripts | internal | List self-service scripts in a tray config |
POST /tray-configs/{configID}/scripts | internal | Add a script to a tray config catalogue |
GET /tray-configs/{id} | internal | Get a tray config |
PUT /tray-configs/{id} | internal | Update a tray config |
DELETE /tray-configs/{id} | internal | Delete a tray config |
GET /tray-notifications | internal | List tray notification history |
POST /tray-notifications | internal | Send a tray notification |
DELETE /tray-notifications/{id} | internal | Delete a tray notification record |
PUT /tray-policy-scripts/{id} | internal | Update a self-service catalogue entry |
DELETE /tray-policy-scripts/{id} | internal | Remove a self-service catalogue entry |
GET /tray-script-runs | internal | List tray self-service script runs |
POST /tray-script-runs/{id}/approve | internal | Approve a pending self-service run |
POST /tray-script-runs/{id}/deny | internal | Deny a pending self-service run |
Virtualization
Hypervisor hosts and VM actions
| Endpoint | Tier | What it does |
|---|---|---|
GET /virtualization/hosts | internal | List virtualization hosts |
GET /virtualization/hosts/{id} | internal | Get a virtualization host |
GET /virtualization/hosts/{id}/vms | internal | List VMs on a host |
GET /virtualization/vms/{id} | internal | Get a virtual machine |
POST /virtualization/vms/{id}/action | internal | Dispatch a VM lifecycle action |
GET /virtualization/vms/{id}/stats | internal | Get live stats for a VM |
Licenses
Software licence tracking and assignment
| Endpoint | Tier | What it does |
|---|---|---|
GET /clients/{clientID}/licenses | stable | List licences assigned to a client |
GET /licenses | stable | List software licences |
POST /licenses | stable | Create a software licence |
POST /licenses/import | stable | Import licences from CSV |
GET /licenses/summary | stable | Licence usage summary |
GET /licenses/{licenseID} | stable | Get a software licence |
PUT /licenses/{licenseID} | stable | Update a software licence |
DELETE /licenses/{licenseID} | stable | Delete a software licence |
GET /licenses/{licenseID}/assignments | stable | List agent assignments for a licence |
POST /licenses/{licenseID}/assignments | stable | Assign an agent to a licence |
DELETE /licenses/{licenseID}/assignments/{agentID} | stable | Remove an agent from a licence |
POST /licenses/{licenseID}/match | stable | Re-run auto-matching for a licence |
Backups
Backup endpoint mapping and plans
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentId}/backups | internal | Get backup protection state for an agent |
GET /backups/endpoints | internal | List MSP360 backup endpoints |
PUT /backups/endpoints/{id}/map | internal | Map an MSP360 endpoint to an agent |
GET /backups/plans | internal | List MSP360 backup plans |
GET /integrations/msp360 | internal | Get MSP360 connection status |
DELETE /integrations/msp360 | internal | Disconnect MSP360 |
POST /integrations/msp360/connect | internal | Connect MSP360 (validate and store credentials) |
PATCH /integrations/msp360/preferences | internal | Update MSP360 alert preferences |
POST /integrations/msp360/sync | internal | Trigger an immediate MSP360 sync |
Endpoint Security
Per-agent endpoint security state
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{id}/bitdefender | internal | Get Bitdefender state for an agent |
POST /agents/{id}/bitdefender/install | internal | Dispatch a Bitdefender install to an agent |
Patches
Patch policies, scans and managed updates
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/managed-updates | internal | Get managed-updates state for an agent |
PUT /agents/{agentID}/managed-updates | internal | Set the agent-level managed-updates override |
POST /agents/{agentID}/managed-updates/reapply | internal | Force re-push of the managed-updates control to an agent |
GET /agents/{agentID}/patch-policy | internal | Get the patch policy assigned to an agent |
PUT /agents/{agentID}/patch-policy | internal | Assign or clear the patch policy for an agent |
GET /agents/{agentID}/patches | internal | Get patch install history for an agent |
GET /agents/{agentID}/patches/available | internal | List cached available patches for an agent |
POST /agents/{agentID}/patches/install | internal | Queue patch installation on an agent |
GET /agents/{agentID}/patches/install-status | internal | Get progress of the latest patch install job |
POST /agents/{agentID}/patches/scan | internal | Run a live patch scan on an agent |
GET /clients/{clientID}/managed-updates | internal | Get managed-updates state for a client |
PUT /clients/{clientID}/managed-updates | internal | Set the client-level managed-updates override |
GET /clients/{clientID}/patch-policy | internal | Get the patch policy assigned to a client |
PUT /clients/{clientID}/patch-policy | internal | Assign or clear the patch policy for a client |
GET /organization/managed-updates | internal | Get org-wide managed-updates state and compliance summary |
PUT /organization/managed-updates | internal | Set the org-wide managed-updates default |
GET /organization/patch-auto-install | internal | Get the org's auto-install safety valves |
PUT /organization/patch-auto-install | internal | Update the org's auto-install safety valves |
GET /organization/patch-policy | internal | Get the org-wide default patch policy |
PUT /organization/patch-policy | internal | Assign or clear the org-wide default patch policy |
GET /patch-dispatch-log | internal | List recent patch-dispatcher decisions |
GET /patch-policies | internal | List patch policies |
POST /patch-policies | internal | Create a patch policy |
GET /patch-policies/{id} | internal | Get a patch policy |
PUT /patch-policies/{id} | internal | Update a patch policy |
DELETE /patch-policies/{id} | internal | Delete a patch policy |
GET /sites/{siteID}/managed-updates | internal | Get managed-updates state for a site |
PUT /sites/{siteID}/managed-updates | internal | Set the site-level managed-updates override |
GET /sites/{siteID}/patch-policy | internal | Get the patch policy assigned to a site |
PUT /sites/{siteID}/patch-policy | internal | Assign or clear the patch policy for a site |
Agent Operations
Live agent operations - processes, services, registry, power
| Endpoint | Tier | What it does |
|---|---|---|
GET /agent-versions/current | internal | Get current agent version metadata (public) |
GET /agent-versions/current/checksum | internal | Get current agent binary checksum (public, text/plain) |
GET /agent-versions/current/download | internal | Download the current agent binary (public) |
HEAD /agent-versions/current/download | internal | Probe the current agent binary download (public) |
GET /agent-versions/{id}/public-download | internal | Download a specific agent version binary (public) |
GET /agents/{agentID}/bitlocker-keys | internal | Reveal stored BitLocker recovery keys for an agent |
GET /agents/{agentID}/eventlog | internal | Query event logs on an agent (live) |
GET /agents/{agentID}/processes | internal | List running processes on an agent (live) |
POST /agents/{agentID}/processes/{pid}/kill | internal | Kill a process on an agent |
GET /agents/{agentID}/registry | internal | Browse a Windows registry path on an agent |
POST /agents/{agentID}/registry | internal | Create a registry key or value on an agent |
PUT /agents/{agentID}/registry | internal | Modify a registry value on an agent |
DELETE /agents/{agentID}/registry | internal | Delete a registry key or value on an agent |
GET /agents/{agentID}/services | internal | List services on an agent (live) |
POST /agents/{agentID}/services/{name}/action | internal | Start, stop, or restart a service on an agent |
POST /agents/{agentID}/trigger-update | internal | Trigger a self-update check on a single agent |
POST /agents/{id}/scheduled-reboot | internal | Schedule a delayed reboot on an agent |
POST /agents/{id}/shutdown | internal | Shut down an agent's endpoint |
POST /agents/{id}/uninstall | internal | Uninstall an agent and delete its record |
GET /settings/agent-power | internal | Get agent power action messages |
PUT /settings/agent-power | internal | Update agent power action messages |
Terminal
Remote terminal WebSocket
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/terminal | internal | Open a live-terminal WebSocket relay to an agent |
Remote Desktop
Remote desktop and OpsMerge Connect configuration
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{agentID}/remote-desktop | internal | Open a remote-desktop WebSocket relay to an agent |
GET /agents/{agentID}/rustdesk | internal | Get RustDesk connection credentials for an agent |
GET /agents/{agentID}/rustdesk-config | internal | Resolve the effective RustDesk config for an agent |
GET /rustdesk-config/{scopeType}/{scopeID} | internal | Get the RustDesk config row for a scope |
PUT /rustdesk-config/{scopeType}/{scopeID} | internal | Upsert the RustDesk config for a scope |
DELETE /rustdesk-config/{scopeType}/{scopeID} | internal | Delete the RustDesk config row for a scope |
GET /settings/rustdesk | internal | Get RustDesk server settings and org approval defaults |
PUT /settings/rustdesk | internal | Update the org's RustDesk approval defaults |
API Keys
API key management and scope catalogue (session-only)
| Endpoint | Tier | What it does |
|---|---|---|
GET /api-keys | stable | List API keys |
POST /api-keys | stable | Create an API key |
GET /api-keys/scopes | stable | List the API key scope catalogue |
DELETE /api-keys/{id} | stable | Revoke an API key |
AI
AI-assisted ticket features
| Endpoint | Tier | What it does |
|---|---|---|
POST /ai/scripts | internal | Generate or improve a script with AI |
POST /psa/ai/tickets/{ticket_id}/draft-reply | internal | Generate an AI draft reply |
POST /psa/ai/tickets/{ticket_id}/sentiment | internal | Score ticket sentiment |
POST /psa/ai/tickets/{ticket_id}/suggest-category | internal | Suggest ticket categories (AI) |
POST /psa/ai/tickets/{ticket_id}/summary | internal | Summarise a ticket (AI) |
GET /settings/ai | internal | Get AI script-generation settings |
PUT /settings/ai | internal | Update AI script-generation settings |
Chat
Technician-to-user chat sessions
| Endpoint | Tier | What it does |
|---|---|---|
POST /agents/{agentID}/chat-invite | internal | Invite an end user to chat |
GET /chat-sessions/{id} | internal | Get a chat session |
POST /chat-sessions/{id}/close | internal | Close a chat session |
POST /chat-sessions/{id}/messages | internal | Send a chat message |
GET /chat-sessions/{id}/stream | internal | Stream chat session events (WebSocket) |
Account
Own profile, preferences and auth tickets
| Endpoint | Tier | What it does |
|---|---|---|
POST /auth/http-ticket | internal | Issue a single-use HTTP iframe ticket |
GET /auth/me | internal | Get the authenticated user's profile |
POST /auth/ws-ticket | internal | Issue a single-use WebSocket auth ticket |
POST /bug-reports | internal | Submit a bug report |
GET /dashboard/summary | internal | Get the dashboard summary |
PATCH /users/me | internal | Update the current user |
GET /users/me/table-prefs/{key} | internal | Get table layout preferences |
PUT /users/me/table-prefs/{key} | internal | Save table layout preferences |
Platform Billing
OpsMerge subscription management (denied to API keys)
| Endpoint | Tier | What it does |
|---|---|---|
POST /billing/portal | internal | Create a Stripe Customer Portal session |
GET /billing/public-pricing | internal | Get public subscription pricing (public) |
POST /billing/tier-change/confirm | internal | Confirm a mid-cycle tier change |
GET /billing/tier-change/preview | internal | Preview a mid-cycle tier change |
DELETE /billing/tier-change/scheduled | internal | Cancel a scheduled tier change |
POST /billing/upgrade | internal | Create a Stripe Checkout session for upgrade |
Webhooks (Inbound)
Third-party webhook receivers with per-provider authentication
| Endpoint | Tier | What it does |
|---|---|---|
POST /integrations/bitdefender/push | internal | Bitdefender push event webhook |
POST /mdm/amapi/webhook | internal | Google AMAPI Pub/Sub push webhook |
POST /mdm/apple/checkin | internal | Apple MDM CheckIn endpoint |
POST /mdm/apple/server | internal | Apple MDM CommandResults endpoint |
GET /mdm/connect/amapi/redirect | internal | AMAPI enterprise-signup callback redirect |
POST /pax8/webhook/{token} | internal | Pax8 webhook |
POST /psa/billing/webhook/platform | internal | Stripe platform billing webhook |
POST /psa/email/hyvor/webhook | internal | Hyvor Relay delivery webhook |
POST /psa/email/webhook | internal | Haraka inbound email webhook |
POST /qbo/webhook | internal | QuickBooks Online webhook |
POST /webhooks/threatdown/{secret} | internal | ThreatDown OneView webhook |
ThreatDown
ThreatDown/Malwarebytes OneView integration
| Endpoint | Tier | What it does |
|---|---|---|
GET /agents/{id}/threatdown | internal | Get the agent's ThreatDown endpoint state |
GET /agents/{id}/threatdown/detections | internal | List ThreatDown detections for an agent |
POST /agents/{id}/threatdown/detections/{detectionID}/ack | internal | Acknowledge a ThreatDown detection |
POST /agents/{id}/threatdown/install | internal | Install the ThreatDown agent on an endpoint |
GET /agents/{id}/threatdown/jobs/{jobID} | internal | Poll the status of a ThreatDown scan job |
GET /clients/{id}/threatdown | internal | Get the client's ThreatDown configuration |
PUT /clients/{id}/threatdown | internal | Update the client's ThreatDown configuration |
POST /clients/{id}/threatdown/create-site | internal | Create a OneView site for the client |
POST /clients/{id}/threatdown/match | internal | Auto-match the client to a OneView site by name |
GET /clients/{id}/threatdown/subscription | internal | Get the client's OneView site subscription |
POST /clients/{id}/threatdown/subscription | internal | Assign an initial subscription to the client's site |
PUT /clients/{id}/threatdown/subscription | internal | Replace the full subscription list on the client's site |
POST /clients/{id}/threatdown/subscription/extend-trial | internal | Extend the trial subscription on the client's site |
GET /settings/threatdown | internal | Get org ThreatDown (OneView) settings |
PUT /settings/threatdown | internal | Update org ThreatDown settings |
POST /threatdown/detections/ack-bulk | internal | Acknowledge multiple ThreatDown detections |
GET /threatdown/detections/unacked | internal | List unacknowledged ThreatDown detections (org-wide) |
PUT /threatdown/endpoints/{id}/link | internal | Link or unlink a ThreatDown endpoint to an RMM agent |
POST /threatdown/rematch-unmatched | internal | Re-run agent matching for unmatched ThreatDown endpoints |
POST /threatdown/scan/{agentID} | internal | Trigger a ThreatDown threat scan on an agent |
GET /threatdown/sites | internal | List OneView sites available to the org |
GET /threatdown/subscriptions/availability | internal | Get OneView subscription availability |
GET /threatdown/subscriptions/report | internal | Get the OneView subscriptions usage report |
POST /threatdown/sync | internal | Run a full ThreatDown sync now |
GET /threatdown/unmatched | internal | List ThreatDown endpoints with no linked agent |
Triggers
Event trigger configuration
| Endpoint | Tier | What it does |
|---|---|---|
GET /triggers | internal | List automation triggers |
POST /triggers | internal | Create a trigger |
GET /triggers/{id} | internal | Get a trigger |
PUT /triggers/{id} | internal | Update a trigger |
DELETE /triggers/{id} | internal | Delete a trigger |
GET /triggers/{id}/history | internal | List a trigger's execution history |
POST /triggers/{id}/test | internal | Test-fire a trigger |
Compliance
Compliance scores and retention policies
| Endpoint | Tier | What it does |
|---|---|---|
GET /compliance/agents/{agentID}/score | internal | Get the compliance score for one agent |
GET /compliance/clients/{clientID}/score | internal | Get the aggregate compliance score for a client |
GET /compliance/score | internal | Get compliance scores for every client in the org |
GET /retention-policies | internal | List data retention policies |
PUT /retention-policies/{id} | internal | Update a retention policy |
Anomaly Detection
Anomaly detection findings and config
| Endpoint | Tier | What it does |
|---|---|---|
GET /anomaly/events | internal | List anomaly events |
GET /anomaly/settings | internal | List anomaly detection settings |
PUT /anomaly/settings/{checkType} | internal | Update anomaly settings for one check type |
GET /anomaly/timeline | internal | Get the anomaly alert timeline histogram |
Platform Admin
Platform-operator endpoints (not tenant-facing)
| Endpoint | Tier | What it does |
|---|---|---|
GET /admin/boe-base-rates | internal | List Bank of England base rates |
POST /admin/boe-base-rates | internal | Upsert a Bank of England base rate |
DELETE /admin/boe-base-rates | internal | Delete a Bank of England base rate |