API endpoint reference
Every API-key-callable endpoint in the OpsMerge API, grouped by feature area. (Inbound vendor webhooks, browser-only redirects, and the login/signup/password flows your app authenticates through are excluded — they exist, but a bearer API key isn't the caller.) 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):
curl -H "Authorization: Bearer om_your_api_key_here" \
https://app.opsmerge.cloud/api/v1/auth/me
Each endpoint carries a stability tier: stable endpoints are the public API proper (6 months' notice before breaking changes), endpoints are recent and may still change, and 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /auth/device-sessions | | List my device sessions |
POST /auth/device-sessions | | Register a device session |
POST /auth/device-sessions/exchange | | Exchange a device refresh token for a bearer token |
DELETE /auth/device-sessions/{id} | | Revoke a device session |
POST /auth/device-sessions/{id}/push-token | | Register a mobile push token |
DELETE /auth/device-sessions/{id}/push-token | | Unregister a mobile push token |
GET /auth/push-preferences | | Get my mobile push preferences |
PUT /auth/push-preferences | | Update my mobile push preferences |
POST /push/test | | Send a test push notification to my devices |
MFA
Multi-factor authentication (TOTP)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
POST /mfa/disable | | Disable MFA for the current user |
POST /mfa/setup | | Begin TOTP MFA setup |
GET /mfa/status | | Get MFA status for the current user |
POST /mfa/verify-setup | | Verify a TOTP code to complete MFA setup |
SSO
OpenID Connect Single Sign-On
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /sso/providers | | List SSO providers (admin) |
POST /sso/providers | | Create an SSO provider |
PUT /sso/providers/{id} | | Update an SSO provider |
DELETE /sso/providers/{id} | | Delete an SSO provider |
Users
User account management
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /organizations | | List all organizations (platform admin) |
POST /organizations | | Create an organization (platform admin) |
GET /organizations/{id} | | Get an organization by ID (platform admin) |
PUT /organizations/{id} | | Update an organization (platform admin) |
Clients
Client management within an organization
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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 | | Rotate NATS credentials for every agent in the tenant |
POST /agents/move | | Move agents to another site (bulk) |
POST /agents/register | stable | Register a new agent (called by the agent binary) |
GET /agents/{agentID}/forecasts | | Get capacity forecasts for an agent |
GET /agents/{agentID}/history | | Get unified activity history for an agent |
POST /agents/{agentID}/log-level | | Set the agent's log level (optionally time-boxed) |
PUT /agents/{agentID}/primary-contact | | Set or clear the agent's primary contact |
GET /agents/{agentID}/recent-users | | 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 | | 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 | | Rotate one agent's NATS credentials |
Checks
Health check management and results
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/effective-policy | | The policy currently in effect for an agent |
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}/app-settings | | Get a policy's App Management schedule/settings |
PUT /policies/{id}/app-settings | | Update a policy's App Management schedule/settings |
GET /policies/{id}/apps | | List desired-state apps on a policy |
POST /policies/{id}/apps | | Add a desired-state app to a policy |
POST /policies/{id}/apps/batch | | Add multiple desired-state apps to a policy at once |
GET /policies/{id}/checks | stable | List check templates in a policy |
POST /policies/{id}/checks | stable | Add a check template to a policy |
POST /policies/{id}/duplicate | stable | Duplicate a policy |
GET /policies/{id}/groups | | Smart groups that apply this 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}/apps/{appID} | | Update a desired-state app on a policy |
DELETE /policies/{policyID}/apps/{appID} | | Remove a desired-state app from 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /alert-templates | stable | List alert templates |
POST /alert-templates | stable | Create an alert template |
GET /alert-templates/{id} | stable | Get an alert template |
PUT /alert-templates/{id} | stable | Update an alert template |
DELETE /alert-templates/{id} | stable | Delete an alert template |
POST /alert-templates/{id}/test | stable | Send a test notification through one channel of 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/notifications | | List curated PSA notifications |
GET /psa/notifications/{system_key} | | Get one curated notification |
PUT /psa/notifications/{system_key} | | Update a curated notification |
GET /settings/notifications | | Get notification settings (SMTP, Twilio, Slack, Teams, Discord) |
PUT /settings/notifications | | Update channel webhook defaults (Slack, Teams, Discord) |
POST /settings/notifications/test/discord | | Send a test notification to the default Discord webhook |
POST /settings/notifications/test/slack | | Send a test notification to the default Slack webhook |
POST /settings/notifications/test/teams | | Send a test notification to the default Teams webhook |
GET /settings/smtp | | Get SMTP configuration |
PUT /settings/smtp | | Update SMTP configuration |
POST /settings/smtp/test | | Send a test email via SMTP |
Reports
Report templates, data queries, generation, and scheduling
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /report-history | | List report generation history |
GET /report-history/{id} | | Get one report history entry (with rendered HTML) |
DELETE /report-history/{id} | | Delete a report history entry |
GET /report-history/{id}/download | | Download a generated report |
GET /report-queries | | List report data queries |
POST /report-queries | | Create a report data query |
GET /report-queries/models | | List queryable models and operators |
POST /report-queries/test | | Test an unsaved (draft) data query |
GET /report-queries/{id} | | Get a report data query |
PUT /report-queries/{id} | | Update a report data query |
DELETE /report-queries/{id} | | Delete a report data query |
POST /report-queries/{id}/duplicate | | Duplicate a saved data query |
POST /report-queries/{id}/test | | Test a saved data query and return sample results |
GET /report-schedules | | List report schedules |
POST /report-schedules | | Create a report schedule |
GET /report-schedules/{id} | | Get a report schedule |
PUT /report-schedules/{id} | | Update a report schedule |
DELETE /report-schedules/{id} | | Delete a report schedule |
POST /report-schedules/{id}/run-now | | Run a report schedule immediately |
POST /report-schedules/{id}/test-send | | Send a test report to one address |
GET /report-templates | | List report templates |
POST /report-templates | | Create a report template |
POST /report-templates/import | | Import a report template from an export envelope |
GET /report-templates/{id} | | Get a report template |
PUT /report-templates/{id} | | Update a report template |
DELETE /report-templates/{id} | | Delete a report template |
POST /report-templates/{id}/duplicate | | Duplicate a report template |
GET /report-templates/{id}/export | | Export a report template as JSON |
POST /report-templates/{id}/preview | | Preview a rendered report template |
POST /report-templates/{id}/preview-data | | Preview a template with live query data |
POST /reports/{templateID}/generate | | Generate a report from a template |
Files
Remote file browser (browse, download, upload)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/files | | Browse files on an agent |
DELETE /agents/{agentID}/files | | Delete a file or directory on an agent |
POST /agents/{agentID}/files/copy | | Copy a file on an agent |
POST /agents/{agentID}/files/download | | Download a file from an agent |
POST /agents/{agentID}/files/mkdir | | Create a directory on an agent |
POST /agents/{agentID}/files/move | | Move a file on an agent |
POST /agents/{agentID}/files/upload | | Upload a file to an agent |
Software
Software inventory
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/software | | List installed software on an agent |
POST /agents/{agentID}/software/scan | | Run a software inventory scan on an agent |
POST /inventory/refresh-all | | Refresh software + app inventory on all online agents |
GET /software | | List software across all agents (organization-wide) |
CodeSigning
Agent binary signing and Authenticode certificates
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /platform/authenticode | | Get platform Authenticode certificate status |
GET /settings/signing-key | | Get signing key status (public key only) |
POST /settings/signing-key | | Generate an Ed25519 signing key pair |
Distribution
Agent version management, updates, and installer generation
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agent-versions | | List uploaded agent versions |
POST /agent-versions/upload | | Upload a signed agent binary |
DELETE /agent-versions/{id} | | Delete an agent version |
GET /agent-versions/{id}/download | | Download an agent binary (authenticated) |
POST /agents/installer | | Generate a platform-specific installer script |
POST /agents/update | | Trigger a fleet-wide agent update (staged rollout) |
GET /agents/update-history | | Get agent update history |
GET /agents/update-status | | Get agent version distribution |
Security
Security settings, lockout management
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /settings/locked-accounts | | List locked accounts |
POST /settings/locked-accounts/{username}/unlock | | Unlock a locked account |
GET /settings/security | | Get security settings |
PUT /settings/security | | Update security settings |
CustomFields
Custom field definitions and values
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{id}/custom-fields | | Get custom field values for an agent |
PUT /agents/{id}/custom-fields | | Set custom field values for an agent |
GET /clients/{id}/custom-fields | | Get custom field values for a client |
PUT /clients/{id}/custom-fields | | Set custom field values for a client |
GET /custom-fields | | List custom field definitions |
POST /custom-fields | | Create a custom field definition |
PUT /custom-fields/{id} | | Update a custom field definition |
DELETE /custom-fields/{id} | | Delete a custom field definition |
GET /sites/{id}/custom-fields | | Get custom field values for a site |
PUT /sites/{id}/custom-fields | | Set custom field values for a site |
Notes
Agent notes
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{id}/notes | | List notes for an agent |
POST /agents/{id}/notes | | Add a note to an agent |
PUT /agents/{id}/notes/{noteID} | | Update an agent note |
DELETE /agents/{id}/notes/{noteID} | | Delete an agent note |
Audit
Audit log
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /audit-logs | | List audit logs for the current tenant |
GET /audit-logs/export | | Export audit logs (CSV or JSON) |
Tickets
PSA tickets, comments, attachments, watchers and triage
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/tickets | stable | List tickets |
POST /psa/tickets | stable | Create a ticket |
GET /psa/tickets/for-agent/{agentId} | stable | List tickets linked to an agent |
GET /psa/tickets/stats | stable | Ticket stats for the dashboard |
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}/links | stable | Link an agent (asset) to a ticket |
DELETE /psa/tickets/{id}/links/{linkId} | stable | Remove a related-entity link from a ticket |
POST /psa/tickets/{id}/merge | stable | Merge a ticket into another |
GET /psa/tickets/{id}/participants | stable | List ticket participants |
POST /psa/tickets/{id}/participants | stable | Add a ticket participant (CC) |
DELETE /psa/tickets/{id}/participants | stable | Remove a ticket participant |
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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/ticket_templates | | List ticket templates |
POST /psa/ticket_templates | | Create a ticket template |
PATCH /psa/ticket_templates/{id} | | Update a ticket template |
DELETE /psa/ticket_templates/{id} | | Delete a ticket template |
Canned Responses
Reusable reply snippets for ticket comments
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/canned_responses | | List canned responses |
POST /psa/canned_responses | | Create a canned response |
PATCH /psa/canned_responses/{id} | | Update a canned response |
DELETE /psa/canned_responses/{id} | | Delete a canned response |
POST /psa/canned_responses/{id}/preview | | Preview a rendered canned response |
Saved Filters
Per-user saved list filters
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/saved_filters | | List saved filters |
POST /psa/saved_filters | | Create a saved filter |
PATCH /psa/saved_filters/{id} | | Update a saved filter |
DELETE /psa/saved_filters/{id} | | Delete a saved filter |
Client contacts and portal linking
Full schemas and try-it →
| 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 |
POST /psa/contacts/{id}/portal-password | stable | Set a contact's client-portal password |
GET /psa/contacts/{id}/tickets | stable | List tickets raised by a contact |
Billing Services
PSA service catalogue and categories
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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 |
GET /psa/billing/contracts/{id}/invoice-recipients | stable | Preview invoice email recipients for a contract |
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 | Remove 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
Full schemas and try-it →
| 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-issue | stable | Bulk-issue draft invoices |
GET /psa/billing/invoices/bulk-issue/batches/{batchID} | stable | Poll an async bulk-issue batch |
POST /psa/billing/invoices/bulk-send | stable | Bulk-send invoices by email |
GET /psa/billing/invoices/bulk-send/batches/{batchID} | stable | Poll an async bulk-send batch |
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 | | 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 | | Re-enqueue the QuickBooks Online push |
POST /psa/billing/invoices/{id}/send | stable | Re-send the invoice-issued email (PDF attached) |
POST /psa/billing/invoices/{id}/void | stable | Void an invoice |
GET /psa/billing/run | | Billing run review (drafts grouped by client) |
Billing Settings
Tenant billing configuration, VAT, branding and lookups
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/billing/companies-house/lookup | | Look up a company by number |
GET /psa/billing/companies-house/search | | Search Companies House |
GET /psa/billing/email-templates | | List client-facing billing email templates |
PUT /psa/billing/email-templates/{type} | | Update one email type's wording overrides |
GET /psa/billing/invoice-branding | | Get invoice branding settings |
PATCH /psa/billing/invoice-branding | | Update invoice branding settings |
POST /psa/billing/invoice-branding/logo | | Upload the invoice logo |
DELETE /psa/billing/invoice-branding/logo | | Remove the invoice logo |
GET /psa/billing/invoice-branding/preview | | Preview a sample invoice PDF |
GET /psa/billing/invoice-number | | Get the next invoice number |
PUT /psa/billing/invoice-number | | Set the next invoice number (forward-only) |
GET /psa/billing/settings | | Get invoicing defaults |
PUT /psa/billing/settings | | 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 | | Get VAT settings |
PATCH /psa/billing/vat-settings | | Update VAT settings |
Time Tracking
Time entries, timers and timesheet workflow
Full schemas and try-it →
| 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
POST /kb/ai/generate | | Generate a draft KB article with AI |
GET /kb/articles | stable | List or search knowledge base articles |
POST /kb/articles | stable | Create a knowledge base article |
POST /kb/articles/backfill-embeddings | | Backfill semantic-search embeddings |
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 |
POST /kb/images | | Upload an image for use in KB article bodies |
GET /psa/ai/tickets/{ticket_id}/kb-suggestions | | Suggest related KB articles for a ticket |
Documents
Document storage, uploads and associations
Full schemas and try-it →
| 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
Full schemas and try-it →
| 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}/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 |
Agent Enrolment
Registration token lifecycle and installer downloads
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /installers/stub-download | | Download the single-EXE installer stub (public, token-authorised) |
PATCH /registration-tokens/{id} | | Extend (or shorten) a registration token's expiry |
DELETE /registration-tokens/{id} | | Revoke a registration token |
GET /sites/{id}/tokens | | List registration tokens for a site |
Quotes
PSA quotes, sections, items and lifecycle
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/quote-settings | | Get org-level quote settings |
PATCH /psa/quote-settings | | Update org-level quote settings |
GET /psa/quotes | | List quotes |
POST /psa/quotes | | Create a draft quote |
GET /psa/quotes/{id} | | Get a quote with sections, items and signature |
PATCH /psa/quotes/{id} | | Update a quote header |
DELETE /psa/quotes/{id} | | Delete a draft quote |
GET /psa/quotes/{id}/audit | | List the audit trail for a quote |
POST /psa/quotes/{id}/clear-needs-info | | Clear the needs_info flag on a quote |
POST /psa/quotes/{id}/finalise | | Finalise a signed quote (invoice and/or contract) |
POST /psa/quotes/{id}/items | | Add a line item to a quote |
PATCH /psa/quotes/{id}/items/{item_id} | | Update a quote line item |
DELETE /psa/quotes/{id}/items/{item_id} | | Delete a quote line item |
POST /psa/quotes/{id}/manual-accept | | Manually mark a quote accepted |
POST /psa/quotes/{id}/manual-decline | | Manually mark a quote declined |
GET /psa/quotes/{id}/messages | | List the reply thread for a quote |
POST /psa/quotes/{id}/messages | | Send a reply on the quote thread |
GET /psa/quotes/{id}/pdf | | Download the quote PDF |
POST /psa/quotes/{id}/revise | | Create a new revision of a quote |
POST /psa/quotes/{id}/sections | | Add a section to a quote |
PATCH /psa/quotes/{id}/sections/{section_id} | | Update a quote section |
DELETE /psa/quotes/{id}/sections/{section_id} | | Delete a quote section |
POST /psa/quotes/{id}/send | | Send (or resend) a quote to the customer |
POST /psa/quotes/{id}/withdraw | | Withdraw a quote |
Quote Templates
Reusable quote templates and instantiation
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/quote-templates | | List quote templates |
POST /psa/quote-templates | | Create a quote template |
GET /psa/quote-templates/{id} | | Get a quote template with sections and items |
PATCH /psa/quote-templates/{id} | | Update a quote template |
DELETE /psa/quote-templates/{id} | | Delete a quote template |
POST /psa/quote-templates/{id}/instantiate | | Instantiate a template into a new draft quote |
POST /psa/quote-templates/{id}/items | | Add an item to a quote template |
PATCH /psa/quote-templates/{id}/items/{item_id} | | Update a quote template item |
DELETE /psa/quote-templates/{id}/items/{item_id} | | Delete a quote template item |
POST /psa/quote-templates/{id}/sections | | Add a section to a quote template |
PATCH /psa/quote-templates/{id}/sections/{section_id} | | Update a quote template section |
DELETE /psa/quote-templates/{id}/sections/{section_id} | | Delete a quote template section |
Quote Approval
Quote approval chains and decisions
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/quote-approval-chains | | List quote approval chains |
POST /psa/quote-approval-chains | | Create a quote approval chain |
GET /psa/quote-approval-chains/{id} | | Get an approval chain with its steps |
PATCH /psa/quote-approval-chains/{id} | | Update an approval chain |
DELETE /psa/quote-approval-chains/{id} | | Delete an approval chain |
POST /psa/quote-approval-chains/{id}/steps | | Add a step to an approval chain |
PATCH /psa/quote-approval-chains/{id}/steps/{step_id} | | Update an approval chain step |
DELETE /psa/quote-approval-chains/{id}/steps/{step_id} | | Delete an approval chain step |
GET /psa/quotes/{id}/approval-steps | | List the per-quote approval run state |
POST /psa/quotes/{id}/approve | | Approve a quote awaiting approval |
POST /psa/quotes/{id}/reject | | Reject a quote awaiting approval |
POST /psa/quotes/{id}/submit-for-approval | | Submit a draft quote for approval |
Projects
PSA projects, phases, milestones, risks and approvals
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/projects | | List projects |
POST /psa/projects | | Create a project |
POST /psa/projects/from-template | | Instantiate a project from a template |
GET /psa/projects/portfolio | | Portfolio rollup across all projects |
GET /psa/projects/{id} | | Get a project with phases and milestones |
PATCH /psa/projects/{id} | | Update a project |
DELETE /psa/projects/{id} | | Archive a project |
GET /psa/projects/{id}/approvals | | List approvals for a project |
POST /psa/projects/{id}/approvals | | Create an approval request |
POST /psa/projects/{id}/approvals/{approval_id}/decide | | Decide an approval |
GET /psa/projects/{id}/burn-rate | | Project burn-rate |
GET /psa/projects/{id}/dependencies | | List task dependencies for a project |
POST /psa/projects/{id}/dependencies | | Create a task dependency |
DELETE /psa/projects/{id}/dependencies/{dep_id} | | Delete a task dependency |
POST /psa/projects/{id}/discovery/scan | | Run a discovery scan |
GET /psa/projects/{id}/milestones | | List milestones for a project |
POST /psa/projects/{id}/milestones | | Create a milestone |
PATCH /psa/projects/{id}/milestones/{m_id} | | Update a milestone (may trigger billing) |
DELETE /psa/projects/{id}/milestones/{m_id} | | Delete a milestone |
GET /psa/projects/{id}/phases | | List phases for a project |
POST /psa/projects/{id}/phases | | Create a phase |
PATCH /psa/projects/{id}/phases/reorder | | Reorder all phases |
PATCH /psa/projects/{id}/phases/{phase_id} | | Update a phase |
DELETE /psa/projects/{id}/phases/{phase_id} | | Delete a phase |
GET /psa/projects/{id}/risks | | List RAID entries for a project |
POST /psa/projects/{id}/risks | | Create a RAID entry |
PATCH /psa/projects/{id}/risks/{risk_id} | | Update a RAID entry |
DELETE /psa/projects/{id}/risks/{risk_id} | | Delete a RAID entry |
POST /psa/projects/{id}/shift-tasks | | Bulk-shift task due dates |
Project Templates
Reusable project templates and versions
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/project-templates | | List project templates |
POST /psa/project-templates | | Create a project template |
GET /psa/project-templates/available-vars | | List template substitution variables |
POST /psa/project-templates/import-samples | | Import the sample template catalogue |
GET /psa/project-templates/{id} | | Get a project template with its current version |
PATCH /psa/project-templates/{id} | | Update template metadata |
DELETE /psa/project-templates/{id} | | Archive a project template |
PUT /psa/project-templates/{id}/payload | | Save a new template payload version |
GET /psa/project-templates/{id}/versions | | List template version history |
GET /psa/project-templates/{id}/versions/{version} | | Get one template version |
Products
Product catalogue and supplier SKU links
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/products | | List products |
POST /psa/products | | Create a product |
GET /psa/products/{id} | | Get a product |
PATCH /psa/products/{id} | | Update a product |
DELETE /psa/products/{id} | | Delete a product |
GET /psa/products/{id}/supplier-skus | | List a product's supplier SKU links |
POST /psa/products/{id}/supplier-skus | | Link a supplier SKU to a product |
DELETE /psa/products/{id}/supplier-skus/{link_id} | | Unlink a supplier SKU from a product |
Catalogue
Cross-supplier catalogue search
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/catalogue/search | | Search the unified product catalogue |
Suppliers
Suppliers and price-feed ingestion
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/suppliers | | List suppliers |
POST /psa/suppliers | | Create a supplier |
GET /psa/suppliers/{id} | | Get a supplier |
PATCH /psa/suppliers/{id} | | Update a supplier |
DELETE /psa/suppliers/{id} | | Delete a supplier |
GET /psa/suppliers/{id}/feed | | List a supplier's feed items |
POST /psa/suppliers/{id}/feed/ingest | | Ingest a previewed supplier CSV |
GET /psa/suppliers/{id}/feed/mappings | | List a supplier's CSV mapping presets |
POST /psa/suppliers/{id}/feed/mappings | | Save a CSV mapping preset |
DELETE /psa/suppliers/{id}/feed/mappings/{mid} | | Delete a CSV mapping preset |
POST /psa/suppliers/{id}/feed/preview | | Preview a supplier CSV upload |
Procurement
Procured item tracking
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/procured-items | | List client procured items |
POST /psa/procured-items | | Create a procured item |
GET /psa/procured-items/{id} | | Get a procured item |
PATCH /psa/procured-items/{id} | | Update a procured item |
DELETE /psa/procured-items/{id} | | Delete a procured item |
MDM
Mobile device management (beta, per-org flag)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /mdm/connections | | List MDM provider connections |
POST /mdm/connections/{provider}/callback | | Complete the AMAPI enterprise binding (connect leg 2) |
POST /mdm/connections/{provider}/connect | | Start the AMAPI enterprise binding (connect leg 1) |
POST /mdm/connections/{provider}/disconnect | | Disconnect the MDM provider (DESTRUCTIVE) |
POST /mdm/connections/{provider}/test | | Test the MDM provider connection |
GET /mdm/defaults | | Get hierarchy default policies |
PUT /mdm/defaults/org | | Set the org default policy |
PUT /mdm/defaults/site/{id} | | Set a site default policy |
GET /mdm/devices | | List MDM devices |
GET /mdm/devices/{id} | | Get an MDM device |
POST /mdm/devices/{id}/clear-lost | | Clear lost mode (recovery) |
GET /mdm/devices/{id}/commands | | List a device's command history |
POST /mdm/devices/{id}/commands | | Issue a device command |
POST /mdm/devices/{id}/commands/{cmdId}/cancel | | Cancel a sent device command |
GET /mdm/devices/{id}/events | | List a device's webhook events |
GET /mdm/devices/{id}/locations | | List a device's lost-mode GPS fixes |
PUT /mdm/devices/{id}/policy | | Assign a policy to a device |
POST /mdm/devices/{id}/report-lost | | Report a device lost |
GET /mdm/devices/{id}/security-events | | List a device's on-device security events |
POST /mdm/devices/{id}/sync | | Refresh an MDM device from its provider |
GET /mdm/enrolment-options | | Enrolment targeting options |
POST /mdm/enrolment-tokens | | Create a device enrolment token |
POST /mdm/enrolment-wifi | | Save an enrolment Wi-Fi network |
DELETE /mdm/enrolment-wifi/{id} | | Delete a saved enrolment Wi-Fi network |
POST /mdm/managed-play/web-token | | Mint a Managed Google Play web token |
GET /mdm/policies | | List MDM policies |
POST /mdm/policies | | Create an MDM policy |
GET /mdm/policies/{id} | | Get an MDM policy |
PUT /mdm/policies/{id} | | Update an MDM policy |
DELETE /mdm/policies/{id} | | Delete an MDM policy |
POST /mdm/policies/{id}/push | | Push a policy to the provider |
GET /organizations/{id}/mdm-enabled | | Get an organization's MDM beta flag |
PUT /organizations/{id}/mdm-enabled | | Set an organization's MDM beta flag |
CSAT
Customer satisfaction surveys and analytics
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /csat/{token} | | Load a CSAT survey landing page |
POST /csat/{token} | | Submit a CSAT survey response |
GET /psa/csat/aggregate | | CSAT aggregate metrics |
GET /psa/csat/responses | | List recent CSAT responses |
QBR
vCIO quarterly business review scorecards and roadmap
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/settings/qbr | | Get the org's review-term setting |
PUT /psa/settings/qbr | | Set the org's review-term setting |
PATCH /qbr/cards/{cardID} | | Update a roadmap card |
DELETE /qbr/cards/{cardID} | | Delete a roadmap card |
GET /qbr/clients/{clientID}/cards | | List a client's roadmap cards |
POST /qbr/clients/{clientID}/cards | | Add a roadmap card |
GET /qbr/clients/{clientID}/scorecard | | Compute and return a client's QBR scorecard |
GET /qbr/clients/{clientID}/share-link | | Get or create a client's share link |
DELETE /qbr/clients/{clientID}/share-link | | Revoke a client's share link |
POST /qbr/clients/{clientID}/share-link/rotate | | Rotate a client's share link |
GET /qbr/public/{token} | | Public client review view (no auth) |
POST /qbr/public/{token}/cards/{cardID}/select | | Client selects a card option (public, no auth) |
Asset Groups
Smart asset groups with filter DSL
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /asset-groups | | List asset groups |
POST /asset-groups | | Create an asset group |
GET /asset-groups/fields | | List queryable criteria fields |
POST /asset-groups/preview | | Preview criteria without saving |
POST /asset-groups/recompute-all | | Recompute every asset group |
GET /asset-groups/{id} | | Get an asset group |
PUT /asset-groups/{id} | | Update an asset group |
DELETE /asset-groups/{id} | | Delete an asset group |
POST /asset-groups/{id}/clone | | Clone an asset group |
GET /asset-groups/{id}/members | | List group members |
GET /asset-groups/{id}/policies | | Get the RMM policy a group applies |
PUT /asset-groups/{id}/policies | | Set the RMM policy a group applies |
POST /asset-groups/{id}/recompute | | Recompute group membership now |
Network Devices
SNMP network device inventory and polling
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /device-counts | | 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /clients/{clientID}/email-domains | | List a client's email domains |
POST /clients/{clientID}/email-domains | | Add an email domain to a client |
DELETE /clients/{clientID}/email-domains/{id} | | Remove an email domain from a client |
GET /psa/email/activity | | List email activity |
GET /psa/email/activity/summary | | Email activity summary |
GET /psa/email/activity/{id} | | Get email activity detail |
GET /psa/email/blocklist | | List blocklist entries |
POST /psa/email/blocklist | | Add blocklist entry |
DELETE /psa/email/blocklist/{id} | | Remove blocklist entry |
GET /psa/email/connected-mailboxes | | List connected mailboxes |
POST /psa/email/connected-mailboxes/callback | | Complete mailbox connect flow |
POST /psa/email/connected-mailboxes/connect | | Start mailbox connect flow |
PATCH /psa/email/connected-mailboxes/{id} | | Update connected mailbox settings |
DELETE /psa/email/connected-mailboxes/{id} | | Disconnect mailbox |
PSA Settings
Ticket categories, priority matrix, SLA plans and AI feature config
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
PATCH /psa/settings/ai/features | | Toggle AI features |
PATCH /psa/settings/ai/rate-limits | | Patch AI per-feature daily rate limits |
GET /psa/settings/ai/usage | | List AI usage metering rows |
GET /psa/settings/categories | | List ticket categories |
POST /psa/settings/categories | | Create a ticket category |
POST /psa/settings/categories/import | | Import a ticket-category taxonomy from CSV |
POST /psa/settings/categories/install-defaults | | Install the standard system-default taxonomy |
POST /psa/settings/categories/remove-defaults | | Remove the system-default categories (reverse of install) |
GET /psa/settings/categories/template | | Download the category-import CSV template |
PATCH /psa/settings/categories/{id} | | Update a ticket category |
DELETE /psa/settings/categories/{id} | | Delete a ticket category |
GET /psa/settings/categories/{id}/subtree | | List a category subtree |
GET /psa/settings/priority-matrix | | Get the 5x5 priority matrix |
POST /psa/settings/priority-matrix/reset | | Reset the priority matrix |
PUT /psa/settings/priority-matrix/{impact}/{urgency} | | Upsert a priority matrix cell |
DELETE /psa/settings/priority-matrix/{impact}/{urgency} | | Delete a priority matrix cell |
GET /psa/settings/sla-calendars | | List SLA calendars |
POST /psa/settings/sla-calendars | | Create an SLA calendar |
GET /psa/settings/sla-calendars/{id} | | Get an SLA calendar |
PATCH /psa/settings/sla-calendars/{id} | | Update an SLA calendar |
DELETE /psa/settings/sla-calendars/{id} | | Delete an SLA calendar |
GET /psa/settings/sla-plans | | List SLA plans |
POST /psa/settings/sla-plans | | Create an SLA plan |
GET /psa/settings/sla-plans/resolve | | Resolve the SLA plan for a hypothetical ticket |
GET /psa/settings/sla-plans/{id} | | Get an SLA plan |
PATCH /psa/settings/sla-plans/{id} | | Update an SLA plan |
DELETE /psa/settings/sla-plans/{id} | | Delete an SLA plan |
GET /psa/settings/ticket-type-forms | | List per-type ticket forms (merged view) |
GET /psa/settings/ticket-type-forms/defaults | | List platform-default ticket forms |
PUT /psa/settings/ticket-type-forms/{ticket_type} | | Upsert a tenant form override |
DELETE /psa/settings/ticket-type-forms/{ticket_type} | | Reset a form to the platform default |
GET /psa/settings/tickets | | Get org-wide ticket settings |
PUT /psa/settings/tickets | | Update org-wide ticket settings |
GET /psa/status | | Get PSA module status for the current tenant |
Ticket Rules
Ticket automation rules and dry-run
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/rules | | List automation rules |
POST /psa/rules | | Create an automation rule |
POST /psa/rules/dry-run | | Dry-run a rule definition |
GET /psa/rules/{id} | | Get a rule |
PATCH /psa/rules/{id} | | Update a rule |
DELETE /psa/rules/{id} | | Delete a rule |
GET /psa/rules/{id}/runs | | List rule runs (audit history) |
QuickBooks
QuickBooks Online accounting sync
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/integrations/qbo | | Get QuickBooks connection status |
DELETE /psa/integrations/qbo | | Disconnect QuickBooks |
POST /psa/integrations/qbo/authorize | | Start QuickBooks OAuth flow |
POST /psa/integrations/qbo/callback | | Complete QuickBooks OAuth flow |
POST /psa/integrations/qbo/create-from-local | | Push a local entity to QuickBooks |
POST /psa/integrations/qbo/link-local | | Link a local entity to an existing QuickBooks entity |
GET /psa/integrations/qbo/lookup-local | | Autocomplete local map targets (QuickBooks) |
GET /psa/integrations/qbo/pending-imports | | List QuickBooks pending imports |
PATCH /psa/integrations/qbo/pending-imports/{id} | | Decide a QuickBooks pending import |
GET /psa/integrations/qbo/preferences | | Get QuickBooks preferences |
PATCH /psa/integrations/qbo/preferences | | Update QuickBooks preferences |
POST /psa/integrations/qbo/sync | | Trigger a manual QuickBooks sync |
GET /psa/integrations/qbo/sync-history | | List QuickBooks sync history |
GET /psa/integrations/qbo/unmapped-local | | List local entities unmapped to QuickBooks |
FreeAgent
FreeAgent accounting sync
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/integrations/freeagent | | Get FreeAgent connection status |
DELETE /psa/integrations/freeagent | | Disconnect FreeAgent |
POST /psa/integrations/freeagent/authorize | | Start FreeAgent OAuth flow |
GET /psa/integrations/freeagent/bank-accounts | | List FreeAgent bank accounts |
POST /psa/integrations/freeagent/callback | | Complete FreeAgent OAuth flow |
POST /psa/integrations/freeagent/create-from-local | | Push a local client to FreeAgent |
GET /psa/integrations/freeagent/income-categories | | List FreeAgent income categories |
GET /psa/integrations/freeagent/lookup-local | | Autocomplete local map targets (FreeAgent) |
GET /psa/integrations/freeagent/pending-imports | | List FreeAgent pending imports |
PATCH /psa/integrations/freeagent/pending-imports/{id} | | Decide a FreeAgent pending import |
GET /psa/integrations/freeagent/preferences | | Get FreeAgent preferences |
PATCH /psa/integrations/freeagent/preferences | | Update FreeAgent preferences |
POST /psa/integrations/freeagent/sync | | Trigger a manual FreeAgent sync |
GET /psa/integrations/freeagent/sync-history | | List FreeAgent sync history |
GET /psa/integrations/freeagent/unmapped-local | | List local entities unmapped to FreeAgent |
Entra
Microsoft Entra contact sync
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/integrations/entra | | Get Entra connection status |
DELETE /psa/integrations/entra | | Disconnect Entra |
GET /psa/integrations/entra/authorize | | Start the Entra OAuth flow |
GET /psa/integrations/entra/callback | | Entra OAuth callback |
POST /psa/integrations/entra/connect | | Save Entra app credentials |
POST /psa/integrations/entra/sync | | Trigger an Entra contact sync |
Pax8
Pax8 marketplace sync
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/integrations/pax8 | | Get Pax8 connection status |
DELETE /psa/integrations/pax8 | | Disconnect Pax8 |
POST /psa/integrations/pax8/clients/{clientId}/unlink | | Unlink an OpsMerge client from its Pax8 company |
POST /psa/integrations/pax8/connect | | Connect Pax8 |
POST /psa/integrations/pax8/credentials | | Rotate Pax8 credentials |
POST /psa/integrations/pax8/lines/{lineId}/release | | Release a Pax8 subscription from its contract line |
GET /psa/integrations/pax8/linked | | List Pax8-linked clients |
GET /psa/integrations/pax8/lookup-local | | Typeahead lookup of local clients |
GET /psa/integrations/pax8/margins | | List Pax8 line margins (sell vs cost) |
GET /psa/integrations/pax8/pending-imports | | List the Pax8 pending-imports queue |
PATCH /psa/integrations/pax8/pending-imports/{id} | | Decide a Pax8 pending import |
PATCH /psa/integrations/pax8/preferences | | Update Pax8 preferences |
GET /psa/integrations/pax8/price-overrides | | List Pax8 per-contract sale-price overrides |
POST /psa/integrations/pax8/price-overrides/{lineId}/remove | | Remove a Pax8 sale-price override |
POST /psa/integrations/pax8/sync | | Trigger a Pax8 sync now |
GET /psa/integrations/pax8/sync-history | | List Pax8 sync history |
CIPP
CIPP tenant mapping and sync
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/integrations/cipp | | Get CIPP connection status |
DELETE /psa/integrations/cipp | | Disconnect CIPP |
POST /psa/integrations/cipp/connect | | Connect CIPP |
POST /psa/integrations/cipp/sync | | Trigger a CIPP contact sync |
GET /psa/integrations/cipp/tenants | | List CIPP tenant mappings |
POST /psa/integrations/cipp/tenants/auto-create | | Auto-create clients for unmapped CIPP tenants |
POST /psa/integrations/cipp/tenants/refresh | | Refresh the CIPP tenant list |
PUT /psa/integrations/cipp/tenants/{cippTenantId}/enabled | | Enable or disable sync for one CIPP tenant |
PUT /psa/integrations/cipp/tenants/{cippTenantId}/map | | Map a CIPP tenant to a client |
POST /psa/integrations/cipp/tenants/{cippTenantId}/sync | | Retry sync for one CIPP tenant |
GET /psa/integrations/cipp/unmapped-count | | Count unmapped CIPP tenants |
Distributors
Ingram, TD Synnex and Exertis supplier integrations
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/integrations/exertis | | Get Exertis connection |
POST /psa/integrations/exertis | | Create or update the Exertis connection |
DELETE /psa/integrations/exertis | | Disconnect Exertis |
POST /psa/integrations/exertis/catalog | | Pull the Exertis catalogue |
POST /psa/integrations/exertis/test | | Test the Exertis connection |
GET /psa/integrations/ingram | | Get Ingram Micro connection |
POST /psa/integrations/ingram | | Create or update the Ingram Micro connection |
DELETE /psa/integrations/ingram | | Disconnect Ingram Micro |
GET /psa/integrations/ingram/catalog | | Search the Ingram catalogue |
POST /psa/integrations/ingram/pa | | Ingram price and availability lookup |
POST /psa/integrations/ingram/test | | Test the Ingram connection |
GET /psa/integrations/tdsynnex | | Get TD Synnex connection |
POST /psa/integrations/tdsynnex | | Create or update the TD Synnex connection |
DELETE /psa/integrations/tdsynnex | | Disconnect TD Synnex |
POST /psa/integrations/tdsynnex/pa | | TD Synnex price and availability lookup |
POST /psa/integrations/tdsynnex/test | | Test the TD Synnex connection |
Bitdefender
Bitdefender GravityZone integration (bring-your-own-tenant)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /clients/{client_id}/bitdefender/toggle | | Get the per-client Bitdefender billing toggle |
PUT /clients/{client_id}/bitdefender/toggle | | Set the per-client Bitdefender billing toggle |
GET /integrations/bitdefender | | Get Bitdefender connection status |
DELETE /integrations/bitdefender | | Disconnect Bitdefender |
GET /integrations/bitdefender/clients/{client_id}/endpoints | | List Bitdefender endpoints for a client |
POST /integrations/bitdefender/clients/{client_id}/modules | | Deploy Bitdefender modules across a client's endpoints |
GET /integrations/bitdefender/companies | | List provisioned Bitdefender companies |
GET /integrations/bitdefender/companies/{client_id} | | Get the Bitdefender company for one client |
GET /integrations/bitdefender/companies/{client_id}/addons | | Get a client's Bitdefender add-on toggle states |
PUT /integrations/bitdefender/companies/{client_id}/addons | | Toggle Bitdefender add-ons for a client |
POST /integrations/bitdefender/connect | | Connect Bitdefender GravityZone |
GET /integrations/bitdefender/costs | | List Bitdefender module cost rows |
PUT /integrations/bitdefender/costs | | Upsert a Bitdefender module cost row |
DELETE /integrations/bitdefender/costs/{module_key} | | Delete a Bitdefender module cost row |
GET /integrations/bitdefender/defaults | | Get Bitdefender provisioning defaults |
PUT /integrations/bitdefender/defaults | | Save Bitdefender provisioning defaults |
DELETE /integrations/bitdefender/endpoints/{id} | | Remove a Bitdefender endpoint (uninstall + delete) |
GET /integrations/bitdefender/incidents/{incident_id} | | Get one Bitdefender incident |
GET /integrations/bitdefender/orphans | | List orphaned GravityZone endpoints |
GET /integrations/bitdefender/policies | | List Bitdefender template policies |
POST /integrations/bitdefender/provision/{client_id} | | Provision a Bitdefender company for one client |
GET /integrations/bitdefender/push/health | | Get Bitdefender push delivery stats |
POST /integrations/bitdefender/reconcile | | Run Bitdefender billing reconciliation now |
GET /integrations/bitdefender/reports | | List Bitdefender reports |
GET /integrations/bitdefender/reports/{report_id}/download | | Get Bitdefender report download links |
POST /integrations/bitdefender/test | | Test Bitdefender credentials |
GET /integrations/bitdefender/usage | | List Bitdefender usage snapshots |
GET /integrations/bitdefender/usage/clients/{client_id} | | List Bitdefender usage snapshots for one client |
Telecom
Dial 9 telecom billing (EU cell only)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/billing/dial9/config | | Get Dial 9 configuration |
PUT /psa/billing/dial9/config | | Save Dial 9 configuration |
POST /psa/billing/dial9/invoices/{id}/append-lines | | Append Dial 9 telecom lines to a draft invoice |
POST /psa/billing/dial9/keypair | | Generate a Dial 9 SFTP keypair |
GET /psa/billing/dial9/numbers | | List Dial 9 DID inventory |
PATCH /psa/billing/dial9/numbers/{id} | | Assign a Dial 9 number |
POST /psa/billing/dial9/peek-host-key | | Peek (and optionally pin) the Dial 9 SFTP host key |
GET /psa/billing/dial9/quarantine | | List open CDR quarantine rows |
POST /psa/billing/dial9/quarantine/{id}/resolve | | Resolve a CDR quarantine row |
POST /psa/billing/dial9/sync | | Trigger a Dial 9 sync now |
GET /psa/billing/dial9/tariffs | | List Dial 9 tariffs |
PATCH /psa/billing/dial9/tariffs/{id} | | Set a Dial 9 tariff markup override |
GET /psa/billing/dial9/units | | List Dial 9 units |
PATCH /psa/billing/dial9/units/{id} | | Assign a Dial 9 unit to a client |
Client Portal
End-customer portal (session-bound, not an integration surface)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /portal/assets | | List the caller's assets (portal) |
GET /portal/assets/{id} | | Get a single asset (portal) |
GET /portal/billing/invoices | | List the contact's client invoices (portal) |
GET /portal/billing/invoices/{id} | | Get invoice detail (portal) |
GET /portal/billing/invoices/{id}/pay | | Get the pay-now URL for an invoice (portal) |
GET /portal/billing/invoices/{id}/pdf | | Download an invoice PDF (portal) |
GET /portal/billing/payments | | List the contact's client payment history (portal) |
GET /portal/branding | | Get portal branding (contact-facing) |
GET /portal/dashboard | | Client-scoped dashboard summary (portal) |
GET /portal/documents | | List documents (portal) |
POST /portal/documents/confirm-upload | | Confirm a presigned document upload (portal) |
POST /portal/documents/presigned-upload | | Presign a document upload (portal) |
DELETE /portal/documents/{id} | | Delete an own-uploaded document (portal) |
GET /portal/documents/{id}/download | | Get a presigned download URL for a document (portal) |
GET /portal/kb/articles | | List or search knowledge base articles (portal) |
GET /portal/kb/articles/{id} | | Get a knowledge base article (portal) |
GET /portal/kb/categories | | List knowledge base categories (portal) |
GET /portal/self | | Get own portal profile |
PATCH /portal/self | | Update own portal profile |
POST /portal/self/change-password | | Change own portal password |
PUT /portal/self/notification-preferences | | Replace own notification preferences |
GET /portal/tickets | | List own tickets (portal) |
POST /portal/tickets | | Create a ticket (portal) |
GET /portal/tickets/{id} | | Get own ticket detail (portal) |
GET /portal/tickets/{id}/attachments/{aid}/download | | Download a ticket attachment (portal) |
POST /portal/tickets/{id}/close | | Close own resolved ticket (portal) |
POST /portal/tickets/{id}/comments | | Add a comment to own ticket (portal) |
GET /public/kb/articles | | List or search public KB articles (unauthenticated help centre) |
GET /public/kb/articles/{slug} | | Get one public KB article by slug (unauthenticated) |
GET /public/kb/categories | | Public KB category tree (unauthenticated) |
GET /public/kb/images/{id} | | Serve a KB article image (unauthenticated) |
GET /public/portal-branding | | Pre-auth portal branding by host (public, white-label login) |
Portal Branding
Tenant portal branding administration
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /settings/portal-branding | | Get portal branding settings (MSP admin) |
PUT /settings/portal-branding | | Update portal branding settings (MSP admin) |
POST /settings/portal-branding/logo | | Presign a portal logo upload (MSP admin) |
DELETE /settings/portal-branding/logo | | Clear the portal logo (MSP admin) |
GET /settings/portal-domains | | List custom portal domains (MSP admin) |
POST /settings/portal-domains | | Add a custom portal domain (MSP admin) |
GET /settings/portal-domains/{id} | | Get + refresh a custom portal domain (MSP admin) |
DELETE /settings/portal-domains/{id} | | Remove a custom portal domain (MSP admin) |
Tray
System tray app configuration and self-service script runs
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
PUT /agents/{agentID}/tray-enabled | | Toggle the tray app on a single agent |
GET /tray-configs | | List tray configs |
POST /tray-configs | | Create a tray config |
GET /tray-configs/resolve/{agentID} | | Resolve the effective tray config for an agent |
GET /tray-configs/{configID}/scripts | | List self-service scripts in a tray config |
POST /tray-configs/{configID}/scripts | | Add a script to a tray config catalogue |
GET /tray-configs/{id} | | Get a tray config |
PUT /tray-configs/{id} | | Update a tray config |
DELETE /tray-configs/{id} | | Delete a tray config |
GET /tray-notifications | | List tray notification history |
POST /tray-notifications | | Send a tray notification |
DELETE /tray-notifications/{id} | | Delete a tray notification record |
PUT /tray-policy-scripts/{id} | | Update a self-service catalogue entry |
DELETE /tray-policy-scripts/{id} | | Remove a self-service catalogue entry |
GET /tray-script-runs | | List tray self-service script runs |
POST /tray-script-runs/{id}/approve | | Approve a pending self-service run |
POST /tray-script-runs/{id}/deny | | Deny a pending self-service run |
Virtualization
Hypervisor hosts and VM actions
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /virtualization/hosts | | List virtualization hosts |
GET /virtualization/hosts/{id} | | Get a virtualization host |
GET /virtualization/hosts/{id}/vms | | List VMs on a host |
GET /virtualization/vms/{id} | | Get a virtual machine |
POST /virtualization/vms/{id}/action | | Dispatch a VM lifecycle action |
GET /virtualization/vms/{id}/stats | | Get live stats for a VM |
Licenses
Software licence tracking and assignment
Full schemas and try-it →
| 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentId}/backups | | Get backup protection state for an agent |
GET /backups/endpoints | | List MSP360 backup endpoints |
PUT /backups/endpoints/{id}/map | | Map an MSP360 endpoint to an agent |
GET /backups/plans | | List MSP360 backup plans |
GET /integrations/msp360 | | Get MSP360 connection status |
DELETE /integrations/msp360 | | Disconnect MSP360 |
POST /integrations/msp360/connect | | Connect MSP360 (validate and store credentials) |
PATCH /integrations/msp360/preferences | | Update MSP360 alert preferences |
POST /integrations/msp360/sync | | Trigger an immediate MSP360 sync |
Endpoint Security
Per-agent endpoint security state
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{id}/bitdefender | | Get Bitdefender state for an agent |
POST /agents/{id}/bitdefender/install | | Dispatch a Bitdefender install to an agent |
POST /agents/{id}/bitdefender/modules | | Reconfigure Bitdefender modules on one agent's endpoint |
Patches
Patch policies, scans and managed updates
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/managed-updates | | Get managed-updates state for an agent |
PUT /agents/{agentID}/managed-updates | | Set the agent-level managed-updates override |
POST /agents/{agentID}/managed-updates/reapply | | Force re-push of the managed-updates control to an agent |
GET /agents/{agentID}/patch-policy | | Get the patch policy assigned to an agent |
PUT /agents/{agentID}/patch-policy | | Assign or clear the patch policy for an agent |
GET /agents/{agentID}/patches | | Get patch install history for an agent |
GET /agents/{agentID}/patches/available | | List cached available patches for an agent |
POST /agents/{agentID}/patches/install | | Queue patch installation on an agent |
GET /agents/{agentID}/patches/install-status | | Get progress of the latest patch install job |
POST /agents/{agentID}/patches/scan | | Run a live patch scan on an agent |
GET /clients/{clientID}/managed-updates | | Get managed-updates state for a client |
PUT /clients/{clientID}/managed-updates | | Set the client-level managed-updates override |
GET /clients/{clientID}/patch-policy | | Get the patch policy assigned to a client |
PUT /clients/{clientID}/patch-policy | | Assign or clear the patch policy for a client |
GET /organization/managed-updates | | Get org-wide managed-updates state and compliance summary |
PUT /organization/managed-updates | | Set the org-wide managed-updates default |
GET /organization/patch-auto-install | | Get the org's auto-install safety valves |
PUT /organization/patch-auto-install | | Update the org's auto-install safety valves |
GET /organization/patch-policy | | Get the org-wide default patch policy |
PUT /organization/patch-policy | | Assign or clear the org-wide default patch policy |
GET /patch-dispatch-log | | List recent patch-dispatcher decisions |
GET /patch-policies | | List patch policies |
POST /patch-policies | | Create a patch policy |
GET /patch-policies/{id} | | Get a patch policy |
PUT /patch-policies/{id} | | Update a patch policy |
DELETE /patch-policies/{id} | | Delete a patch policy |
GET /sites/{siteID}/managed-updates | | Get managed-updates state for a site |
PUT /sites/{siteID}/managed-updates | | Set the site-level managed-updates override |
GET /sites/{siteID}/patch-policy | | Get the patch policy assigned to a site |
PUT /sites/{siteID}/patch-policy | | Assign or clear the patch policy for a site |
Agent Operations
Live agent operations - processes, services, registry, power
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
HEAD /agent-versions/current/download | | Probe the current agent binary download (public) |
POST /agents/trigger-update-all | | Trigger a self-update check on all online agents |
GET /agents/{agentID}/bitlocker-keys | | Reveal stored BitLocker recovery keys for an agent |
GET /agents/{agentID}/eventlog | | Query event logs on an agent (live) |
GET /agents/{agentID}/processes | | List running processes on an agent (live) |
POST /agents/{agentID}/processes/{pid}/kill | | Kill a process on an agent |
GET /agents/{agentID}/registry | | Browse a Windows registry path on an agent |
POST /agents/{agentID}/registry | | Create a registry key or value on an agent |
PUT /agents/{agentID}/registry | | Modify a registry value on an agent |
DELETE /agents/{agentID}/registry | | Delete a registry key or value on an agent |
GET /agents/{agentID}/services | | List services on an agent (live) |
POST /agents/{agentID}/services/{name}/action | | Start, stop, or restart a service on an agent |
POST /agents/{agentID}/trigger-update | | Trigger a self-update check on a single agent |
POST /agents/{id}/scheduled-reboot | | Schedule a delayed reboot on an agent |
POST /agents/{id}/shutdown | | Shut down an agent's endpoint |
POST /agents/{id}/uninstall | | Uninstall an agent and delete its record |
GET /settings/agent-power | | Get agent power action messages |
PUT /settings/agent-power | | Update agent power action messages |
Terminal
Remote terminal WebSocket
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/terminal | | Open a live-terminal WebSocket relay to an agent |
Remote Desktop
Remote desktop and OpsMerge Connect configuration
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/remote-desktop | | Open a remote-desktop WebSocket relay to an agent |
GET /agents/{agentID}/rustdesk | | Get RustDesk connection credentials for an agent |
GET /agents/{agentID}/rustdesk-config | | Resolve the effective RustDesk config for an agent |
GET /rustdesk-config/{scopeType}/{scopeID} | | Get the RustDesk config row for a scope |
PUT /rustdesk-config/{scopeType}/{scopeID} | | Upsert the RustDesk config for a scope |
DELETE /rustdesk-config/{scopeType}/{scopeID} | | Delete the RustDesk config row for a scope |
GET /settings/rustdesk | | Get RustDesk server settings and org approval defaults |
PUT /settings/rustdesk | | Update the org's RustDesk approval defaults |
API Keys
API key management and scope catalogue (session-only)
Full schemas and try-it →
| 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
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
POST /ai/scripts | | Generate or improve a script with AI |
POST /psa/ai/tickets/{ticket_id}/draft-reply | | Generate an AI draft reply |
POST /psa/ai/tickets/{ticket_id}/rewrite-reply | | Proofread and professionalise a typed reply |
POST /psa/ai/tickets/{ticket_id}/sentiment | | Score ticket sentiment |
POST /psa/ai/tickets/{ticket_id}/suggest-category | | Suggest ticket categories (AI) |
POST /psa/ai/tickets/{ticket_id}/summary | | Summarise a ticket (AI) |
GET /settings/ai | | Get AI script-generation settings |
PUT /settings/ai | | Update AI script-generation settings |
Chat
Technician-to-user chat sessions
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
POST /agents/{agentID}/chat-invite | | Invite an end user to chat |
Account
Own profile, preferences and auth tickets
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /auth/me | | Get the authenticated user's profile |
POST /bug-reports | | Submit a bug report |
GET /dashboard/summary | | Get the dashboard summary |
GET /users/me | | Get the current user's profile |
PATCH /users/me | | Update the current user |
GET /users/me/table-prefs/{key} | | Get table layout preferences |
PUT /users/me/table-prefs/{key} | | Save table layout preferences |
Webhooks (Inbound)
Third-party webhook receivers with per-provider authentication
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
POST /webhooks/trigger/{id} | stable | Inbound trigger webhook (webhook_inbound) |
ThreatDown
ThreatDown/Malwarebytes OneView integration
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{id}/threatdown | | Get the agent's ThreatDown endpoint state |
POST /agents/{id}/threatdown/cleanup | | Clean up a broken ThreatDown install on an endpoint |
GET /agents/{id}/threatdown/detections | | List ThreatDown detections for an agent |
POST /agents/{id}/threatdown/detections/{detectionID}/ack | | Acknowledge a ThreatDown detection |
POST /agents/{id}/threatdown/install | | Install the ThreatDown agent on an endpoint |
GET /agents/{id}/threatdown/jobs/{jobID} | | Poll the status of a ThreatDown scan job |
GET /clients/{id}/threatdown | | Get the client's ThreatDown configuration |
PUT /clients/{id}/threatdown | | Update the client's ThreatDown configuration |
POST /clients/{id}/threatdown/create-site | | Create a OneView site for the client |
POST /clients/{id}/threatdown/match | | Auto-match the client to a OneView site by name |
GET /clients/{id}/threatdown/subscription | | Get the client's OneView site subscription |
POST /clients/{id}/threatdown/subscription | | Assign an initial subscription to the client's site |
PUT /clients/{id}/threatdown/subscription | | Replace the full subscription list on the client's site |
POST /clients/{id}/threatdown/subscription/extend-trial | | Extend the trial subscription on the client's site |
GET /settings/threatdown | | Get org ThreatDown (OneView) settings |
PUT /settings/threatdown | | Update org ThreatDown settings |
POST /threatdown/detections/ack-bulk | | Acknowledge multiple ThreatDown detections |
GET /threatdown/detections/unacked | | List unacknowledged ThreatDown detections (org-wide) |
PUT /threatdown/endpoints/{id}/link | | Link or unlink a ThreatDown endpoint to an RMM agent |
POST /threatdown/rematch-unmatched | | Re-run agent matching for unmatched ThreatDown endpoints |
POST /threatdown/scan/{agentID} | | Trigger a ThreatDown threat scan on an agent |
GET /threatdown/sites | | List OneView sites available to the org |
GET /threatdown/subscriptions/availability | | Get OneView subscription availability |
GET /threatdown/subscriptions/report | | Get the OneView subscriptions usage report |
POST /threatdown/sync | | Run a full ThreatDown sync now |
GET /threatdown/unmatched | | List ThreatDown endpoints with no linked agent |
SMS
VooDoo SMS integration (UK organisations only, bring-your-own API key)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /integrations/voodoosms | | Get VooDoo SMS connection status and settings |
DELETE /integrations/voodoosms | | Disconnect VooDoo SMS |
POST /integrations/voodoosms/connect | | Connect VooDoo SMS (validate and store the API key) |
GET /integrations/voodoosms/messages | | List the SMS audit log |
POST /integrations/voodoosms/send | | Send an ad-hoc SMS to contacts and/or numbers |
PUT /integrations/voodoosms/settings | | Update VooDoo SMS settings |
POST /integrations/voodoosms/test | | Send a test SMS |
Triggers
Event trigger configuration
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /triggers | | List automation triggers |
POST /triggers | | Create a trigger |
GET /triggers/{id} | | Get a trigger |
PUT /triggers/{id} | | Update a trigger |
DELETE /triggers/{id} | | Delete a trigger |
GET /triggers/{id}/history | | List a trigger's execution history |
POST /triggers/{id}/test | | Test-fire a trigger |
Compliance
Compliance scores and retention policies
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /compliance/agents/{agentID}/score | | Get the compliance score for one agent |
GET /compliance/clients/{clientID}/score | | Get the aggregate compliance score for a client |
GET /compliance/score | | Get compliance scores for every client in the org |
GET /retention-policies | | List data retention policies |
PUT /retention-policies/{id} | | Update a retention policy |
Anomaly Detection
Anomaly detection findings and config
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /anomaly/events | | List anomaly events |
GET /anomaly/settings | | List anomaly detection settings |
PUT /anomaly/settings/{checkType} | | Update anomaly settings for one check type |
GET /anomaly/timeline | | Get the anomaly alert timeline histogram |
Platform-operator endpoints (not tenant-facing)
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /admin/boe-base-rates | | List Bank of England base rates |
POST /admin/boe-base-rates | | Upsert a Bank of England base rate |
DELETE /admin/boe-base-rates | | Delete a Bank of England base rate |
1Password
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /integrations/onepassword | | 1Password connection state |
PUT /integrations/onepassword | | Connect 1Password (save service-account token) |
DELETE /integrations/onepassword | | Disconnect 1Password |
GET /integrations/onepassword/browse/vaults | | List all vaults the token can read, for the Credentials browse area |
GET /integrations/onepassword/browse/vaults/{vaultId}/items | | List secret-free item summaries for any vault the token can read |
GET /integrations/onepassword/clients/{id}/items | | List a client's 1Password item titles (secret-free) |
GET /integrations/onepassword/mappings | | List vault-to-client mappings |
PUT /integrations/onepassword/mappings | | Replace vault-to-client mappings |
POST /integrations/onepassword/reveal | | Reveal one item's fields (live fetch, audit-logged) |
POST /integrations/onepassword/step-up | | Re-verify TOTP to unlock credential reveal for this session |
GET /integrations/onepassword/vaults | | List vaults visible to the service account (live) |
Applications
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /agents/{agentID}/apps | | List application install/upgrade history for an agent |
POST /agents/{agentID}/apps/install | | Install applications on an agent |
GET /agents/{agentID}/apps/install-status | | Get the latest app install/upgrade progress |
GET /agents/{agentID}/apps/inventory | | List an agent's winget package inventory |
POST /agents/{agentID}/apps/inventory/scan | | Scan an agent's winget package inventory |
POST /agents/{agentID}/apps/uninstall | | Uninstall applications on an agent |
POST /agents/{agentID}/apps/upgrade | | Upgrade applications on an agent |
GET /apps/catalog/search | | Search the winget package catalog |
Secure Share
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /secure-shares | | List the org's secure shares |
POST /secure-shares | | Mint a burn-after-read secret link |
GET /secure-shares/public/{token} | | Peek a share's status (no burn) |
POST /secure-shares/public/{token}/reveal | | Reveal a share (consumes one view) |
GET /secure-shares/settings | | Get the org's Secure Share defaults |
PUT /secure-shares/settings | | Update the org's Secure Share defaults |
DELETE /secure-shares/{id} | | Revoke (burn) a secure share now |
Ticket Conversations
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/tickets/{id}/conversations | | List a ticket's third-party conversations |
POST /psa/tickets/{id}/conversations | | Create a third-party conversation on a ticket |
POST /psa/tickets/{id}/conversations/{convId}/messages | | Post a message to a third-party conversation |
Ticket Macros
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/ticket_macros | | List ticket macros |
POST /psa/ticket_macros | | Create a ticket macro |
PATCH /psa/ticket_macros/{id} | | Update a ticket macro |
DELETE /psa/ticket_macros/{id} | | Delete a ticket macro |
POST /psa/tickets/{id}/macros/{macroId}/run | | Run a ticket macro against a ticket |
Ticket Schedules
Full schemas and try-it →
| Endpoint | Tier | What it does |
|---|
GET /psa/ticket_schedules | | List recurring-ticket schedules |
POST /psa/ticket_schedules | | Create a recurring-ticket schedule |
PATCH /psa/ticket_schedules/{id} | | Update a recurring-ticket schedule |
DELETE /psa/ticket_schedules/{id} | | Delete a recurring-ticket schedule |