n8n-nodes-superops
v0.1.7
Published
n8n community node for the SuperOps MSP GraphQL API. Covers tickets, clients, assets, alerts, worklogs, requesters, plus ticket attachments (upload/download).
Maintainers
Readme
n8n-nodes-superops
n8n community node for the SuperOps MSP GraphQL API.
This package provides a single SuperOps node that lets your n8n workflows interact with tickets, clients, assets, alerts, and worklog entries in your SuperOps tenant. Authentication is handled by a SuperOps API credential type that supports both the US and EU data centers.
Installation
In a self-hosted n8n instance:
- Open Settings → Community Nodes.
- Click Install.
- Enter
n8n-nodes-superopsand confirm.
Or install from the command line:
npm install n8n-nodes-superopsFor development against this repository:
git clone https://gitlab.com/your-group/n8n-nodes-superops.git
cd n8n-nodes-superops
npm install
npm run build
npm link
# in your n8n install directory:
npm link n8n-nodes-superopsCredentials
Create a new credential of type SuperOps API with three fields:
| Field | Description |
|---|---|
| API Token | Generate from Settings → API Tokens in the SuperOps console. |
| Data Center | US (api.superops.ai) or EU (euapi.superops.ai). |
| Customer Subdomain | The subdomain portion of your SuperOps URL — for example, if you log in at acmemsp.superops.ai, enter acmemsp. |
The credential test runs a lightweight getStatusList query against the GraphQL endpoint to verify the token and subdomain.
Supported Resources and Operations
Ticket
- Get
- Get Many (with pagination, returns all pages or a single page)
- Create
- Update
- Add Note (public or private, with optional attachments)
- Add Conversation (reply or forward, with optional attachments)
- Get Notes
- Get Conversations
- Upload Attachment (REST
/upload, multipart) - Download Attachment (REST
/download, returns binary)
Client
- Get
- Get Many
- Create (uses
createClientV2) - Update
Asset
- Get
- Get Many
- Get Summary (CPU, memory, disk, interfaces, last user log)
- Get Software (installed software list)
- Get Patches
- Get Alerts (alerts for a specific asset)
- Update
- Run Script
Alert
- Get Many
- Create
- Resolve (one or more alert IDs)
Worklog
- Get Many (filter by ticket or task)
- Create
- Update
- Delete
Requester
- Get
- Get Many (filter by client)
- Create
- Update
- Delete
(SuperOps calls these "Client Users" — people at your customer companies who can submit tickets and appear as the requester on a ticket. Roles are assigned via Role IDs.)
Attachments
SuperOps handles file attachments in two steps:
- Upload the file via REST
/upload(multipart). The response contains the stored attachment metadata:fileName,originalFileName,fileSize. - Reference that metadata in a
CreateAttachmentInputarray when creating a Note or Conversation.
The node exposes both pieces:
- Ticket → Upload Attachment takes a binary input from the previous node, posts it to
/upload, and returns the metadata. Use theModuleselector to chooseTICKET_CONVERSATION_ATTACHMENTorTICKET_NOTE_ATTACHMENT. If a Ticket ID is provided it's sent in thedetailspayload (required for existing tickets). - Ticket → Add Note and Ticket → Add Conversation each accept an Attachments (Pre-Uploaded) JSON array. Pipe the metadata from the Upload step in via expression:
={{ [$node["Upload Attachment"].json] }}(or use a Set/Code node to shape the array yourself). - Ticket → Download Attachment takes a Ticket ID, conversation/note ID, and the stored
fileNamefrom an Attachment record, and returns the file as binary in your chosen output property.
Example flow: Read Binary File → SuperOps (Upload Attachment) → SuperOps (Add Note, with attachments referencing the previous output).
Pagination
For every "Get Many" operation the node exposes a Return All toggle. When enabled, the node walks the SuperOps listInfo.hasMore flag and returns every record across all pages. When disabled, you get a single page controlled by Page and Limit parameters.
Filtering
List operations expose a Filters (Raw GraphQL Condition) parameter that accepts a JSON object matching SuperOps' ListInfoInput.condition shape. Refer to the SuperOps API reference for valid condition keys per resource. Example for unresolved critical alerts:
{
"rawQuery": "status:'OPEN' AND severity:'CRITICAL'"
}Custom Fields
Create and Update operations on Tickets, Clients, and Assets expose a Custom Fields field that takes a JSON object mapping the SuperOps custom field column name (e.g. udf1text) to its value. Use the getTicketCustomFieldList, getClientCustomFieldList, or getAssetCustomFields queries against the API directly to discover the available column names for your tenant.
Example Workflows
Auto-create a ticket from a webhook: Webhook → SuperOps (Ticket → Create) with the requester email pulled from the payload.
Monitor critical alerts: Schedule (every 5 min) → SuperOps (Alert → Get Many, with severity condition) → IF (count > 0) → Microsoft Teams Notification.
Sync assets to a database: SuperOps (Asset → Get Many, Return All) → Postgres (upsert by assetId).
Auto-bill a worklog entry when a ticket is resolved: SuperOps Trigger (or polling) → SuperOps (Worklog → Create) with the resolved technician and ticket ID.
Supported n8n Versions
Tested against n8n 1.x. Requires Node.js 18.10 or newer.
Roadmap
This package currently covers the core MSP operations. Future versions may add:
- Service catalog items, contracts, and invoices
- IT Documentation and KB articles
- Tasks and projects
- Technicians and client users
- Trigger node for SuperOps webhook events
