n8n-nodes-cloudradial
v0.1.0
Published
n8n community nodes for CloudRadial (MSP client portal): full v2 API coverage, entity polling trigger, and form-submission webhook trigger
Maintainers
Readme
n8n-nodes-cloudradial
n8n community nodes for CloudRadial (MSP client portal platform). Full coverage of the CloudRadial v2 API plus two trigger nodes.
Building workflows against these nodes (human or LLM)? USAGE.md is the exact parameter-level contract: node type names, resource/operation/parameter values, output shapes, and gotchas.
Nodes:
- CloudRadial — action node covering all 29 v2 API resources
- CloudRadial Trigger — polling trigger: fires when records are created or updated
- CloudRadial Form Trigger — webhook trigger for form submissions (requires a publicly reachable n8n instance)
Installation
Community node installation: Settings → Community Nodes → Install →
n8n-nodes-cloudradial. See the
n8n docs for details.
Credentials
Generate an API key pair in CloudRadial under Partner > Settings > Integrations (under Configuration) > API > +Add API Key. The Private Key is shown only once.
| Field | Value |
|---|---|
| Public Key | API key pair public key (Basic auth username) |
| Private Key | API key pair private key (Basic auth password) |
| API Base URL | https://api.us.cloudradial.com unless CloudRadial tells you otherwise |
| Portal Base URL | Your branded portal domain, e.g. https://portal.example.com — used to build formUrl deep links on Catalog items; optional |
The CloudRadial node
Resources: Archive Item, Article, Assessment, Catalog Item, Catalog Question, Certificate, Company, Company Group, Company Group Member, Course, Course Enrollment, Course Lesson, Course Lesson History, Domain, Endpoint, Endpoint Application, Endpoint Custom Property, Feedback, Flexible Asset, Flexible Asset Field, Flexible Asset Type, Media, Menu, Product, Quickstart, Service, Service Install, Token, User.
Semantics worth knowing:
- Get Many uses the OData endpoints: optional Company filter, raw
$filter,$orderby,$select, and Return All paging. Soft-deleted rows are excluded by default where the entity supports it (Options → Include Deleted). - Get looks the record up via OData on its key field — this avoids the API's hidden
companyIdquery-parameter requirements on singular reads. - Create takes a raw JSON body matching the API schema. Update sends JSON Patch (RFC 6902): either simple field/value pairs or raw patch operations.
- Catalog Items returned by Get/Get Many carry a computed
formUrl— the per-company portal deep link (/app/service/request/{id}or/app/service/report/{id}) built from your Portal Base URL. Catalog rows are per-company: resolve the right company's row, never match forms by subject text (subjects are not unique). - Catalog Item → Get can attach the form's question definitions
(Include Questions) and resolve Template-type questions to the partner template's
real question set (Resolve Template Questions). Note: per-option conditional-reveal
wiring is not exposed by the API —
childQuestionIdslists all conditionally revealed questions of a parent without saying which option reveals which. - Tokens (
@-prefixed template variables) are keyed by name + company scope; company scope0is the partner-level (global) scope. Get Many uses the REST list because the OData token entity omits partner-scope rows entirely. - Endpoints can be addressed by serial number, machine name + manufacturer, or endpoint ID. Update Warranty does not support ID addressing (API limitation).
- There is no Ticket resource — by design. CloudRadial hands tickets to your PSA and
keeps only routing/cross-reference data (
psa*fields). Do ticket work in your PSA's node and join on thepsa*keys.
CloudRadial Trigger (polling)
Watches a resource for Record Created or Record Updated events using
dateCreated/dateModified cursors (Company and Endpoint use their monotonic integer
IDs and support Created only, as do a few other resources without a modification
timestamp). Optional per-company filtering and soft-delete inclusion. The first poll
initializes the cursor and emits nothing — history is not replayed. Manual execution
returns the newest matching record as a sample.
Form submissions are not pollable — submissions become PSA tickets, not CloudRadial records. Trigger those workflows from your PSA (submitted answers marked "include in ticket" are folded into the PSA ticket), or use the Form Trigger below if your n8n instance is publicly reachable.
CloudRadial Form Trigger (webhook)
Receives CloudRadial's outbound JSON webhooks, which fire on Problem Report / Service
Request / Feedback submission (plus Policy and Report Archive alerts). Paste the node's
webhook URL into the form's Routing settings in CloudRadial. Payload top-level
objects: User, Company, Ticket, Feedback, Routing, Agent, and Questions[];
the node optionally adds a flattened questionsById map. CloudRadial does not sign
webhooks — set a Secret Token and append ?token=... to the URL you paste.
Known limitations
- Media/Assessment binary uploads are implemented but not yet exercised against a live instance — verify before relying on them.
- Archive Item attachment upload exists only on CloudRadial's legacy v1 API and is not implemented; the v2 Create operation creates metadata-only items.
- CloudRadial advertises no rate limits (no
X-RateLimit-*headers). Poll conservatively. - Every API response carries an
x-documentation-urlheader linking a per-request debug log — useful when working with CloudRadial support.
License
MIT
