# nodes

node_type: n8n-nodes-cellystial.cellystial
package_name: n8n-nodes-cellystial
display_name: Cellystial
description: Generate PDFs via Cellystial API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: cellystial
author_github_url: https://github.com/cellystial/cellystial-n8n-app.git
npm_package_name: n8n-nodes-cellystial
npm_version: 1.2.6
community_fetched_at: 2026-07-14T14:40:34.623Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "generatePdf",
      "options": [
        {
          "name": "Generate PDF",
          "value": "generatePdf",
          "action": "Generate a PDF",
          "description": "Generate a single PDF from a template"
        },
        {
          "name": "Generate PDFs (Batch)",
          "value": "generatePdfBatch",
          "action": "Generate a PDF batch",
          "description": "Queue a bulk batch of PDFs from many data rows (async)"
        },
        {
          "name": "Get Batch Status",
          "value": "getBatchStatus",
          "action": "Get batch status",
          "description": "Check a bulk batch and retrieve download URLs"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate PDF",
      "value": "generatePdf",
      "action": "Generate a PDF",
      "description": "Generate a single PDF from a template"
    },
    {
      "name": "Generate PDFs (Batch)",
      "value": "generatePdfBatch",
      "action": "Generate a PDF batch",
      "description": "Queue a bulk batch of PDFs from many data rows (async)"
    },
    {
      "name": "Get Batch Status",
      "value": "getBatchStatus",
      "action": "Get batch status",
      "description": "Check a bulk batch and retrieve download URLs"
    }
  ]

npm_readme:
  # n8n-nodes-cellystial

  This is an [n8n](https://n8n.io) community node. It lets you use
  [Cellystial](https://cellystial.com) in your n8n workflows.

  **Cellystial** turns dynamic JSON data into beautiful PDFs from reusable templates. This package
  ships two nodes: a **Cellystial** action node that generates PDFs from your templates — one at a
  time, or in bulk — and a **Cellystial Trigger** that starts workflows when Cellystial events fire.

  [Installation](#installation) · [Credentials](#credentials) · [Operations](#operations) ·
  [Trigger](#trigger) · [Compatibility](#compatibility) · [Resources](#resources)

  ## Installation

  Follow the [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  in the n8n docs.

  In short, on a self-hosted n8n instance:

  1. Go to **Settings → Community nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-cellystial` as the npm package name.
  4. Agree to the risks of using community nodes and select **Install**.

  After installation the **Cellystial** and **Cellystial Trigger** nodes are available in the nodes panel.

  ## Credentials

  You need a Cellystial API key.

  1. Sign in to your [Cellystial dashboard](https://app.cellystial.com).
  2. Create an API key under **Settings → Developer & API**. Keys start with `sk_prod_`
     (production) or `sk_test_` (testing).
  3. In n8n, create a new **Cellystial API** credential and paste the key.

  The credential is verified against `GET /api/v1/users/me`, so an invalid key is caught
  immediately when you save it.

  ## Operations

  ### Generate PDF

  Generates a single PDF from a Cellystial template and returns it as binary data.

  | Parameter | Description |
  | --- | --- |
  | **Template** | The template to render. The dropdown is populated automatically from your account. |
  | **JSON Payload** | The JSON data injected into the template schema (e.g. `{ "amount": 100, "customer": "Cellystial" }`). |
  | **File Name** | Optional name for the generated PDF binary (defaults to `document.pdf`). |
  | **Put Output File in Field** | The output binary field name (defaults to `data`). |

  The output PDF is ready to pass to nodes like **Write Binary File**, **Send Email**, or any HTTP
  upload. When the node receives multiple items, it generates one PDF per item. Each output item
  carries your **input JSON** through unchanged plus `success: true` (the PDF rides along as binary);
  with **Continue On Fail** enabled, a failed item carries an `error` message instead.

  ### Generate PDFs (Batch)

  Queues a bulk batch of PDFs from many data rows in a single asynchronous request — ideal for
  generating documents from a spreadsheet on a schedule. **Each incoming item becomes one row.**

  | Parameter | Description |
  | --- | --- |
  | **Template** | The template to render for every row in the batch. |
  | **Row Data** | The data for one PDF. Defaults to the whole incoming item (`{{ $json }}`); map specific fields if needed. |
  | **Document ID** | Optional. Your own unique ID for the row (e.g. `{{ $json.invoice_no }}`), echoed back in the results and used as the PDF filename — so you can map each output PDF to its source. Set it on every row to use this mode, or leave it blank on all rows to map by position. |
  | **Output Filename** | Optional. The PDF filename for the row. Defaults to the Document ID. |
  | **Completion Webhook URL** | Optional. A URL Cellystial calls when the batch finishes. |

  This operation returns a single item with the **batch ID** and **status** (`queued`).
  Generation runs asynchronously; the finished PDFs are stored and returned as **download URLs**
  via **Get Batch Status** (or pushed to your **Completion Webhook URL** when the batch finishes).
  If your account has **Storage** enabled the PDFs are saved permanently; if not, they're delivered
  to a **temporary location that auto-expires after 7 days** and also bundled into a single **ZIP**.
  Batch size is limited by your subscription plan.

  ### Get Batch Status

  Looks up a batch by its ID. While it's still running, returns a status summary
  (`total` / `completed` / `failed`). Once rows are done it emits **one item per row**, each with
  that row's `rowIndex`, `documentId` (when you set one), `filename`, `status`, and `downloadUrl`
  (plus a `zipUrl` for the whole batch) — so you can map every PDF back to its source row and
  process them individually.

  | Parameter | Description |
  | --- | --- |
  | **Batch ID** | The ID returned by **Generate PDFs (Batch)**. |

  A typical bulk flow: **Generate PDFs (Batch)** → **Wait** → **Get Batch Status** → handle each
  row's `downloadUrl` (or grab the single `zipUrl`).

  ## Trigger

  ### Cellystial Trigger

  Starts a workflow the moment a Cellystial event fires — so you can react to PDFs and batches as
  they complete instead of polling. On activation the node registers a webhook subscription with
  Cellystial; on deactivation it removes it.

  | Setting | Description |
  | --- | --- |
  | **Credential** | A **Cellystial API** credential (the same key the action node uses). |
  | **Events** | One or more events to listen for: **PDF Generated** (`pdf.generated`), **Batch Completed** (`batch.completed`), and **Template Created / Updated / Deleted** (`template.*`). |

  Each delivery starts the workflow with the event payload as JSON.

  **Security.** Deliveries are signed with a per-subscription secret and sent in an
  `X-Cellystial-Signature` header (`t=<unix>,v1=<hmac-sha256>`). The trigger **verifies every
  request** against the exact received bytes and rejects forged, tampered, or replayed payloads with
  `401` — they never start your workflow. The signing secret is captured automatically when the node
  registers, so there's nothing to configure.

  ## Compatibility

  - Requires n8n with Node.js 20 or newer.
  - Tested against n8n nodes API version 1.

  ## Resources

  - [Cellystial documentation](https://cellystial.com/docs)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Integrates Cellystial with n8n to generate PDFs from reusable templates and react to Cellystial events in workflows. It supports both single and bulk PDF generation, plus a trigger for webhook-based event handling.","capabilities":["Generate a single PDF from a Cellystial template and return it as binary data","Generate PDFs in bulk as an asynchronous batch job from multiple input rows","Check batch generation status and retrieve per-row download URLs and ZIP URL","Trigger workflows on Cellystial events such as PDF generated, batch completed, and template created/updated/deleted","Pass input JSON through unchanged while adding generation status and binary output","Support optional output filename and binary field configuration","Use completion webhook URLs for batch completion notifications"],"authentication":"Cellystial API key required; create a Cellystial API credential in n8n using a key from the Cellystial dashboard.","commonUseCases":["Generate invoices, reports, or other documents from JSON data and templates","Bulk-create PDFs from spreadsheet rows or other batched data sources","Download or store generated PDFs after checking batch completion","Automate workflows when PDFs or batches finish processing","React to template lifecycle changes in Cellystial"],"limitations":["Batch size is limited by the subscription plan","Batch PDF generation is asynchronous and may require polling or a webhook to retrieve results","Temporary batch files expire after 7 days if Storage is not enabled","Requires n8n with Node.js 20 or newer"],"relatedNodes":["Write Binary File","Send Email","HTTP Request","Wait"]}


node_type: n8n-nodes-cellystial.cellystialTrigger
package_name: n8n-nodes-cellystial
display_name: Cellystial Trigger
description: Starts the workflow on a Cellystial event (PDF generated, batch completed, template changes)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: cellystial
author_github_url: https://github.com/cellystial/cellystial-n8n-app.git
npm_package_name: n8n-nodes-cellystial
npm_version: 1.2.6
community_fetched_at: 2026-07-14T14:40:34.624Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # n8n-nodes-cellystial

  This is an [n8n](https://n8n.io) community node. It lets you use
  [Cellystial](https://cellystial.com) in your n8n workflows.

  **Cellystial** turns dynamic JSON data into beautiful PDFs from reusable templates. This package
  ships two nodes: a **Cellystial** action node that generates PDFs from your templates — one at a
  time, or in bulk — and a **Cellystial Trigger** that starts workflows when Cellystial events fire.

  [Installation](#installation) · [Credentials](#credentials) · [Operations](#operations) ·
  [Trigger](#trigger) · [Compatibility](#compatibility) · [Resources](#resources)

  ## Installation

  Follow the [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  in the n8n docs.

  In short, on a self-hosted n8n instance:

  1. Go to **Settings → Community nodes**.
  2. Select **Install**.
  3. Enter `n8n-nodes-cellystial` as the npm package name.
  4. Agree to the risks of using community nodes and select **Install**.

  After installation the **Cellystial** and **Cellystial Trigger** nodes are available in the nodes panel.

  ## Credentials

  You need a Cellystial API key.

  1. Sign in to your [Cellystial dashboard](https://app.cellystial.com).
  2. Create an API key under **Settings → Developer & API**. Keys start with `sk_prod_`
     (production) or `sk_test_` (testing).
  3. In n8n, create a new **Cellystial API** credential and paste the key.

  The credential is verified against `GET /api/v1/users/me`, so an invalid key is caught
  immediately when you save it.

  ## Operations

  ### Generate PDF

  Generates a single PDF from a Cellystial template and returns it as binary data.

  | Parameter | Description |
  | --- | --- |
  | **Template** | The template to render. The dropdown is populated automatically from your account. |
  | **JSON Payload** | The JSON data injected into the template schema (e.g. `{ "amount": 100, "customer": "Cellystial" }`). |
  | **File Name** | Optional name for the generated PDF binary (defaults to `document.pdf`). |
  | **Put Output File in Field** | The output binary field name (defaults to `data`). |

  The output PDF is ready to pass to nodes like **Write Binary File**, **Send Email**, or any HTTP
  upload. When the node receives multiple items, it generates one PDF per item. Each output item
  carries your **input JSON** through unchanged plus `success: true` (the PDF rides along as binary);
  with **Continue On Fail** enabled, a failed item carries an `error` message instead.

  ### Generate PDFs (Batch)

  Queues a bulk batch of PDFs from many data rows in a single asynchronous request — ideal for
  generating documents from a spreadsheet on a schedule. **Each incoming item becomes one row.**

  | Parameter | Description |
  | --- | --- |
  | **Template** | The template to render for every row in the batch. |
  | **Row Data** | The data for one PDF. Defaults to the whole incoming item (`{{ $json }}`); map specific fields if needed. |
  | **Document ID** | Optional. Your own unique ID for the row (e.g. `{{ $json.invoice_no }}`), echoed back in the results and used as the PDF filename — so you can map each output PDF to its source. Set it on every row to use this mode, or leave it blank on all rows to map by position. |
  | **Output Filename** | Optional. The PDF filename for the row. Defaults to the Document ID. |
  | **Completion Webhook URL** | Optional. A URL Cellystial calls when the batch finishes. |

  This operation returns a single item with the **batch ID** and **status** (`queued`).
  Generation runs asynchronously; the finished PDFs are stored and returned as **download URLs**
  via **Get Batch Status** (or pushed to your **Completion Webhook URL** when the batch finishes).
  If your account has **Storage** enabled the PDFs are saved permanently; if not, they're delivered
  to a **temporary location that auto-expires after 7 days** and also bundled into a single **ZIP**.
  Batch size is limited by your subscription plan.

  ### Get Batch Status

  Looks up a batch by its ID. While it's still running, returns a status summary
  (`total` / `completed` / `failed`). Once rows are done it emits **one item per row**, each with
  that row's `rowIndex`, `documentId` (when you set one), `filename`, `status`, and `downloadUrl`
  (plus a `zipUrl` for the whole batch) — so you can map every PDF back to its source row and
  process them individually.

  | Parameter | Description |
  | --- | --- |
  | **Batch ID** | The ID returned by **Generate PDFs (Batch)**. |

  A typical bulk flow: **Generate PDFs (Batch)** → **Wait** → **Get Batch Status** → handle each
  row's `downloadUrl` (or grab the single `zipUrl`).

  ## Trigger

  ### Cellystial Trigger

  Starts a workflow the moment a Cellystial event fires — so you can react to PDFs and batches as
  they complete instead of polling. On activation the node registers a webhook subscription with
  Cellystial; on deactivation it removes it.

  | Setting | Description |
  | --- | --- |
  | **Credential** | A **Cellystial API** credential (the same key the action node uses). |
  | **Events** | One or more events to listen for: **PDF Generated** (`pdf.generated`), **Batch Completed** (`batch.completed`), and **Template Created / Updated / Deleted** (`template.*`). |

  Each delivery starts the workflow with the event payload as JSON.

  **Security.** Deliveries are signed with a per-subscription secret and sent in an
  `X-Cellystial-Signature` header (`t=<unix>,v1=<hmac-sha256>`). The trigger **verifies every
  request** against the exact received bytes and rejects forged, tampered, or replayed payloads with
  `401` — they never start your workflow. The signing secret is captured automatically when the node
  registers, so there's nothing to configure.

  ## Compatibility

  - Requires n8n with Node.js 20 or newer.
  - Tested against n8n nodes API version 1.

  ## Resources

  - [Cellystial documentation](https://cellystial.com/docs)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Starts an n8n workflow when Cellystial events occur, such as PDF generation, batch completion, or template changes. It listens to Cellystial webhooks and passes the event payload into the workflow as JSON.","capabilities":["Subscribe to Cellystial webhook events on activation","Trigger workflows for PDF generated events","Trigger workflows for batch completed events","Trigger workflows for template created, updated, and deleted events","Verify webhook signatures to prevent forged or replayed requests","Unregister the webhook subscription on deactivation"],"authentication":"Cellystial API key required via Cellystial API credential","commonUseCases":["Automatically process a workflow when a PDF is generated in Cellystial","React to completion of bulk PDF batches","Sync downstream systems when templates are changed"],"limitations":["Requires a Cellystial API key and access to the Cellystial dashboard","Requires n8n with Node.js 20 or newer","Batch size is limited by the user's subscription plan"],"relatedNodes":[]}


node_type: n8n-nodes-echostack.echoStack
package_name: n8n-nodes-echostack
display_name: EchoStack
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ayoola-solomon
author_github_url: https://github.com/ayoola-solomon/
npm_package_name: n8n-nodes-echostack
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:34.625Z
ai_summary_generated_at: 2026-07-06 09:55:11
description:
  Evaluate structured input against your EchoStack deployment playbook. Branch on {{ $json.status }} and {{ $json.next_action }} to route downstream automation.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "evaluation",
      "options": [
        {
          "name": "Evaluation",
          "value": "evaluation"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "evaluate",
      "options": [
        {
          "name": "Evaluate",
          "value": "evaluate",
          "action": "Evaluate input"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "evaluation"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Evaluate",
      "value": "evaluate",
      "action": "Evaluate input",
      "resource": "evaluation"
    }
  ]

npm_readme:
  # n8n-nodes-echostack

  Official [n8n](https://n8n.io) community node for the [EchoStack](https://getechostack.com) **Evaluation API**.

  Send forms, webhooks, or conversation transcripts to EchoStack with your org API key and branch automation on `status` and `next_action`.

  ## Prerequisites

  1. An [EchoStack](https://getechostack.com) account
  2. An **Organization API key** (`esk_…`) from **Dashboard → API Keys**
  3. An `evaluation_id` from `POST /v1/evaluations` (see the [eval quickstart](https://docs.getechostack.com/guides/eval-quickstart/))

  - Integration guide: [docs.getechostack.com/guides/n8n/](https://docs.getechostack.com/guides/n8n/)
  - API reference: [docs.getechostack.com/reference/](https://docs.getechostack.com/reference/)

  ## Install

  ### n8n Cloud

  1. Open **Settings → Community Nodes → Install**
  2. Enter `n8n-nodes-echostack`
  3. Restart n8n if prompted

  ### Self-hosted

  ```bash
  npm install n8n-nodes-echostack
  ```

  Restart your n8n instance after install.

  ## Credentials

  Create an **EchoStack API** credential in n8n:

  | Field                  | Value                                                                  |
  | ---------------------- | ---------------------------------------------------------------------- |
  | Base URL               | `https://api.getechostack.com` (use your dashboard value if different) |
  | Organization API Key   | `esk_…` from **Dashboard → API Keys**                                  |
  | Evaluation ID          | UUID from `POST /v1/evaluations`                                       |

  The credential test calls `GET /v1/evaluations/:id` with the configured Evaluation ID — it validates the key and the evaluation binding without consuming evaluation quota.

  You can override the credential's Evaluation ID per request on the Evaluate node (e.g. when one key drives multiple evaluations).

  ## Node: EchoStack → Evaluation → Evaluate

  | Input mode      | Use when                                                                                   |
  | --------------- | ------------------------------------------------------------------------------------------ |
  | **Form Fields** | Prior node outputs flat JSON (webhooks, form tools, CRM triggers). Default: `={{ $json }}` |
  | **Transcript**  | JSON array of `{ "role": "user", "content": "..." }` turns                                 |
  | **Raw JSON**    | Full `POST /v1/evaluate` request body                                                      |

  ### Branching

  After **Evaluate**, add a **Switch** (or IF) on:

  - `{{ $json.status }}` — `QUALIFIED`, `PARTIAL`, `FAILED`, `ESCALATE`
  - `{{ $json.next_action }}` — `BOOK_MEETING`, `GATHER_INFO`, `NURTURE`, `DISQUALIFY`, `ESCALATE_NOW`, `CLOSE`
  - `{{ $json.missing_fields }}` — required fields still missing

  | status    | Common next steps                               |
  | --------- | ----------------------------------------------- |
  | QUALIFIED | Notify sales, update CRM, book a meeting        |
  | PARTIAL   | Ask for missing info, add to a nurture sequence |
  | FAILED    | Archive or tag as disqualified                  |
  | ESCALATE  | Alert a channel or route to human review        |

  ### Errors

  | HTTP    | Meaning                                                                   |
  | ------- | ------------------------------------------------------------------------- |
  | **401** | Invalid `esk_…` — regenerate under **Dashboard → API Keys**               |
  | **400** | Missing or invalid `evaluation_id` on the credential or Evaluate node   |
  | **402** | Quota exceeded — check `message`, `resetAt`, `upgradeUrl` in the response |
  | **429** | Rate limited — retry after a short delay                                  |

  ## Starter workflow

  A sample workflow ships with this package.

  **After install (self-hosted):**

  ```text
  node_modules/n8n-nodes-echostack/example-workflow.json
  ```

  **From npm CDN (any environment):**

  [unpkg.com/n8n-nodes-echostack/example-workflow.json](https://unpkg.com/n8n-nodes-echostack/example-workflow.json)

  In n8n: **⋯ → Import from file**, attach your **EchoStack API** credential on the Evaluate node, then run once with the pinned test data.

  The template uses a **Webhook** trigger for easy testing. Replace it with your production trigger (HubSpot, Typeform, custom app, etc.) and wire each Switch branch to your CRM, email, or chat tools.

  ## Distribution (maintainers)

  Promote with UTM-tagged links so signups attribute to n8n:

  - **Signup:** `https://getechostack.com/login?utm_source=docs&utm_medium=guide&utm_campaign=n8n&guide=n8n`
  - **Guides:** [n8n](https://docs.getechostack.com/guides/n8n/) · [Inbound lead qualification](https://docs.getechostack.com/guides/inbound-lead-qualification/) · [vs Zapier](https://docs.getechostack.com/guides/echostack-vs-zapier-qualification/)
  - **Design partners:** [getechostack.com#design-partners](https://getechostack.com#design-partners)

  Full checklist: `docs/marketing/dev-distribution.md` in the echostack-playbooks monorepo.

  ## Support

  - Product: [getechostack.com](https://getechostack.com)
  - n8n guide: [docs.getechostack.com/guides/n8n/](https://docs.getechostack.com/guides/n8n/)
  - Eval quickstart: [docs.getechostack.com/guides/eval-quickstart/](https://docs.getechostack.com/guides/eval-quickstart/)
  - Issues with this node: [hello@getechostack.com](mailto:hello@getechostack.com)

  ## License

  MIT — see [LICENSE](./LICENSE).

ai_documentation_summary:
  {"purpose":"Evaluates structured input against an EchoStack deployment playbook using the EchoStack Evaluation API. It helps route downstream automation by returning evaluation results such as status and next_action.","capabilities":["Evaluate form fields, webhook payloads, or other flat JSON input","Evaluate conversation transcripts as arrays of role/content messages","Send raw JSON request bodies to the EchoStack evaluation endpoint","Return evaluation outputs for branching on status, next_action, and missing_fields","Support overriding the Evaluation ID per request","Provide credential testing against the EchoStack evaluations endpoint"],"authentication":"Organization API key required via EchoStack API credential in n8n, along with a Base URL and Evaluation ID","commonUseCases":["Lead qualification and routing","Branching workflows based on evaluation results","Escalating incomplete or failed submissions to human review","Sending qualified leads to CRM, email, or chat tools"],"limitations":["Requires a valid evaluation_id from POST /v1/evaluations","Returns API errors for invalid keys, missing evaluation IDs, quota exhaustion, or rate limiting","Designed for structured input and transcript data rather than arbitrary unstructured content"],"relatedNodes":["Webhook","Switch","IF"]}


node_type: n8n-nodes-relayion.relayion
package_name: n8n-nodes-relayion
display_name: Relayion
description: Send and receive SMS messages via Relayion
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: relayion
author_github_url: https://github.com/relayion/
npm_package_name: n8n-nodes-relayion
npm_version: 0.1.8
community_fetched_at: 2026-07-14T14:40:34.626Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "outbound",
      "options": [
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Device",
          "value": "device"
        },
        {
          "name": "Inbound Message",
          "value": "inbound"
        },
        {
          "name": "Outbound Message",
          "value": "outbound"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send SMS",
          "value": "send",
          "action": "Send an SMS",
          "description": "Submit an outbound SMS request"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a message",
          "description": "Get the details of a sent message"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List messages",
          "description": "List outbound messages for this API key"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "outbound"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a message",
          "description": "Get the details of a received message"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List messages",
          "description": "List inbound messages scoped to this API key's phone number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inbound"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a conversation",
          "description": "Get a unified thread of inbound and outbound messages with a phone number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List devices",
          "description": "List devices accessible to this API key, with their SIM information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send SMS",
      "value": "send",
      "action": "Send an SMS",
      "description": "Submit an outbound SMS request",
      "resource": "outbound"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a message",
      "description": "Get the details of a sent message",
      "resource": "outbound"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List messages",
      "description": "List outbound messages for this API key",
      "resource": "outbound"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a message",
      "description": "Get the details of a received message",
      "resource": "inbound"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List messages",
      "description": "List inbound messages scoped to this API key's phone number",
      "resource": "inbound"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a conversation",
      "description": "Get a unified thread of inbound and outbound messages with a phone number",
      "resource": "conversation"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List devices",
      "description": "List devices accessible to this API key, with their SIM information",
      "resource": "device"
    }
  ]

npm_readme:
  # n8n-nodes-relayion

  This is an n8n community node for [Relayion](https://relayion.com), an SMS gateway that lets you send and receive SMS messages through a registered Android device.

  Use this node to send SMS from any n8n workflow, query message history, browse conversations, and trigger workflows automatically when an SMS is received or a delivery status changes.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Trigger Node Setup](#trigger-node-setup)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ---

  ## Installation

  In your n8n instance, go to **Settings > Community Nodes > Install** and enter:

  ```
  n8n-nodes-relayion
  ```

  Restart n8n when prompted.

  ---

  ## Operations

  ### Relayion (regular node)

  | Resource | Operation | Description |
  |---|---|---|
  | Outbound Message | Send SMS | Submit an outbound SMS to a recipient number |
  | Outbound Message | Get | Retrieve a sent message and its current delivery status |
  | Outbound Message | List | List sent messages with optional filters (status, recipient, date range) |
  | Inbound Message | Get | Retrieve a specific received message |
  | Inbound Message | List | List received messages with optional filters (sender, date range, SIM slot) |
  | Conversation | Get | Get a unified thread of all messages (sent and received) with a phone number |
  | Device | List | List devices registered to this API key's account, with SIM information |

  ### Relayion Trigger

  Starts a workflow automatically when Relayion fires a webhook event.

  | Event | Description |
  |---|---|
  | `inbound.received` | An SMS was received on your device |
  | `outbound.queued` | An outbound SMS was accepted and queued |
  | `outbound.dispatched` | The send instruction was delivered to the device |
  | `outbound.sent` | The device confirmed the SMS was submitted to the carrier |
  | `outbound.delivered` | A delivery receipt was received from the carrier |
  | `outbound.failed` | The SMS failed to send |

  ---

  ## Credentials

  Create a **Relayion API** credential in n8n with the following fields:

  | Field | Required | Description |
  |---|---|---|
  | API Key | Yes | Your API key from the Relayion console (`rlyn_...`). Found under **API Keys**. |
  | Base URL | Yes | Default is `https://api.relayion.com`. Change this only if you are self-hosting. |
  | Webhook Secret | No | Required only when using the Relayion Trigger node. See below. |

  Each API key in Relayion has a default device and SIM. The node uses that default automatically. You can optionally override it per message using the **Device ID** and **SIM Slot Index** options on the Send SMS operation.

  ---

  ## Trigger Node Setup

  The Relayion Trigger does not auto-register webhooks. Setup is a one-time manual step:

  1. Add a **Relayion Trigger** node to your workflow and activate it. n8n will display a webhook URL.
  2. In the Relayion console, go to **Webhooks > Create** and paste that URL.
  3. Select the events you want to subscribe to and complete the form.
  4. Copy the secret shown after creation.
  5. Paste that secret into the **Webhook Secret** field of your Relayion API credential in n8n.

  From that point, Relayion will call the webhook URL whenever a subscribed event occurs and n8n will start your workflow with the event payload.

  > **Important** Always set the Webhook Secret in production. Without it, the trigger accepts any incoming POST request without verifying its origin.

  ---

  ## Compatibility

  Tested against n8n version **1.0+**.

  Requires a Relayion account with at least one registered device and an active API key.

  ---

  ## Resources

  - [Relayion website](https://relayion.com)
  - [Relayion documentation](https://relayion.com/docs)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Report an issue](https://github.com/relayion/n8n-nodes-relayion/issues)

ai_documentation_summary:
  {"purpose":"Relayion is an n8n community node for sending and receiving SMS messages through the Relayion SMS gateway. It supports managing SMS messages, conversations, devices, and triggering workflows from SMS/webhook events.","capabilities":["Send outbound SMS messages","Get a specific sent message and delivery status","List sent messages with filters","Get a specific received message","List received messages with filters","Get unified conversations for a phone number","List registered devices and SIM information","Trigger workflows on inbound SMS and outbound delivery/status events"],"authentication":"API key required (Relayion API credential with API Key and Base URL; optional Webhook Secret for trigger verification)","commonUseCases":["Send SMS notifications from n8n workflows","Track SMS delivery status and message history","Browse message conversations with a contact","Automate workflows when SMS messages are received","React to outbound SMS lifecycle events such as queued, sent, delivered, or failed"],"limitations":["Requires a Relayion account with at least one registered Android device and an active API key","The trigger node does not auto-register webhooks; manual webhook setup in the Relayion console is required","Webhook Secret is optional but strongly recommended for production to verify incoming trigger requests"],"relatedNodes":["Relayion Trigger"]}


node_type: n8n-nodes-relayion.relayionTrigger
package_name: n8n-nodes-relayion
display_name: Relayion Trigger
description: Starts the workflow when Relayion fires a webhook event (inbound SMS, delivery status, etc.)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: relayion
author_github_url: https://github.com/relayion/
npm_package_name: n8n-nodes-relayion
npm_version: 0.1.8
community_fetched_at: 2026-07-14T14:40:34.627Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # n8n-nodes-relayion

  This is an n8n community node for [Relayion](https://relayion.com), an SMS gateway that lets you send and receive SMS messages through a registered Android device.

  Use this node to send SMS from any n8n workflow, query message history, browse conversations, and trigger workflows automatically when an SMS is received or a delivery status changes.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Trigger Node Setup](#trigger-node-setup)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ---

  ## Installation

  In your n8n instance, go to **Settings > Community Nodes > Install** and enter:

  ```
  n8n-nodes-relayion
  ```

  Restart n8n when prompted.

  ---

  ## Operations

  ### Relayion (regular node)

  | Resource | Operation | Description |
  |---|---|---|
  | Outbound Message | Send SMS | Submit an outbound SMS to a recipient number |
  | Outbound Message | Get | Retrieve a sent message and its current delivery status |
  | Outbound Message | List | List sent messages with optional filters (status, recipient, date range) |
  | Inbound Message | Get | Retrieve a specific received message |
  | Inbound Message | List | List received messages with optional filters (sender, date range, SIM slot) |
  | Conversation | Get | Get a unified thread of all messages (sent and received) with a phone number |
  | Device | List | List devices registered to this API key's account, with SIM information |

  ### Relayion Trigger

  Starts a workflow automatically when Relayion fires a webhook event.

  | Event | Description |
  |---|---|
  | `inbound.received` | An SMS was received on your device |
  | `outbound.queued` | An outbound SMS was accepted and queued |
  | `outbound.dispatched` | The send instruction was delivered to the device |
  | `outbound.sent` | The device confirmed the SMS was submitted to the carrier |
  | `outbound.delivered` | A delivery receipt was received from the carrier |
  | `outbound.failed` | The SMS failed to send |

  ---

  ## Credentials

  Create a **Relayion API** credential in n8n with the following fields:

  | Field | Required | Description |
  |---|---|---|
  | API Key | Yes | Your API key from the Relayion console (`rlyn_...`). Found under **API Keys**. |
  | Base URL | Yes | Default is `https://api.relayion.com`. Change this only if you are self-hosting. |
  | Webhook Secret | No | Required only when using the Relayion Trigger node. See below. |

  Each API key in Relayion has a default device and SIM. The node uses that default automatically. You can optionally override it per message using the **Device ID** and **SIM Slot Index** options on the Send SMS operation.

  ---

  ## Trigger Node Setup

  The Relayion Trigger does not auto-register webhooks. Setup is a one-time manual step:

  1. Add a **Relayion Trigger** node to your workflow and activate it. n8n will display a webhook URL.
  2. In the Relayion console, go to **Webhooks > Create** and paste that URL.
  3. Select the events you want to subscribe to and complete the form.
  4. Copy the secret shown after creation.
  5. Paste that secret into the **Webhook Secret** field of your Relayion API credential in n8n.

  From that point, Relayion will call the webhook URL whenever a subscribed event occurs and n8n will start your workflow with the event payload.

  > **Important** Always set the Webhook Secret in production. Without it, the trigger accepts any incoming POST request without verifying its origin.

  ---

  ## Compatibility

  Tested against n8n version **1.0+**.

  Requires a Relayion account with at least one registered device and an active API key.

  ---

  ## Resources

  - [Relayion website](https://relayion.com)
  - [Relayion documentation](https://relayion.com/docs)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Report an issue](https://github.com/relayion/n8n-nodes-relayion/issues)

ai_documentation_summary:
  {"purpose":"Relayion Trigger starts an n8n workflow when Relayion sends a webhook event, such as an inbound SMS or an outbound message delivery status update. The package also includes Relayion actions for sending and managing SMS messages and conversations.","capabilities":["Trigger workflows on Relayion webhook events","Receive inbound SMS event payloads","Handle outbound message lifecycle events like queued, dispatched, sent, delivered, and failed","Send SMS messages","Retrieve individual sent messages and their delivery status","List sent messages with filters","Retrieve individual received messages","List received messages with filters","Get unified conversations with a phone number","List devices registered to the API key account"],"authentication":"API key required via a Relayion API credential; Base URL is configurable and a Webhook Secret is optional but recommended/required for the Trigger node.","commonUseCases":["Start an automation when an SMS is received","Track SMS delivery status changes","Send outbound SMS messages from workflows","Query message history and status","Browse conversations with a contact"],"limitations":["Webhook registration for the Trigger node is manual; it does not auto-register webhooks","The Trigger node accepts any POST request if Webhook Secret is not set","Requires a Relayion account with at least one registered device and an active API key"],"relatedNodes":["Webhook Trigger","SMS","HTTP Request"]}


node_type: n8n-nodes-resilience.resilience
package_name: n8n-nodes-resilience
display_name: Resilience
description: Retry, concurrency, and dead-letter utilities for workflows
category: Community
development_style: declarative
version: 1
credentials_required: []
updated_at: 2026-07-14 14:40:34
author_name: mr-taiwo
author_github_url: https://github.com/tjava/
npm_package_name: n8n-nodes-resilience
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.627Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "retryStrategy",
      "options": [
        {
          "name": "Concurrency Gate",
          "value": "concurrencyGate",
          "description": "Limit active items in a protected workflow section"
        },
        {
          "name": "Dead Letter Queue",
          "value": "deadLetterQueue",
          "description": "Format failed items for storage or replay"
        },
        {
          "name": "Retry Strategy",
          "value": "retryStrategy",
          "description": "Evaluate whether an item should retry or fail"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "evaluate",
      "options": [
        {
          "name": "Evaluate",
          "value": "evaluate",
          "action": "Evaluate retry strategy",
          "description": "Evaluate the retry policy for each input item"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "retryStrategy"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "acquire",
      "options": [
        {
          "name": "Acquire",
          "value": "acquire",
          "action": "Acquire concurrency lock",
          "description": "Try to acquire a lock for this gate key"
        },
        {
          "name": "Force Release",
          "value": "forceRelease",
          "action": "Force release concurrency locks",
          "description": "Clear all active locks for this gate key"
        },
        {
          "name": "Inspect",
          "value": "inspect",
          "action": "Inspect concurrency gate",
          "description": "Return current lock metadata for this gate key"
        },
        {
          "name": "Release",
          "value": "release",
          "action": "Release concurrency lock",
          "description": "Release a previously acquired lock"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "concurrencyGate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "formatFailedItem",
      "options": [
        {
          "name": "Format Failed Item",
          "value": "formatFailedItem",
          "action": "Format failed item",
          "description": "Wrap the input item as a dead-letter payload"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deadLetterQueue"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Evaluate",
      "value": "evaluate",
      "action": "Evaluate retry strategy",
      "description": "Evaluate the retry policy for each input item",
      "resource": "retryStrategy"
    },
    {
      "name": "Acquire",
      "value": "acquire",
      "action": "Acquire concurrency lock",
      "description": "Try to acquire a lock for this gate key",
      "resource": "concurrencyGate"
    },
    {
      "name": "Force Release",
      "value": "forceRelease",
      "action": "Force release concurrency locks",
      "description": "Clear all active locks for this gate key",
      "resource": "concurrencyGate"
    },
    {
      "name": "Inspect",
      "value": "inspect",
      "action": "Inspect concurrency gate",
      "description": "Return current lock metadata for this gate key",
      "resource": "concurrencyGate"
    },
    {
      "name": "Release",
      "value": "release",
      "action": "Release concurrency lock",
      "description": "Release a previously acquired lock",
      "resource": "concurrencyGate"
    },
    {
      "name": "Format Failed Item",
      "value": "formatFailedItem",
      "action": "Format failed item",
      "description": "Wrap the input item as a dead-letter payload",
      "resource": "deadLetterQueue"
    }
  ]

outputs:
  "={{$parameter[\"resource\"] === \"retryStrategy\" ? [{ type: \"main\", displayName: \"Success\" }, { type: \"main\", displayName: \"Retry\" }, { type: \"main\", displayName: \"Exhausted\" }] : $parameter[\"resource\"] === \"concurrencyGate\" ? [{ type: \"main\", displayName: \"Allowed\" }, { type: \"main\", displayName: \"Blocked\" }] : [{ type: \"main\" }]}}"

npm_readme:
  # n8n-nodes-resilience

  Production-grade resilience utilities for n8n workflows.

  This community node package helps workflow builders make unreliable integrations easier to manage. The Resilience node inspects incoming item data, adds structured metadata, and routes items so the rest of the workflow can handle retries, concurrency limits, and dead-letter handling with regular n8n nodes.

  ## Installation

  Follow the [n8n community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/), or install the package directly:

  ```bash
  npm install n8n-nodes-resilience
  ```

  ## Node

  This package registers one regular n8n node: **Resilience**.

  Resources and operations:

  - **Retry Strategy**: Evaluate
  - **Concurrency Gate**: Acquire, Release, Inspect, Force Release
  - **Dead Letter Queue**: Format Failed Item

  ## Retry Strategy

  Use the **Retry Strategy** resource after a risky operation such as an HTTP Request node.

  ```text
  HTTP Request
    -> Resilience (Retry Strategy: Evaluate)
    -> output 1 Success / Continue
    -> output 2 Retry -> Wait -> loop back to HTTP Request
    -> output 3 Exhausted -> Resilience (Dead Letter Queue: Format Failed Item)
  ```

  Retry Strategy does not sleep internally. It calculates `__retry.delaySeconds` and routes the item. Use an n8n Wait node on the Retry output to perform the actual delay before looping back to the risky operation.

  Metadata added to each item:

  ```json
  {
    "__retry": {
      "shouldRetry": true,
      "attempt": 1,
      "maxAttempts": 3,
      "strategy": "exponential",
      "delaySeconds": 5,
      "reason": "Status code 503 is retryable",
      "exhausted": false
    }
  }
  ```

  Default retryable status codes are `408,429,500,502,503,504`. Default permanent stop codes are `400,401,403,404`.

  ## Concurrency Gate

  Use the **Concurrency Gate** resource to protect a section that should only have a limited number of active items/executions.

  ```text
  Resilience (Concurrency Gate: Acquire)
    -> Acquired / Allowed -> protected work
    -> Blocked -> wait, retry, or skip

  protected work -> Resilience (Concurrency Gate: Release)
  ```

  Acquire creates a lock with a TTL and outputs `__concurrencyGate.lockId`. Release can use that lock ID from `__concurrencyGate.lockId`, or an explicit Lock ID parameter.

  Important limitation: Concurrency Gate v1 uses n8n workflow static data as a best-effort lock store. It is useful for simple local and single-worker setups, but it is not a perfect distributed lock in all multi-worker, queue-mode, or horizontally scaled deployments. For strict distributed concurrency, use an external lock service or database-backed workflow design.

  Metadata added to each item:

  ```json
  {
    "__concurrencyGate": {
      "key": "customer-123",
      "acquired": true,
      "activeCount": 1,
      "maxConcurrent": 1,
      "reason": "Lock acquired",
      "lockId": "lock_mabc1234_abcd5678",
      "expiresAt": "2026-05-24T12:00:00.000Z"
    }
  }
  ```

  ## Dead Letter Queue

  Use the **Dead Letter Queue** resource at permanent failure paths, especially after Retry Strategy's Exhausted output.

  ```text
  Resilience (Retry Strategy: Exhausted)
    -> Resilience (Dead Letter Queue: Format Failed Item)
    -> Google Sheets / Postgres / Slack / Notion / S3 / Webhook / database node
  ```

  The v1 operation is **Format Failed Item** and the destination mode is Output Only. This is intentional: the node formats a durable dead-letter item, and users can connect any regular n8n destination node for storage, notification, or replay.

  Example output:

  ```json
  {
    "deadLetterId": "dlq_mabc1234_abcd5678",
    "timestamp": "2026-05-24T12:00:00.000Z",
    "reason": "Request failed",
    "sourceNode": "Dead Letter Queue",
    "workflowId": "workflow-id",
    "workflowName": "Production workflow",
    "executionId": "12345",
    "originalPayload": {},
    "error": {},
    "retry": {}
  }
  ```

  ## Example Workflows

  ### HTTP Retry With Dead Letter

  1. HTTP Request calls an external API.
  2. Resilience with Retry Strategy evaluates `statusCode` and `message`.
  3. Retry output goes to Wait using `{{$json.__retry.delaySeconds}}`.
  4. Wait loops back to HTTP Request.
  5. Exhausted output goes to Resilience with Dead Letter Queue.
  6. The dead-letter output connects to a storage or alerting node.

  ### Concurrency-Limited Section

  1. Resilience with Concurrency Gate Acquire uses key `={{$json.customerId}}`.
  2. Acquired output does the protected work.
  3. The final node releases `{{$json.__concurrencyGate.lockId}}`.
  4. Blocked output waits, retries, or skips based on workflow needs.

  ## Development

  ```bash
  npm install
  npm run build
  npm run lint
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Production-grade resilience utilities for n8n workflows. It helps manage retries, concurrency limits, and dead-letter handling by inspecting item data, adding metadata, and routing items through workflow branches.","capabilities":["Retry Strategy: Evaluate retryability and route items to Success/Continue, Retry, or Exhausted outputs","Concurrency Gate: Acquire, Release, Inspect, and Force Release concurrency locks","Dead Letter Queue: Format Failed Item for permanent failure handling","Adds structured metadata such as __retry and __concurrencyGate to workflow items","Calculates retry delaySeconds without sleeping internally so a Wait node can perform the delay"],"authentication":"None","commonUseCases":["Retrying failed HTTP/API requests with backoff and looping through a Wait node","Limiting the number of concurrent executions for a protected workflow section","Formatting failed items for storage, alerting, or later replay via a dead-letter queue"],"limitations":["Retry Strategy does not perform the delay itself; a separate n8n Wait node is required","Concurrency Gate v1 uses workflow static data as a best-effort lock store and is not a perfect distributed lock in multi-worker, queue-mode, or horizontally scaled deployments","Dead Letter Queue v1 is output-only and requires a separate n8n destination node for storage or notification"],"relatedNodes":["HTTP Request","Wait","Google Sheets","Postgres","Slack"]}


node_type: @syndie/n8n-nodes-syndie.syndieTrigger
package_name: @syndie/n8n-nodes-syndie
display_name: Syndie Trigger
description: Syndie webhook trigger with OAuth integration
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: perrenial
author_github_url: https://github.com/Syndie-io/n8n-nodes-syndie.git
npm_package_name: @syndie/n8n-nodes-syndie
npm_version: 0.3.2
community_fetched_at: 2026-07-14T14:40:34.628Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # Syndie n8n Community Node

  Connect your n8n workflows to [Syndie.io](https://syndie.io) with OAuth2. This
  package provides two nodes that share a single credential:

  - **Syndie Trigger** — starts a workflow when Syndie sends an event (a reverse
    webhook: Syndie → n8n).
  - **Syndie** — an action node that pushes data *into* Syndie (n8n → Syndie).
    Today it supports **Lead → Create**.

  ## Features

  - Secure OAuth2 authentication (Authorization Code + PKCE)
  - Webhook **trigger** for Syndie lead events
  - **Action** to create leads in your Syndie account
  - Provider-agnostic backend (the same API powers Zapier / n8n / Make)
  - Usable as AI agent tools (`usableAsTool`)

  All nodes connect to the Syndie **production** API (`https://api.syndie.io`).

  ---

  ## Installation

  In n8n: **Settings → Community Nodes → Install** and enter:

  ```
  @syndie/n8n-nodes-syndie
  ```

  Requires `N8N_COMMUNITY_PACKAGES_ENABLED=true` on self-hosted instances. Once the
  package is accepted into n8n's **Verified Community Nodes** program it installs
  directly from the in-app nodes panel (including on n8n Cloud) without that flag.

  > **Contributing / building from source?** See
  > [CONTRIBUTING.md](./CONTRIBUTING.md) for the local dev loop and release process,
  > and [ARCHITECTURE.md](./ARCHITECTURE.md) for how the nodes, credential, and
  > Syndie backend fit together.

  ---

  ## Credentials

  Both nodes use the single **Syndie OAuth2 API** credential.

  1. Enter the **Client ID** provided by Syndie.
  2. Client ID: Syndie, Client Secret: Syndie
  3. Click **Connect** and complete the OAuth2 (PKCE) flow.

  The Authorization and Token URLs are fixed to the Syndie production API, so there
  is nothing else to configure.

  > **Self-hosted note:** the OAuth redirect URI
  > `https://<your-n8n-host>/rest/oauth2-credential/callback` must be allowlisted
  > on the Syndie backend, or "Connect" is rejected. See
  > [docs/testing-self-hosted.md](./docs/testing-self-hosted.md).

  ---

  ## Usage

  ### Syndie Trigger

  1. Add the **Syndie Trigger** node and select the credential.
  2. **Activate** the workflow — this registers n8n's webhook URL with Syndie.
  3. When a lead event occurs, Syndie POSTs it to n8n and the workflow runs. The
     incoming JSON is emitted as the first item.

  See [docs/n8n-trigger.md](./docs/n8n-trigger.md) for the lifecycle and payload
  details.

  ### Syndie (Create Lead)

  1. Add the **Syndie** node → Resource **Lead**, Operation **Create**.
  2. Add lead details under **Additional Fields** (name, job title, company,
     location, LinkedIn URL, …). All fields are optional; empty ones are omitted.
  3. Execute — the node creates the lead in your connected account and returns it.

  See [docs/n8n-action.md](./docs/n8n-action.md) for the request/response contract.

  ---

  ## Testing

  To run both nodes end-to-end against a Syndie backend from a publicly-reachable
  n8n, follow [docs/testing-self-hosted.md](./docs/testing-self-hosted.md).

  ## Troubleshooting

  - Ensure the **Syndie OAuth2 API** credential is connected.
  - For the trigger, make sure `WEBHOOK_URL` points at your public host (not
    `localhost`) and the workflow is **Active**.
  - Check the n8n **Executions** tab and logs for delivery/registration errors.

  ## License

  [MIT](./LICENSE.md)

  ## Support

  For help, contact [support@syndie.io](mailto:support@syndie.io).

  ## Links

  - [Syndie.io](https://syndie.io)
  - [n8n Documentation](https://docs.n8n.io)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Syndie sends lead events via webhook, using OAuth2 authentication. It is part of a paired node package that also includes an action node for sending data into Syndie.","capabilities":["Webhook trigger for Syndie lead events","Registers n8n webhook URL with Syndie when the workflow is activated","Receives incoming lead event JSON and emits it as the first item","Uses shared Syndie OAuth2 API credential","Connects to the Syndie production API","Usable as an AI agent tool"],"authentication":"OAuth2 (Authorization Code + PKCE) using the shared Syndie OAuth2 API credential","commonUseCases":["Start a workflow when a new lead event occurs in Syndie","Process and route incoming Syndie lead data in n8n","Build AI-agent-enabled workflows that react to Syndie events"],"limitations":["Requires the workflow to be active for webhook registration and event delivery","Self-hosted instances require WEBHOOK_URL to point to a public host, not localhost","OAuth redirect URI must be allowlisted on the Syndie backend for self-hosted setups","This node only handles trigger functionality; create-lead actions are in the separate Syndie node"],"relatedNodes":["Syndie"]}


node_type: @syndie/n8n-nodes-syndie.syndie
package_name: @syndie/n8n-nodes-syndie
display_name: Syndie
description: Send leads to Syndie
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: perrenial
author_github_url: https://github.com/Syndie-io/n8n-nodes-syndie.git
npm_package_name: @syndie/n8n-nodes-syndie
npm_version: 0.3.2
community_fetched_at: 2026-07-14T14:40:34.629Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "lead",
      "options": [
        {
          "name": "Lead",
          "value": "lead"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a lead",
          "description": "Add a lead to the connected Syndie account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a lead",
      "description": "Add a lead to the connected Syndie account",
      "resource": "lead"
    }
  ]

npm_readme:
  # Syndie n8n Community Node

  Connect your n8n workflows to [Syndie.io](https://syndie.io) with OAuth2. This
  package provides two nodes that share a single credential:

  - **Syndie Trigger** — starts a workflow when Syndie sends an event (a reverse
    webhook: Syndie → n8n).
  - **Syndie** — an action node that pushes data *into* Syndie (n8n → Syndie).
    Today it supports **Lead → Create**.

  ## Features

  - Secure OAuth2 authentication (Authorization Code + PKCE)
  - Webhook **trigger** for Syndie lead events
  - **Action** to create leads in your Syndie account
  - Provider-agnostic backend (the same API powers Zapier / n8n / Make)
  - Usable as AI agent tools (`usableAsTool`)

  All nodes connect to the Syndie **production** API (`https://api.syndie.io`).

  ---

  ## Installation

  In n8n: **Settings → Community Nodes → Install** and enter:

  ```
  @syndie/n8n-nodes-syndie
  ```

  Requires `N8N_COMMUNITY_PACKAGES_ENABLED=true` on self-hosted instances. Once the
  package is accepted into n8n's **Verified Community Nodes** program it installs
  directly from the in-app nodes panel (including on n8n Cloud) without that flag.

  > **Contributing / building from source?** See
  > [CONTRIBUTING.md](./CONTRIBUTING.md) for the local dev loop and release process,
  > and [ARCHITECTURE.md](./ARCHITECTURE.md) for how the nodes, credential, and
  > Syndie backend fit together.

  ---

  ## Credentials

  Both nodes use the single **Syndie OAuth2 API** credential.

  1. Enter the **Client ID** provided by Syndie.
  2. Client ID: Syndie, Client Secret: Syndie
  3. Click **Connect** and complete the OAuth2 (PKCE) flow.

  The Authorization and Token URLs are fixed to the Syndie production API, so there
  is nothing else to configure.

  > **Self-hosted note:** the OAuth redirect URI
  > `https://<your-n8n-host>/rest/oauth2-credential/callback` must be allowlisted
  > on the Syndie backend, or "Connect" is rejected. See
  > [docs/testing-self-hosted.md](./docs/testing-self-hosted.md).

  ---

  ## Usage

  ### Syndie Trigger

  1. Add the **Syndie Trigger** node and select the credential.
  2. **Activate** the workflow — this registers n8n's webhook URL with Syndie.
  3. When a lead event occurs, Syndie POSTs it to n8n and the workflow runs. The
     incoming JSON is emitted as the first item.

  See [docs/n8n-trigger.md](./docs/n8n-trigger.md) for the lifecycle and payload
  details.

  ### Syndie (Create Lead)

  1. Add the **Syndie** node → Resource **Lead**, Operation **Create**.
  2. Add lead details under **Additional Fields** (name, job title, company,
     location, LinkedIn URL, …). All fields are optional; empty ones are omitted.
  3. Execute — the node creates the lead in your connected account and returns it.

  See [docs/n8n-action.md](./docs/n8n-action.md) for the request/response contract.

  ---

  ## Testing

  To run both nodes end-to-end against a Syndie backend from a publicly-reachable
  n8n, follow [docs/testing-self-hosted.md](./docs/testing-self-hosted.md).

  ## Troubleshooting

  - Ensure the **Syndie OAuth2 API** credential is connected.
  - For the trigger, make sure `WEBHOOK_URL` points at your public host (not
    `localhost`) and the workflow is **Active**.
  - Check the n8n **Executions** tab and logs for delivery/registration errors.

  ## License

  [MIT](./LICENSE.md)

  ## Support

  For help, contact [support@syndie.io](mailto:support@syndie.io).

  ## Links

  - [Syndie.io](https://syndie.io)
  - [n8n Documentation](https://docs.n8n.io)

ai_documentation_summary:
  {"purpose":"This node sends data from n8n into Syndie.io. It is currently focused on creating leads in a connected Syndie account.","capabilities":["Create a Lead in Syndie","Send lead fields such as name, job title, company, location, and LinkedIn URL","Use the shared Syndie OAuth2 API credential","Operate against the Syndie production API","Usable as an AI agent tool"],"authentication":"OAuth2 (Authorization Code + PKCE) via the Syndie OAuth2 API credential","commonUseCases":["Push new lead records from n8n into Syndie","Populate Syndie with lead data collected from forms, webhooks, or other workflows","Use the node as a tool in AI-agent-driven workflows to create leads"],"limitations":["Currently only supports Lead → Create","Uses the Syndie production API only","Self-hosted n8n requires the OAuth redirect URI to be allowlisted on the Syndie backend"],"relatedNodes":["Syndie Trigger"]}


node_type: @admin_programini/n8n-nodes-monitorix360.monitorix360
package_name: @admin_programini/n8n-nodes-monitorix360
display_name: Monitorix 360
category: Community
development_style: declarative
version: 4
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: admin_programini
author_github_url: https://github.com/vmagprogramini/n8n-nodes-monitorix360.git
npm_package_name: @admin_programini/n8n-nodes-monitorix360
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.630Z
ai_summary_generated_at: 2026-07-06 09:55:11
description:
  Call the Monitorix Web.Api — websites, servers, teams, and monitored-task heartbeat pings (integration API key or ping credentials).

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "website",
      "options": [
        {
          "name": "Alert",
          "value": "alert"
        },
        {
          "name": "Expiring Secret",
          "value": "expiringSecret"
        },
        {
          "name": "Monitored Task",
          "value": "monitoredTask"
        },
        {
          "name": "Notification",
          "value": "notifications"
        },
        {
          "name": "Ping",
          "value": "ping"
        },
        {
          "name": "Server",
          "value": "server"
        },
        {
          "name": "Server Report",
          "value": "serverReport"
        },
        {
          "name": "Server SLA",
          "value": "serverSla"
        },
        {
          "name": "Server Usage",
          "value": "serverUsage"
        },
        {
          "name": "Team",
          "value": "team"
        },
        {
          "name": "Team Task",
          "value": "teamTask"
        },
        {
          "name": "User Preference",
          "value": "userPreference"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        },
        {
          "name": "Website",
          "value": "website"
        },
        {
          "name": "Website Report",
          "value": "websiteReport"
        },
        {
          "name": "Website SLA",
          "value": "websiteSla"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "team_getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "team_getAll",
          "action": "List all teams for the current user",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "teams"
                  }
                }
              ]
            },
            "request": {
              "url": "/users/profile",
              "method": "GET"
            }
          },
          "description": "Reads GET /users/profile and returns the teams array"
        },
        {
          "name": "Get By ID",
          "value": "team_getById",
          "action": "Get team by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single team record"
        },
        {
          "name": "Get Members",
          "value": "team_getMembers",
          "action": "List team members",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/members",
              "method": "GET"
            }
          },
          "description": "Returns paginated members with roles for the team"
        },
        {
          "name": "Get Events",
          "value": "team_getEvents",
          "action": "List team events",
          "routing": {
            "request": {
              "qs": {
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/events",
              "method": "GET"
            }
          },
          "description": "Returns team-wide events (maintenance, certificate expirations, integration API key expirations) within the date range"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "website_getAll",
      "options": [
        {
          "name": "Get Websites",
          "value": "website_getAll",
          "action": "List websites for a team",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites",
              "method": "GET"
            }
          },
          "description": "Returns all websites monitored under the selected team"
        },
        {
          "name": "Get Website Details",
          "value": "website_getById",
          "action": "Get website by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}",
              "method": "GET"
            }
          },
          "description": "Returns full details for a single website"
        },
        {
          "name": "Get Response Times",
          "value": "website_getResponseTimes",
          "action": "Get response times for a website",
          "routing": {
            "request": {
              "qs": {
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
                "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/response-times",
              "method": "GET"
            }
          },
          "description": "Retrieves historical response time data for a website. Optionally filters by start and end date to get response times within a specific time range."
        },
        {
          "name": "Get Ports",
          "value": "website_getPorts",
          "action": "List monitored ports for a website",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/ports",
              "method": "GET"
            }
          },
          "description": "Returns paginated custom and detected ports for the website"
        },
        {
          "name": "Get Maintenance Windows",
          "value": "website_getMaintenanceWindows",
          "action": "List website maintenance windows",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/maintenance-windows",
              "method": "GET"
            }
          },
          "description": "Returns scheduled maintenance windows that exclude downtime from SLA"
        },
        {
          "name": "Get Events",
          "value": "website_getEvents",
          "action": "List website events",
          "routing": {
            "request": {
              "qs": {
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/events",
              "method": "GET"
            }
          },
          "description": "Returns maintenance, certificate, and SLA-related events; optional date range"
        },
        {
          "name": "Get Alert Preferences",
          "value": "website_getAlertPreferences",
          "action": "Get website alert preferences",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/alert-preferences",
              "method": "GET"
            }
          },
          "description": "Returns alert preferences configured for the website"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "website"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "server_getAll",
      "options": [
        {
          "name": "Get Servers",
          "value": "server_getAll",
          "action": "List servers for a team",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers",
              "method": "GET"
            }
          },
          "description": "Returns all servers monitored under the selected team"
        },
        {
          "name": "Get Server Details",
          "value": "server_getById",
          "action": "Get server by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}",
              "method": "GET"
            }
          },
          "description": "Returns full details for a single server"
        },
        {
          "name": "Get Ports",
          "value": "server_getPorts",
          "action": "List monitored ports for a server",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/ports",
              "method": "GET"
            }
          },
          "description": "Returns paginated ports configured for the server"
        },
        {
          "name": "Get Maintenance Windows",
          "value": "server_getMaintenanceWindows",
          "action": "List server maintenance windows",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/maintenance-windows",
              "method": "GET"
            }
          },
          "description": "Returns maintenance windows when monitoring jobs are paused"
        },
        {
          "name": "Get Events",
          "value": "server_getEvents",
          "action": "List server events",
          "routing": {
            "request": {
              "qs": {
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/events",
              "method": "GET"
            }
          },
          "description": "Returns maintenance, certificate, and SLA-related events; optional date range"
        },
        {
          "name": "Get Certificates",
          "value": "server_getCertificates",
          "action": "List server certificate reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/certificates",
              "method": "GET"
            }
          },
          "description": "Returns paginated certificate data from the latest server reports"
        },
        {
          "name": "Get Users",
          "value": "server_getUsers",
          "action": "List users from latest server report",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/users",
              "method": "GET"
            }
          },
          "description": "Returns paginated user accounts seen in the latest report"
        },
        {
          "name": "Get Alert Preferences",
          "value": "server_getAlertPreferences",
          "action": "Get server alert preferences",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/alert-preferences",
              "method": "GET"
            }
          },
          "description": "Returns alert preferences configured for the server"
        },
        {
          "name": "Get Identity Mismatches",
          "value": "server_getIdentityMismatches",
          "action": "List server identity mismatches",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/identity-mismatches",
              "method": "GET"
            }
          },
          "description": "Returns identity mismatch snapshots for the server"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "server"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "website_getSlaConfigurations",
      "options": [
        {
          "name": "Get SLA Configurations",
          "value": "website_getSlaConfigurations",
          "action": "Get SLA configurations for a website",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla-configurations",
              "method": "GET"
            }
          },
          "description": "Retrieves all SLA configurations for a website"
        },
        {
          "name": "Get SLA",
          "value": "website_getSla",
          "action": "Get website SLA configurations",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla",
              "method": "GET"
            }
          },
          "description": "Retrieves SLA configurations for a website (alternate route)"
        },
        {
          "name": "Get SLA Breaches",
          "value": "website_getSlaBreaches",
          "action": "Get website SLA breaches",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla/breaches",
              "method": "GET"
            }
          },
          "description": "Retrieves a paginated list of SLA breach records for a website, optionally filtered by date range"
        },
        {
          "name": "Get SLA Breaches By Configuration",
          "value": "website_getSlaBreachesByConfiguration",
          "action": "Get website SLA breaches for a configuration",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla-configurations/{{$parameter.slaConfigurationId}}/breaches",
              "method": "GET"
            }
          },
          "description": "Retrieves paginated SLA breach records for a specific SLA configuration, optionally filtered by date range"
        },
        {
          "name": "Get SLA Report",
          "value": "website_getSlaReport",
          "action": "Download website SLA report PDF",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "lang": "={{ $parameter.queryLang || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla/report",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Generates and downloads a customer-facing SLA report in PDF format. Language via query or Accept-Language; period defaults to current month if dates omitted."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "websiteSla"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "website_getReportsAvailability",
      "options": [
        {
          "name": "Get Reports: Availability",
          "value": "website_getReportsAvailability",
          "action": "Get website availability reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/availability",
              "method": "GET"
            }
          },
          "description": "Retrieves the availability reports of a website"
        },
        {
          "name": "Get Reports: Certificates",
          "value": "website_getReportsCertificates",
          "action": "Get website certificate reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/certificates",
              "method": "GET"
            }
          },
          "description": "Retrieves the certificate reports of a website"
        },
        {
          "name": "Get Reports: DNS",
          "value": "website_getReportsDns",
          "action": "Get website DNS reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/dns",
              "method": "GET"
            }
          },
          "description": "Retrieves the DNS reports of a website"
        },
        {
          "name": "Get Reports: Page Speed",
          "value": "website_getReportsPageSpeed",
          "action": "Get website page speed reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/page-speed",
              "method": "GET"
            }
          },
          "description": "Retrieves the page speed reports of a website"
        },
        {
          "name": "Get Reports: Page Speed By ID",
          "value": "website_getReportsPageSpeedById",
          "action": "Get page speed report by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/page-speed/{{$parameter.reportId}}",
              "method": "GET"
            }
          },
          "description": "Retrieves detailed information about a specific page speed report by its ID for a website, including performance, seo, accessibility, best practices, and core web vitals"
        },
        {
          "name": "Get Reports: Security",
          "value": "website_getReportsSecurity",
          "action": "Get website security reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/security",
              "method": "GET"
            }
          },
          "description": "Retrieves the security reports of a website"
        },
        {
          "name": "Get Reports: Security By ID",
          "value": "website_getReportsSecurityById",
          "action": "Get security report by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/security/{{$parameter.reportId}}",
              "method": "GET"
            }
          },
          "description": "Retrieves detailed information about a specific security report by its ID for a website, including vulnerability details and scan summary"
        },
        {
          "name": "Get Last PageSpeed Report",
          "value": "website_getPageSpeedLast",
          "action": "Get last PageSpeed report for a website",
          "routing": {
            "request": {
              "qs": {
                "strategy": "={{ $parameter.queryPageSpeedStrategy || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/pagespeed/last",
              "method": "GET"
            }
          },
          "description": "Returns the most recent PageSpeed report for the website"
        },
        {
          "name": "Get Last Security Report",
          "value": "website_getSecurityReportLast",
          "action": "Get last security report for a website",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/security-reports/last",
              "method": "GET"
            }
          },
          "description": "Returns the most recent security report for the website"
        },
        {
          "name": "Export Security Report Excel",
          "value": "website_exportSecurityExcel",
          "action": "Export security report to Excel",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/security/{{$parameter.reportId}}/export/excel",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Downloads a security report as an Excel file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "websiteReport"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "serverReport_getCpuMetrics",
      "options": [
        {
          "name": "Get CPU Metrics",
          "value": "serverReport_getCpuMetrics",
          "action": "List CPU metrics reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/cpu",
              "method": "GET"
            }
          },
          "description": "Paginated CPU metrics reports for the server (Gridify)"
        },
        {
          "name": "Get Disk Metrics",
          "value": "serverReport_getDiskMetrics",
          "action": "List disk metrics reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/disk",
              "method": "GET"
            }
          },
          "description": "Paginated disk metrics reports for the server (Gridify)"
        },
        {
          "name": "Get Memory Metrics",
          "value": "serverReport_getMemoryMetrics",
          "action": "List memory metrics reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/memory",
              "method": "GET"
            }
          },
          "description": "Paginated memory metrics reports for the server (Gridify)"
        },
        {
          "name": "Get Network Metrics",
          "value": "serverReport_getNetworkMetrics",
          "action": "List network metrics reports",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/network",
              "method": "GET"
            }
          },
          "description": "Paginated network metrics reports for the server (Gridify)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serverReport"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "serverUsage_getCpuUsage",
      "options": [
        {
          "name": "Get CPU Usage",
          "value": "serverUsage_getCpuUsage",
          "action": "Get CPU usage time series",
          "routing": {
            "request": {
              "qs": {
                "type": "={{ $parameter.queryUsageType || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
                "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/cpu",
              "method": "GET"
            }
          },
          "description": "CPU usage over the selected range; requires start/end dates, optional usage type and max data points"
        },
        {
          "name": "Get Disk Usage",
          "value": "serverUsage_getDiskUsage",
          "action": "Get disk I/O usage time series",
          "routing": {
            "request": {
              "qs": {
                "type": "={{ $parameter.queryUsageType || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
                "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/disk",
              "method": "GET"
            }
          },
          "description": "Disk read/write rates over the selected range; requires start/end dates"
        },
        {
          "name": "Get Disk Space",
          "value": "serverUsage_getDiskSpace",
          "action": "Get current disk space snapshot",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/disk-space",
              "method": "GET"
            }
          },
          "description": "Latest disk/partition usage and free space from the most recent report"
        },
        {
          "name": "Get Memory Usage",
          "value": "serverUsage_getMemoryUsage",
          "action": "Get memory usage time series",
          "routing": {
            "request": {
              "qs": {
                "type": "={{ $parameter.queryUsageType || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
                "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/memory",
              "method": "GET"
            }
          },
          "description": "Memory usage over the selected range; requires start/end dates"
        },
        {
          "name": "Get Network Usage",
          "value": "serverUsage_getNetworkUsage",
          "action": "Get network usage time series",
          "routing": {
            "request": {
              "qs": {
                "type": "={{ $parameter.queryUsageType || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
                "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/network",
              "method": "GET"
            }
          },
          "description": "Network throughput over the selected range; requires start/end dates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serverUsage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "serverSla_getSlaConfigurations",
      "options": [
        {
          "name": "Get SLA Configurations",
          "value": "serverSla_getSlaConfigurations",
          "action": "List server SLA configurations",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla-configurations",
              "method": "GET"
            }
          },
          "description": "Paginated SLA configuration definitions for the server"
        },
        {
          "name": "Get SLA",
          "value": "serverSla_getSla",
          "action": "Get server SLA configurations",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla",
              "method": "GET"
            }
          },
          "description": "Retrieves SLA configurations for a server (alternate route)"
        },
        {
          "name": "Get SLA Breaches",
          "value": "serverSla_getSlaBreaches",
          "action": "List server SLA breaches",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla/breaches",
              "method": "GET"
            }
          },
          "description": "Paginated SLA breach records with optional date filters"
        },
        {
          "name": "Get SLA Breaches By Configuration",
          "value": "serverSla_getSlaBreachesByConfiguration",
          "action": "List server SLA breaches for a configuration",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla-configurations/{{$parameter.slaConfigurationId}}/breaches",
              "method": "GET"
            }
          },
          "description": "Paginated SLA breach records for a specific SLA configuration, optionally filtered by date range"
        },
        {
          "name": "Get SLA Report PDF",
          "value": "serverSla_getSlaReport",
          "action": "Download server SLA report PDF",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "end": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "lang": "={{ $parameter.queryLang || undefined }}",
                "start": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla/report",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Generates and downloads a customer-facing SLA report PDF for the server"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serverSla"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "notifications_getAll",
      "options": [
        {
          "name": "Get All (Team)",
          "value": "notifications_getAll",
          "action": "List team-wide alert occurrences",
          "routing": {
            "request": {
              "qs": {
                "limit": "={{ $parameter.queryLimit || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/notifications",
              "method": "GET"
            }
          },
          "description": "Alert occurrences for the whole team; optional date range and limit"
        },
        {
          "name": "Get By Server",
          "value": "notifications_getServers",
          "action": "List server alert occurrences",
          "routing": {
            "request": {
              "qs": {
                "limit": "={{ $parameter.queryLimit || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/notifications",
              "method": "GET"
            }
          },
          "description": "Alert occurrences scoped to one server; optional date range and limit"
        },
        {
          "name": "Get By Website",
          "value": "notifications_getWebsites",
          "action": "List website alert occurrences",
          "routing": {
            "request": {
              "qs": {
                "limit": "={{ $parameter.queryLimit || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/notifications",
              "method": "GET"
            }
          },
          "description": "Alert occurrences scoped to one website; optional date range and limit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "notifications"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "user_getExpiringSecretAlertPreferences",
      "options": [
        {
          "name": "Get Expiring Secret Alert Preferences",
          "value": "user_getExpiringSecretAlertPreferences",
          "action": "Get expiring secret alert preferences",
          "routing": {
            "request": {
              "qs": {
                "teamId": "={{ $parameter.optionalTeamId || undefined }}"
              },
              "url": "/users/me/expiring-secret-alert-preferences",
              "method": "GET"
            }
          },
          "description": "Returns user alert preferences for expiring secrets; optional team filter"
        },
        {
          "name": "Get Monitored Task Alert Preferences",
          "value": "user_getMonitoredTaskAlertPreferences",
          "action": "Get monitored task alert preferences",
          "routing": {
            "request": {
              "qs": {
                "teamId": "={{ $parameter.optionalTeamId || undefined }}"
              },
              "url": "/users/me/monitored-task-alert-preferences",
              "method": "GET"
            }
          },
          "description": "Returns user alert preferences for monitored tasks; optional team filter"
        },
        {
          "name": "Get Server Alert Preferences",
          "value": "user_getServerAlertPreferences",
          "action": "Get server alert preferences",
          "routing": {
            "request": {
              "url": "/users/server-alert-preferences",
              "method": "GET"
            }
          },
          "description": "Returns the authenticated user server alert preferences"
        },
        {
          "name": "Get Website Alert Preferences",
          "value": "user_getWebsiteAlertPreferences",
          "action": "Get website alert preferences",
          "routing": {
            "request": {
              "url": "/users/website-alert-preferences",
              "method": "GET"
            }
          },
          "description": "Returns the authenticated user website alert preferences"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userPreference"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitoredTask_getAll",
      "options": [
        {
          "name": "Get Badges",
          "value": "monitoredTask_getBadges",
          "action": "List monitored task badges",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/monitored-task-badges",
              "method": "GET"
            }
          },
          "description": "Returns monitored task badge counts for the team"
        },
        {
          "name": "Get Monitored Tasks",
          "value": "monitoredTask_getAll",
          "action": "List monitored tasks",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks",
              "method": "GET"
            }
          },
          "description": "Returns paginated monitored tasks for the team"
        },
        {
          "name": "Get Monitored Task By ID",
          "value": "monitoredTask_getById",
          "action": "Get monitored task by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single monitored task"
        },
        {
          "name": "Get Events",
          "value": "monitoredTask_getEvents",
          "action": "List monitored task events",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
                "eventTypes": "={{ $parameter.queryEventTypes || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/events",
              "method": "GET"
            }
          },
          "description": "Returns paginated events for a monitored task"
        },
        {
          "name": "Get Maintenance Windows",
          "value": "monitoredTask_getMaintenanceWindows",
          "action": "List monitored task maintenance windows",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/maintenance-windows",
              "method": "GET"
            }
          },
          "description": "Returns maintenance windows for a monitored task"
        },
        {
          "name": "Get Execution Report",
          "value": "monitoredTask_getReport",
          "action": "Get monitored task execution report",
          "routing": {
            "request": {
              "qs": {
                "to": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "from": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/report",
              "method": "GET"
            }
          },
          "description": "Returns execution report data for a monitored task"
        },
        {
          "name": "Get Execution Report PDF",
          "value": "monitoredTask_getReportPdf",
          "action": "Download monitored task execution report PDF",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "to": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "from": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
                "lang": "={{ $parameter.queryLang || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/report/pdf",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Downloads execution report as PDF"
        },
        {
          "name": "Get SLA",
          "value": "monitoredTask_getSla",
          "action": "Get monitored task SLA status",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla",
              "method": "GET"
            }
          },
          "description": "Returns SLA status for a monitored task"
        },
        {
          "name": "Get SLA Breaches",
          "value": "monitoredTask_getSlaBreaches",
          "action": "List monitored task SLA breaches",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla/breaches",
              "method": "GET"
            }
          },
          "description": "Returns paginated SLA breaches for a monitored task"
        },
        {
          "name": "Get SLA Breaches By Configuration",
          "value": "monitoredTask_getSlaBreachesByConfiguration",
          "action": "List SLA breaches for a configuration",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla-configurations/{{$parameter.slaConfigurationId}}/breaches",
              "method": "GET"
            }
          },
          "description": "Returns SLA breaches for a specific monitored task SLA configuration"
        },
        {
          "name": "Get Status Heatmap",
          "value": "monitoredTask_getStatusHeatmap",
          "action": "Get monitored task status heatmap",
          "routing": {
            "request": {
              "qs": {
                "days": "={{ $parameter.queryDays || undefined }}",
                "bucket": "={{ $parameter.queryBucket || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/status-heatmap",
              "method": "GET"
            }
          },
          "description": "Returns status heatmap for a single monitored task"
        },
        {
          "name": "Get SLA Report PDF",
          "value": "monitoredTask_getSlaReport",
          "action": "Download monitored task SLA report PDF",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "end": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "lang": "={{ $parameter.queryLang || undefined }}",
                "start": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla/report",
              "method": "GET",
              "encoding": "arraybuffer",
              "returnFullResponse": true
            }
          },
          "description": "Downloads SLA report PDF for a monitored task"
        },
        {
          "name": "Get SLA Configurations",
          "value": "monitoredTask_getSlaConfigurations",
          "action": "List monitored task SLA configurations",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla-configurations",
              "method": "GET"
            }
          },
          "description": "Returns paginated SLA configurations for a monitored task"
        },
        {
          "name": "Get Team Execution Report",
          "value": "monitoredTask_getTeamReport",
          "action": "Get team monitored tasks report",
          "routing": {
            "request": {
              "qs": {
                "to": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "from": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/report",
              "method": "GET"
            }
          },
          "description": "Returns aggregated execution report for all monitored tasks in the team"
        },
        {
          "name": "Get Team Status Heatmap",
          "value": "monitoredTask_getTeamStatusHeatmap",
          "action": "Get team monitored task status heatmap",
          "routing": {
            "request": {
              "qs": {
                "days": "={{ $parameter.queryDays || undefined }}",
                "bucket": "={{ $parameter.queryBucket || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/status-heatmap",
              "method": "GET"
            }
          },
          "description": "Returns status heatmap aggregated across monitored tasks for the team"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "monitoredTask"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "expiringSecret_getAll",
      "options": [
        {
          "name": "Get Expiring Secrets",
          "value": "expiringSecret_getAll",
          "action": "List expiring secrets",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/expiring-secrets",
              "method": "GET"
            }
          },
          "description": "Returns paginated expiring secrets for the team"
        },
        {
          "name": "Get Expiring Secret By ID",
          "value": "expiringSecret_getById",
          "action": "Get expiring secret by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/expiring-secrets/{{$parameter.expiringSecretId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single expiring secret record"
        },
        {
          "name": "Get Expiring Secret Events",
          "value": "expiringSecret_getEvents",
          "action": "List expiring secret events",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}",
                "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
                "eventTypes": "={{ $parameter.queryEventTypes || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/expiring-secrets/{{$parameter.expiringSecretId}}/events",
              "method": "GET"
            }
          },
          "description": "Returns events for an expiring secret with optional date and event-type filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "expiringSecret"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "alert_getServerAlerts",
      "options": [
        {
          "name": "Get Server Alerts",
          "value": "alert_getServerAlerts",
          "action": "List server alerts for a team",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/server-alerts",
              "method": "GET"
            }
          },
          "description": "Returns paginated server alert definitions for the team"
        },
        {
          "name": "Get Website Alerts",
          "value": "alert_getWebsiteAlerts",
          "action": "List website alerts for a team",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/website-alerts",
              "method": "GET"
            }
          },
          "description": "Returns paginated website alert definitions for the team"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "alert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "teamTask_getAll",
      "options": [
        {
          "name": "Get Tasks",
          "value": "teamTask_getAll",
          "action": "List team tasks",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.queryPage }}",
                "filter": "={{ $parameter.queryFilter || undefined }}",
                "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
                "pageSize": "={{ $parameter.queryPageSize }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/tasks",
              "method": "GET"
            }
          },
          "description": "Returns paginated tasks for the team"
        },
        {
          "name": "Get Task By ID",
          "value": "teamTask_getById",
          "action": "Get team task by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/tasks/{{$parameter.taskId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single team task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "teamTask"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "webhook_getServers",
      "options": [
        {
          "name": "Get Server Webhooks",
          "value": "webhook_getServers",
          "action": "List server webhooks",
          "routing": {
            "request": {
              "qs": {
                "serverId": "={{ $parameter.serverId || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/webhooks/servers",
              "method": "GET"
            }
          },
          "description": "Returns server webhooks for the team; optional serverId filter"
        },
        {
          "name": "Get Server Webhook By ID",
          "value": "webhook_getServerById",
          "action": "Get server webhook by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/webhooks/servers/{{$parameter.webhookId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single server webhook"
        },
        {
          "name": "Get Website Webhooks",
          "value": "webhook_getWebsites",
          "action": "List website webhooks",
          "routing": {
            "request": {
              "qs": {
                "websiteId": "={{ $parameter.websiteId || undefined }}"
              },
              "url": "=/teams/{{$parameter.teamId}}/webhooks/websites",
              "method": "GET"
            }
          },
          "description": "Returns website webhooks for the team; optional websiteId filter"
        },
        {
          "name": "Get Website Webhook By ID",
          "value": "webhook_getWebsiteById",
          "action": "Get website webhook by ID",
          "routing": {
            "request": {
              "url": "=/teams/{{$parameter.teamId}}/webhooks/websites/{{$parameter.webhookId}}",
              "method": "GET"
            }
          },
          "description": "Returns a single website webhook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ping_start",
      "options": [
        {
          "name": "Start",
          "value": "ping_start",
          "action": "Record task start ping",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/ping/{{$parameter.pingToken}}/start",
              "body": "={{ $parameter.httpMethod === \"POST\" && $parameter.sendJsonBody ? $parameter.jsonBody : undefined }}",
              "method": "={{$parameter.httpMethod}}"
            }
          },
          "description": "POST or GET /ping/{token}/start. POST may include an optional JSON object or array body (max 4 KB)."
        },
        {
          "name": "Success",
          "value": "ping_success",
          "action": "Record task success ping",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/ping/{{$parameter.pingToken}}/success",
              "body": "={{ $parameter.httpMethod === \"POST\" && $parameter.sendJsonBody ? $parameter.jsonBody : undefined }}",
              "method": "={{$parameter.httpMethod}}"
            }
          },
          "description": "POST or GET /ping/{token}/success. POST may include an optional JSON object or array body (max 4 KB)."
        },
        {
          "name": "Fail",
          "value": "ping_fail",
          "action": "Record task failure ping",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/ping/{{$parameter.pingToken}}/fail",
              "body": "={{ $parameter.httpMethod === \"POST\" && $parameter.sendJsonBody ? $parameter.jsonBody : undefined }}",
              "method": "={{$parameter.httpMethod}}"
            }
          },
          "description": "POST or GET /ping/{token}/fail. POST may include an optional JSON object or array body (max 4 KB)."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ping"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "team_getAll",
      "action": "List all teams for the current user",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "teams"
              }
            }
          ]
        },
        "request": {
          "url": "/users/profile",
          "method": "GET"
        }
      },
      "description": "Reads GET /users/profile and returns the teams array",
      "resource": "team"
    },
    {
      "name": "Get By ID",
      "value": "team_getById",
      "action": "Get team by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single team record",
      "resource": "team"
    },
    {
      "name": "Get Members",
      "value": "team_getMembers",
      "action": "List team members",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/members",
          "method": "GET"
        }
      },
      "description": "Returns paginated members with roles for the team",
      "resource": "team"
    },
    {
      "name": "Get Events",
      "value": "team_getEvents",
      "action": "List team events",
      "routing": {
        "request": {
          "qs": {
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/events",
          "method": "GET"
        }
      },
      "description": "Returns team-wide events (maintenance, certificate expirations, integration API key expirations) within the date range",
      "resource": "team"
    },
    {
      "name": "Get Websites",
      "value": "website_getAll",
      "action": "List websites for a team",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites",
          "method": "GET"
        }
      },
      "description": "Returns all websites monitored under the selected team",
      "resource": "website"
    },
    {
      "name": "Get Website Details",
      "value": "website_getById",
      "action": "Get website by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}",
          "method": "GET"
        }
      },
      "description": "Returns full details for a single website",
      "resource": "website"
    },
    {
      "name": "Get Response Times",
      "value": "website_getResponseTimes",
      "action": "Get response times for a website",
      "routing": {
        "request": {
          "qs": {
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
            "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/response-times",
          "method": "GET"
        }
      },
      "description": "Retrieves historical response time data for a website. Optionally filters by start and end date to get response times within a specific time range.",
      "resource": "website"
    },
    {
      "name": "Get Ports",
      "value": "website_getPorts",
      "action": "List monitored ports for a website",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/ports",
          "method": "GET"
        }
      },
      "description": "Returns paginated custom and detected ports for the website",
      "resource": "website"
    },
    {
      "name": "Get Maintenance Windows",
      "value": "website_getMaintenanceWindows",
      "action": "List website maintenance windows",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/maintenance-windows",
          "method": "GET"
        }
      },
      "description": "Returns scheduled maintenance windows that exclude downtime from SLA",
      "resource": "website"
    },
    {
      "name": "Get Events",
      "value": "website_getEvents",
      "action": "List website events",
      "routing": {
        "request": {
          "qs": {
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/events",
          "method": "GET"
        }
      },
      "description": "Returns maintenance, certificate, and SLA-related events; optional date range",
      "resource": "website"
    },
    {
      "name": "Get Alert Preferences",
      "value": "website_getAlertPreferences",
      "action": "Get website alert preferences",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/alert-preferences",
          "method": "GET"
        }
      },
      "description": "Returns alert preferences configured for the website",
      "resource": "website"
    },
    {
      "name": "Get Servers",
      "value": "server_getAll",
      "action": "List servers for a team",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers",
          "method": "GET"
        }
      },
      "description": "Returns all servers monitored under the selected team",
      "resource": "server"
    },
    {
      "name": "Get Server Details",
      "value": "server_getById",
      "action": "Get server by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}",
          "method": "GET"
        }
      },
      "description": "Returns full details for a single server",
      "resource": "server"
    },
    {
      "name": "Get Ports",
      "value": "server_getPorts",
      "action": "List monitored ports for a server",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/ports",
          "method": "GET"
        }
      },
      "description": "Returns paginated ports configured for the server",
      "resource": "server"
    },
    {
      "name": "Get Maintenance Windows",
      "value": "server_getMaintenanceWindows",
      "action": "List server maintenance windows",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/maintenance-windows",
          "method": "GET"
        }
      },
      "description": "Returns maintenance windows when monitoring jobs are paused",
      "resource": "server"
    },
    {
      "name": "Get Events",
      "value": "server_getEvents",
      "action": "List server events",
      "routing": {
        "request": {
          "qs": {
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/events",
          "method": "GET"
        }
      },
      "description": "Returns maintenance, certificate, and SLA-related events; optional date range",
      "resource": "server"
    },
    {
      "name": "Get Certificates",
      "value": "server_getCertificates",
      "action": "List server certificate reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/certificates",
          "method": "GET"
        }
      },
      "description": "Returns paginated certificate data from the latest server reports",
      "resource": "server"
    },
    {
      "name": "Get Users",
      "value": "server_getUsers",
      "action": "List users from latest server report",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/users",
          "method": "GET"
        }
      },
      "description": "Returns paginated user accounts seen in the latest report",
      "resource": "server"
    },
    {
      "name": "Get Alert Preferences",
      "value": "server_getAlertPreferences",
      "action": "Get server alert preferences",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/alert-preferences",
          "method": "GET"
        }
      },
      "description": "Returns alert preferences configured for the server",
      "resource": "server"
    },
    {
      "name": "Get Identity Mismatches",
      "value": "server_getIdentityMismatches",
      "action": "List server identity mismatches",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/identity-mismatches",
          "method": "GET"
        }
      },
      "description": "Returns identity mismatch snapshots for the server",
      "resource": "server"
    },
    {
      "name": "Get SLA Configurations",
      "value": "website_getSlaConfigurations",
      "action": "Get SLA configurations for a website",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla-configurations",
          "method": "GET"
        }
      },
      "description": "Retrieves all SLA configurations for a website",
      "resource": "websiteSla"
    },
    {
      "name": "Get SLA",
      "value": "website_getSla",
      "action": "Get website SLA configurations",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla",
          "method": "GET"
        }
      },
      "description": "Retrieves SLA configurations for a website (alternate route)",
      "resource": "websiteSla"
    },
    {
      "name": "Get SLA Breaches",
      "value": "website_getSlaBreaches",
      "action": "Get website SLA breaches",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla/breaches",
          "method": "GET"
        }
      },
      "description": "Retrieves a paginated list of SLA breach records for a website, optionally filtered by date range",
      "resource": "websiteSla"
    },
    {
      "name": "Get SLA Breaches By Configuration",
      "value": "website_getSlaBreachesByConfiguration",
      "action": "Get website SLA breaches for a configuration",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla-configurations/{{$parameter.slaConfigurationId}}/breaches",
          "method": "GET"
        }
      },
      "description": "Retrieves paginated SLA breach records for a specific SLA configuration, optionally filtered by date range",
      "resource": "websiteSla"
    },
    {
      "name": "Get SLA Report",
      "value": "website_getSlaReport",
      "action": "Download website SLA report PDF",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "lang": "={{ $parameter.queryLang || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/sla/report",
          "method": "GET",
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Generates and downloads a customer-facing SLA report in PDF format. Language via query or Accept-Language; period defaults to current month if dates omitted.",
      "resource": "websiteSla"
    },
    {
      "name": "Get Reports: Availability",
      "value": "website_getReportsAvailability",
      "action": "Get website availability reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/availability",
          "method": "GET"
        }
      },
      "description": "Retrieves the availability reports of a website",
      "resource": "websiteReport"
    },
    {
      "name": "Get Reports: Certificates",
      "value": "website_getReportsCertificates",
      "action": "Get website certificate reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/certificates",
          "method": "GET"
        }
      },
      "description": "Retrieves the certificate reports of a website",
      "resource": "websiteReport"
    },
    {
      "name": "Get Reports: DNS",
      "value": "website_getReportsDns",
      "action": "Get website DNS reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/dns",
          "method": "GET"
        }
      },
      "description": "Retrieves the DNS reports of a website",
      "resource": "websiteReport"
    },
    {
      "name": "Get Reports: Page Speed",
      "value": "website_getReportsPageSpeed",
      "action": "Get website page speed reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/page-speed",
          "method": "GET"
        }
      },
      "description": "Retrieves the page speed reports of a website",
      "resource": "websiteReport"
    },
    {
      "name": "Get Reports: Page Speed By ID",
      "value": "website_getReportsPageSpeedById",
      "action": "Get page speed report by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/page-speed/{{$parameter.reportId}}",
          "method": "GET"
        }
      },
      "description": "Retrieves detailed information about a specific page speed report by its ID for a website, including performance, seo, accessibility, best practices, and core web vitals",
      "resource": "websiteReport"
    },
    {
      "name": "Get Reports: Security",
      "value": "website_getReportsSecurity",
      "action": "Get website security reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/security",
          "method": "GET"
        }
      },
      "description": "Retrieves the security reports of a website",
      "resource": "websiteReport"
    },
    {
      "name": "Get Reports: Security By ID",
      "value": "website_getReportsSecurityById",
      "action": "Get security report by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/security/{{$parameter.reportId}}",
          "method": "GET"
        }
      },
      "description": "Retrieves detailed information about a specific security report by its ID for a website, including vulnerability details and scan summary",
      "resource": "websiteReport"
    },
    {
      "name": "Get Last PageSpeed Report",
      "value": "website_getPageSpeedLast",
      "action": "Get last PageSpeed report for a website",
      "routing": {
        "request": {
          "qs": {
            "strategy": "={{ $parameter.queryPageSpeedStrategy || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/pagespeed/last",
          "method": "GET"
        }
      },
      "description": "Returns the most recent PageSpeed report for the website",
      "resource": "websiteReport"
    },
    {
      "name": "Get Last Security Report",
      "value": "website_getSecurityReportLast",
      "action": "Get last security report for a website",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/security-reports/last",
          "method": "GET"
        }
      },
      "description": "Returns the most recent security report for the website",
      "resource": "websiteReport"
    },
    {
      "name": "Export Security Report Excel",
      "value": "website_exportSecurityExcel",
      "action": "Export security report to Excel",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/reports/security/{{$parameter.reportId}}/export/excel",
          "method": "GET",
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Downloads a security report as an Excel file",
      "resource": "websiteReport"
    },
    {
      "name": "Get CPU Metrics",
      "value": "serverReport_getCpuMetrics",
      "action": "List CPU metrics reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/cpu",
          "method": "GET"
        }
      },
      "description": "Paginated CPU metrics reports for the server (Gridify)",
      "resource": "serverReport"
    },
    {
      "name": "Get Disk Metrics",
      "value": "serverReport_getDiskMetrics",
      "action": "List disk metrics reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/disk",
          "method": "GET"
        }
      },
      "description": "Paginated disk metrics reports for the server (Gridify)",
      "resource": "serverReport"
    },
    {
      "name": "Get Memory Metrics",
      "value": "serverReport_getMemoryMetrics",
      "action": "List memory metrics reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/memory",
          "method": "GET"
        }
      },
      "description": "Paginated memory metrics reports for the server (Gridify)",
      "resource": "serverReport"
    },
    {
      "name": "Get Network Metrics",
      "value": "serverReport_getNetworkMetrics",
      "action": "List network metrics reports",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/reports/network",
          "method": "GET"
        }
      },
      "description": "Paginated network metrics reports for the server (Gridify)",
      "resource": "serverReport"
    },
    {
      "name": "Get CPU Usage",
      "value": "serverUsage_getCpuUsage",
      "action": "Get CPU usage time series",
      "routing": {
        "request": {
          "qs": {
            "type": "={{ $parameter.queryUsageType || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
            "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/cpu",
          "method": "GET"
        }
      },
      "description": "CPU usage over the selected range; requires start/end dates, optional usage type and max data points",
      "resource": "serverUsage"
    },
    {
      "name": "Get Disk Usage",
      "value": "serverUsage_getDiskUsage",
      "action": "Get disk I/O usage time series",
      "routing": {
        "request": {
          "qs": {
            "type": "={{ $parameter.queryUsageType || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
            "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/disk",
          "method": "GET"
        }
      },
      "description": "Disk read/write rates over the selected range; requires start/end dates",
      "resource": "serverUsage"
    },
    {
      "name": "Get Disk Space",
      "value": "serverUsage_getDiskSpace",
      "action": "Get current disk space snapshot",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/disk-space",
          "method": "GET"
        }
      },
      "description": "Latest disk/partition usage and free space from the most recent report",
      "resource": "serverUsage"
    },
    {
      "name": "Get Memory Usage",
      "value": "serverUsage_getMemoryUsage",
      "action": "Get memory usage time series",
      "routing": {
        "request": {
          "qs": {
            "type": "={{ $parameter.queryUsageType || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
            "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/memory",
          "method": "GET"
        }
      },
      "description": "Memory usage over the selected range; requires start/end dates",
      "resource": "serverUsage"
    },
    {
      "name": "Get Network Usage",
      "value": "serverUsage_getNetworkUsage",
      "action": "Get network usage time series",
      "routing": {
        "request": {
          "qs": {
            "type": "={{ $parameter.queryUsageType || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : $now.toISO() }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : $now.minus(7, \"days\").toISO() }}",
            "maxDataPoints": "={{ $parameter.queryMaxDataPoints || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/usages/network",
          "method": "GET"
        }
      },
      "description": "Network throughput over the selected range; requires start/end dates",
      "resource": "serverUsage"
    },
    {
      "name": "Get SLA Configurations",
      "value": "serverSla_getSlaConfigurations",
      "action": "List server SLA configurations",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla-configurations",
          "method": "GET"
        }
      },
      "description": "Paginated SLA configuration definitions for the server",
      "resource": "serverSla"
    },
    {
      "name": "Get SLA",
      "value": "serverSla_getSla",
      "action": "Get server SLA configurations",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla",
          "method": "GET"
        }
      },
      "description": "Retrieves SLA configurations for a server (alternate route)",
      "resource": "serverSla"
    },
    {
      "name": "Get SLA Breaches",
      "value": "serverSla_getSlaBreaches",
      "action": "List server SLA breaches",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla/breaches",
          "method": "GET"
        }
      },
      "description": "Paginated SLA breach records with optional date filters",
      "resource": "serverSla"
    },
    {
      "name": "Get SLA Breaches By Configuration",
      "value": "serverSla_getSlaBreachesByConfiguration",
      "action": "List server SLA breaches for a configuration",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla-configurations/{{$parameter.slaConfigurationId}}/breaches",
          "method": "GET"
        }
      },
      "description": "Paginated SLA breach records for a specific SLA configuration, optionally filtered by date range",
      "resource": "serverSla"
    },
    {
      "name": "Get SLA Report PDF",
      "value": "serverSla_getSlaReport",
      "action": "Download server SLA report PDF",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "end": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "lang": "={{ $parameter.queryLang || undefined }}",
            "start": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/sla/report",
          "method": "GET",
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Generates and downloads a customer-facing SLA report PDF for the server",
      "resource": "serverSla"
    },
    {
      "name": "Get All (Team)",
      "value": "notifications_getAll",
      "action": "List team-wide alert occurrences",
      "routing": {
        "request": {
          "qs": {
            "limit": "={{ $parameter.queryLimit || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/notifications",
          "method": "GET"
        }
      },
      "description": "Alert occurrences for the whole team; optional date range and limit",
      "resource": "notifications"
    },
    {
      "name": "Get By Server",
      "value": "notifications_getServers",
      "action": "List server alert occurrences",
      "routing": {
        "request": {
          "qs": {
            "limit": "={{ $parameter.queryLimit || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/servers/{{$parameter.serverId}}/notifications",
          "method": "GET"
        }
      },
      "description": "Alert occurrences scoped to one server; optional date range and limit",
      "resource": "notifications"
    },
    {
      "name": "Get By Website",
      "value": "notifications_getWebsites",
      "action": "List website alert occurrences",
      "routing": {
        "request": {
          "qs": {
            "limit": "={{ $parameter.queryLimit || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/websites/{{$parameter.websiteId}}/notifications",
          "method": "GET"
        }
      },
      "description": "Alert occurrences scoped to one website; optional date range and limit",
      "resource": "notifications"
    },
    {
      "name": "Get Expiring Secret Alert Preferences",
      "value": "user_getExpiringSecretAlertPreferences",
      "action": "Get expiring secret alert preferences",
      "routing": {
        "request": {
          "qs": {
            "teamId": "={{ $parameter.optionalTeamId || undefined }}"
          },
          "url": "/users/me/expiring-secret-alert-preferences",
          "method": "GET"
        }
      },
      "description": "Returns user alert preferences for expiring secrets; optional team filter",
      "resource": "userPreference"
    },
    {
      "name": "Get Monitored Task Alert Preferences",
      "value": "user_getMonitoredTaskAlertPreferences",
      "action": "Get monitored task alert preferences",
      "routing": {
        "request": {
          "qs": {
            "teamId": "={{ $parameter.optionalTeamId || undefined }}"
          },
          "url": "/users/me/monitored-task-alert-preferences",
          "method": "GET"
        }
      },
      "description": "Returns user alert preferences for monitored tasks; optional team filter",
      "resource": "userPreference"
    },
    {
      "name": "Get Server Alert Preferences",
      "value": "user_getServerAlertPreferences",
      "action": "Get server alert preferences",
      "routing": {
        "request": {
          "url": "/users/server-alert-preferences",
          "method": "GET"
        }
      },
      "description": "Returns the authenticated user server alert preferences",
      "resource": "userPreference"
    },
    {
      "name": "Get Website Alert Preferences",
      "value": "user_getWebsiteAlertPreferences",
      "action": "Get website alert preferences",
      "routing": {
        "request": {
          "url": "/users/website-alert-preferences",
          "method": "GET"
        }
      },
      "description": "Returns the authenticated user website alert preferences",
      "resource": "userPreference"
    },
    {
      "name": "Get Badges",
      "value": "monitoredTask_getBadges",
      "action": "List monitored task badges",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/monitored-task-badges",
          "method": "GET"
        }
      },
      "description": "Returns monitored task badge counts for the team",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Monitored Tasks",
      "value": "monitoredTask_getAll",
      "action": "List monitored tasks",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks",
          "method": "GET"
        }
      },
      "description": "Returns paginated monitored tasks for the team",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Monitored Task By ID",
      "value": "monitoredTask_getById",
      "action": "Get monitored task by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Events",
      "value": "monitoredTask_getEvents",
      "action": "List monitored task events",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
            "eventTypes": "={{ $parameter.queryEventTypes || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/events",
          "method": "GET"
        }
      },
      "description": "Returns paginated events for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Maintenance Windows",
      "value": "monitoredTask_getMaintenanceWindows",
      "action": "List monitored task maintenance windows",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/maintenance-windows",
          "method": "GET"
        }
      },
      "description": "Returns maintenance windows for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Execution Report",
      "value": "monitoredTask_getReport",
      "action": "Get monitored task execution report",
      "routing": {
        "request": {
          "qs": {
            "to": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "from": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/report",
          "method": "GET"
        }
      },
      "description": "Returns execution report data for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Execution Report PDF",
      "value": "monitoredTask_getReportPdf",
      "action": "Download monitored task execution report PDF",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "to": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "from": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
            "lang": "={{ $parameter.queryLang || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/report/pdf",
          "method": "GET",
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Downloads execution report as PDF",
      "resource": "monitoredTask"
    },
    {
      "name": "Get SLA",
      "value": "monitoredTask_getSla",
      "action": "Get monitored task SLA status",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla",
          "method": "GET"
        }
      },
      "description": "Returns SLA status for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get SLA Breaches",
      "value": "monitoredTask_getSlaBreaches",
      "action": "List monitored task SLA breaches",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla/breaches",
          "method": "GET"
        }
      },
      "description": "Returns paginated SLA breaches for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get SLA Breaches By Configuration",
      "value": "monitoredTask_getSlaBreachesByConfiguration",
      "action": "List SLA breaches for a configuration",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla-configurations/{{$parameter.slaConfigurationId}}/breaches",
          "method": "GET"
        }
      },
      "description": "Returns SLA breaches for a specific monitored task SLA configuration",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Status Heatmap",
      "value": "monitoredTask_getStatusHeatmap",
      "action": "Get monitored task status heatmap",
      "routing": {
        "request": {
          "qs": {
            "days": "={{ $parameter.queryDays || undefined }}",
            "bucket": "={{ $parameter.queryBucket || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/status-heatmap",
          "method": "GET"
        }
      },
      "description": "Returns status heatmap for a single monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get SLA Report PDF",
      "value": "monitoredTask_getSlaReport",
      "action": "Download monitored task SLA report PDF",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "end": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "lang": "={{ $parameter.queryLang || undefined }}",
            "start": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla/report",
          "method": "GET",
          "encoding": "arraybuffer",
          "returnFullResponse": true
        }
      },
      "description": "Downloads SLA report PDF for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get SLA Configurations",
      "value": "monitoredTask_getSlaConfigurations",
      "action": "List monitored task SLA configurations",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/{{$parameter.monitoredTaskId}}/sla-configurations",
          "method": "GET"
        }
      },
      "description": "Returns paginated SLA configurations for a monitored task",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Team Execution Report",
      "value": "monitoredTask_getTeamReport",
      "action": "Get team monitored tasks report",
      "routing": {
        "request": {
          "qs": {
            "to": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "from": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/report",
          "method": "GET"
        }
      },
      "description": "Returns aggregated execution report for all monitored tasks in the team",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Team Status Heatmap",
      "value": "monitoredTask_getTeamStatusHeatmap",
      "action": "Get team monitored task status heatmap",
      "routing": {
        "request": {
          "qs": {
            "days": "={{ $parameter.queryDays || undefined }}",
            "bucket": "={{ $parameter.queryBucket || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/monitored-tasks/status-heatmap",
          "method": "GET"
        }
      },
      "description": "Returns status heatmap aggregated across monitored tasks for the team",
      "resource": "monitoredTask"
    },
    {
      "name": "Get Expiring Secrets",
      "value": "expiringSecret_getAll",
      "action": "List expiring secrets",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/expiring-secrets",
          "method": "GET"
        }
      },
      "description": "Returns paginated expiring secrets for the team",
      "resource": "expiringSecret"
    },
    {
      "name": "Get Expiring Secret By ID",
      "value": "expiringSecret_getById",
      "action": "Get expiring secret by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/expiring-secrets/{{$parameter.expiringSecretId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single expiring secret record",
      "resource": "expiringSecret"
    },
    {
      "name": "Get Expiring Secret Events",
      "value": "expiringSecret_getEvents",
      "action": "List expiring secret events",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "endDate": "={{ $parameter.queryEndDate ? ($parameter.queryEndDate.toISO ? $parameter.queryEndDate.toISO() : String($parameter.queryEndDate)) : undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}",
            "startDate": "={{ $parameter.queryStartDate ? ($parameter.queryStartDate.toISO ? $parameter.queryStartDate.toISO() : String($parameter.queryStartDate)) : undefined }}",
            "eventTypes": "={{ $parameter.queryEventTypes || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/expiring-secrets/{{$parameter.expiringSecretId}}/events",
          "method": "GET"
        }
      },
      "description": "Returns events for an expiring secret with optional date and event-type filters",
      "resource": "expiringSecret"
    },
    {
      "name": "Get Server Alerts",
      "value": "alert_getServerAlerts",
      "action": "List server alerts for a team",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/server-alerts",
          "method": "GET"
        }
      },
      "description": "Returns paginated server alert definitions for the team",
      "resource": "alert"
    },
    {
      "name": "Get Website Alerts",
      "value": "alert_getWebsiteAlerts",
      "action": "List website alerts for a team",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/website-alerts",
          "method": "GET"
        }
      },
      "description": "Returns paginated website alert definitions for the team",
      "resource": "alert"
    },
    {
      "name": "Get Tasks",
      "value": "teamTask_getAll",
      "action": "List team tasks",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.queryPage }}",
            "filter": "={{ $parameter.queryFilter || undefined }}",
            "orderBy": "={{ $parameter.queryOrderBy || undefined }}",
            "pageSize": "={{ $parameter.queryPageSize }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/tasks",
          "method": "GET"
        }
      },
      "description": "Returns paginated tasks for the team",
      "resource": "teamTask"
    },
    {
      "name": "Get Task By ID",
      "value": "teamTask_getById",
      "action": "Get team task by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/tasks/{{$parameter.taskId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single team task",
      "resource": "teamTask"
    },
    {
      "name": "Get Server Webhooks",
      "value": "webhook_getServers",
      "action": "List server webhooks",
      "routing": {
        "request": {
          "qs": {
            "serverId": "={{ $parameter.serverId || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/webhooks/servers",
          "method": "GET"
        }
      },
      "description": "Returns server webhooks for the team; optional serverId filter",
      "resource": "webhook"
    },
    {
      "name": "Get Server Webhook By ID",
      "value": "webhook_getServerById",
      "action": "Get server webhook by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/webhooks/servers/{{$parameter.webhookId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single server webhook",
      "resource": "webhook"
    },
    {
      "name": "Get Website Webhooks",
      "value": "webhook_getWebsites",
      "action": "List website webhooks",
      "routing": {
        "request": {
          "qs": {
            "websiteId": "={{ $parameter.websiteId || undefined }}"
          },
          "url": "=/teams/{{$parameter.teamId}}/webhooks/websites",
          "method": "GET"
        }
      },
      "description": "Returns website webhooks for the team; optional websiteId filter",
      "resource": "webhook"
    },
    {
      "name": "Get Website Webhook By ID",
      "value": "webhook_getWebsiteById",
      "action": "Get website webhook by ID",
      "routing": {
        "request": {
          "url": "=/teams/{{$parameter.teamId}}/webhooks/websites/{{$parameter.webhookId}}",
          "method": "GET"
        }
      },
      "description": "Returns a single website webhook",
      "resource": "webhook"
    },
    {
      "name": "Start",
      "value": "ping_start",
      "action": "Record task start ping",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/ping/{{$parameter.pingToken}}/start",
          "body": "={{ $parameter.httpMethod === \"POST\" && $parameter.sendJsonBody ? $parameter.jsonBody : undefined }}",
          "method": "={{$parameter.httpMethod}}"
        }
      },
      "description": "POST or GET /ping/{token}/start. POST may include an optional JSON object or array body (max 4 KB).",
      "resource": "ping"
    },
    {
      "name": "Success",
      "value": "ping_success",
      "action": "Record task success ping",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/ping/{{$parameter.pingToken}}/success",
          "body": "={{ $parameter.httpMethod === \"POST\" && $parameter.sendJsonBody ? $parameter.jsonBody : undefined }}",
          "method": "={{$parameter.httpMethod}}"
        }
      },
      "description": "POST or GET /ping/{token}/success. POST may include an optional JSON object or array body (max 4 KB).",
      "resource": "ping"
    },
    {
      "name": "Fail",
      "value": "ping_fail",
      "action": "Record task failure ping",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/ping/{{$parameter.pingToken}}/fail",
          "body": "={{ $parameter.httpMethod === \"POST\" && $parameter.sendJsonBody ? $parameter.jsonBody : undefined }}",
          "method": "={{$parameter.httpMethod}}"
        }
      },
      "description": "POST or GET /ping/{token}/fail. POST may include an optional JSON object or array body (max 4 KB).",
      "resource": "ping"
    }
  ]

npm_readme:
  # n8n-nodes-monitorix360

  [n8n](https://n8n.io/) community nodes for **Monitorix360** — manage teams, websites, servers, reports, SLA, usage, and notifications via the Monitorix integration API (same style of credentials as the Monitorix360 Zapier app).

  [Installation](#installation) · [Nodes](#nodes) · [Credentials](#credentials) · [Development](#development) · [Publishing](#publish-to-npm) · [License](#license)

  ## Installation

  Install as a [community node](https://docs.n8n.io/integrations/community-nodes/installation/) from npm:

  - Package name: `@admin_programini/n8n-nodes-monitorix360`

  In the n8n UI: **Settings → Community nodes → Install** and enter the package name, or follow the CLI/docker instructions in the n8n docs for your deployment.

  ## Nodes

  This package includes one community node:

  | Node | Purpose |
  | ---- | ------- |
  | **Monitorix 360** | Full integration API — teams, websites, servers, reports, SLA, alerts, webhooks, monitored-task heartbeat pings, and more. |

  ## Credentials

  ### Monitorix360 Integration API

  Used when **Resource** is anything other than **Ping**.

  | Field | Description |
  | ----- | ----------- |
  | **Base URL** | Root URL of your Monitorix API instance (no trailing slash). |
  | **API Key** | Integration API key; sent as `Authorization: Monitorix-Integration {key}`. |

  Use **Test** to call `GET /users/profile` and verify the key and URL.

  ### Monitorix360 Ping API

  Used when **Resource** is **Ping**.

  | Field | Description |
  | ----- | ----------- |
  | **Base URL** | Root URL of your Monitorix API instance (no trailing slash). |
  | **Ping Secret** | Optional value sent as `X-Monitorix-Ping-Secret` when the monitored task requires ping authentication. |

  ## Operations

  Configure **Resource** and **Operation** in the node panel. Available resources:

  - **Alert** — list and manage alerts
  - **Expiring Secret** — list expiring secrets
  - **Monitored Task** — list monitored tasks
  - **Notification** — list notifications
  - **Ping** — heartbeat pings for monitored tasks (`start`, `success`, `fail`)
  - **Server** — CRUD and list servers
  - **Server Report** — generate and download server reports (PDF)
  - **Server SLA** — SLA configurations and breach reports
  - **Server Usage** — server usage metrics
  - **Team** — list teams
  - **Team Task** — list team tasks
  - **User Preference** — read user preferences
  - **Webhook** — list and manage webhooks
  - **Website** — CRUD and list websites
  - **Website Report** — generate and download website reports (PDF)
  - **Website SLA** — SLA configurations and breach reports

  Many list operations support **Gridify**-style query parameters (filter, sort, page) when enabled on the operation.

  ### Ping resource

  Send heartbeat pings for a monitored task using its **Ping Token**:

  | Operation | Endpoint |
  | --------- | -------- |
  | **Start** | `POST` or `GET` `/ping/{token}/start` |
  | **Success** | `POST` or `GET` `/ping/{token}/success` |
  | **Fail** | `POST` or `GET` `/ping/{token}/fail` |

  `POST` is recommended. You can optionally attach a JSON object or array body (max 4 KB) on `POST` requests.

  ## Migration from 0.1.2

  The standalone **Monitorix 360 Ping** node was removed in 0.1.3 to comply with n8n's one-regular-node-per-package rule. Update existing workflows to use **Monitorix 360** with **Resource** set to **Ping** and the same operation and parameters as before.

  ## Compatibility

  - Intended for current n8n community node requirements (`n8nNodesApiVersion` 1).
  - Requires a running Monitorix Web API that supports the integration endpoints used by this package.

  ## Development

  Prerequisites: Node.js (LTS recommended) and npm.

  ```bash
  npm install
  npm run dev
  ```

  Other scripts:

  | Script           | Description        |
  | ---------------- | ------------------ |
  | `npm run build`  | Production build to `dist/` |
  | `npm run lint`   | Lint               |
  | `npm run lint:fix` | Lint with fixes  |
  | `npm run release` | Version bump, tag, push (triggers publish workflow) |

  ## Publish to npm

  Publishing runs from [`.github/workflows/publish.yml`](.github/workflows/publish.yml) on version tags, with npm provenance (required for n8n community nodes from May 1, 2026).

  ### One-time setup

  In [npmjs.com](https://www.npmjs.com) package settings → **Publish access → Trusted Publishers**, add:

  - **Repository owner**: `vmagprogramini` (or your GitHub user/org)
  - **Repository name**: `n8n-nodes-monitorix360`
  - **Workflow name**: `publish.yml`

  You can omit `NPM_TOKEN` if you use trusted publishing (OIDC). Alternatively, set an npm granular token as the `NPM_TOKEN` repository secret; see comments in `publish.yml`.

  ### Release

  ```bash
  npm run release
  ```

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [This repository](https://github.com/vmagprogramini/n8n-nodes-monitorix360)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Monitorix 360 is an n8n community node for interacting with the Monitorix Web API. It lets you manage websites, servers, teams, alerts, reports, SLA, usage, webhooks, and send monitored-task heartbeat pings.","capabilities":["Manage alerts","List expiring secrets","List monitored tasks","List notifications","Send monitored-task heartbeat pings (start, success, fail)","CRUD and list servers","Generate and download server reports (PDF)","Configure and inspect server SLA and breach reports","View server usage metrics","List teams"],"authentication":"Uses Monitorix360 Integration API credentials with Base URL plus API Key sent as Authorization: Monitorix-Integration {key}; Ping operations use a Ping Secret optionally sent as X-Monitorix-Ping-Secret.","commonUseCases":["Automating monitoring and administration of websites and servers in Monitorix","Sending heartbeat pings from scheduled workflows or external systems to track monitored tasks","Generating reports and checking SLA/breach status for operational monitoring","Managing alerts, webhooks, teams, and notifications from n8n"],"limitations":["Ping resource requests support optional JSON body only on POST, with a maximum size of 4 KB","Requires a running Monitorix Web API instance that supports the integration endpoints used by the package","The standalone Monitorix 360 Ping node was removed in v0.1.3; ping functionality is now accessed through the main Monitorix 360 node"],"relatedNodes":["Monitorix 360 Ping"]}


node_type: n8n-nodes-scorechain.scorechain
package_name: n8n-nodes-scorechain
display_name: Scorechain
description: Get an AML/risk score for a crypto address, transaction or wallet via the Scorechain API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: scorechain-infra
author_github_url: https://github.com/scorechain/
npm_package_name: n8n-nodes-scorechain
npm_version: 1.0.3
community_fetched_at: 2026-07-14T14:40:34.632Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # n8n-nodes-scorechain

  This is an n8n community node for the [Scorechain](https://scorechain.com) Risk Scoring API.

  It lets you analyse crypto addresses and transactions directly from your n8n workflows — no manual HTTP configuration needed.

  ## Features

  - Risk scoring analysis for addresses, transactions, and wallets
  - Supports 20+ blockchains (Bitcoin, Ethereum, Solana, Tron, and more)
  - Optional filters: coin/token, depth, date range, grouping
  - Returns the full Scorechain JSON response as node output

  ## Supported Operations

  | Operation | Endpoint |
  |---|---|
  | Risk Scoring — Single Chain | `POST /scoringAnalysis` |

  ## Credentials

  You need a Scorechain API key. Generate one at [app.scorechain.com/profile/api-keys](https://app.scorechain.com/profile/api-keys).

  In n8n, create a new **Scorechain API** credential and paste your key.

  ## Supported Blockchains

  ALGORAND, ARBITRUMONE, AVALANCHE, BASE, BITCOIN, BITCOINCASH, BLAST, BSC, CARDANO, DASH, DOGECOIN, ETHEREUM, INK, LITECOIN, MANTLE, OPTIMISM, POLYGON, RIPPLE, SOLANA, STELLAR, TEZOS, TON, TRON

  ## Use with AI Agents (optional)

  This node can be used as a **tool** by n8n AI Agent nodes, letting an LLM decide
  when to run a risk-scoring analysis and fill in the parameters itself.

  This is **disabled by default**. Because it is a community node, the instance
  operator must explicitly opt in by setting the environment variable:

  ```
  N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  Until that variable is set, the node behaves as a normal node and is not exposed
  to AI Agents.

  > ⚠️ This is a compliance/AML tool. When exposed to an agent, both the inputs
  > (addresses, transaction hashes) and the scoring results pass through the
  > connected LLM provider, and scoring calls count against your API quota.
  > Enable it only when you understand those implications.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Analyzes crypto addresses, transactions, or wallets using Scorechain's AML/risk scoring API. It returns the Scorechain risk analysis response directly in n8n workflows.","capabilities":["Risk scoring analysis for addresses","Risk scoring analysis for transactions","Risk scoring analysis for wallets","Supports 20+ blockchains including Bitcoin, Ethereum, Solana, Tron, and others","Optional filtering by coin/token, depth, date range, and grouping","Returns the full Scorechain JSON response","Single-chain scoring via POST /scoringAnalysis"],"authentication":"Scorechain API key required via a Scorechain API credential in n8n","commonUseCases":["Checking AML/risk level of a crypto address before processing a payment","Analyzing transaction risk in compliance workflows","Assessing wallet exposure across supported blockchains","Using as an AI Agent tool to let an LLM decide when to run risk scoring"],"limitations":["Only supports the single-chain risk scoring operation listed in the README","Community-node tool usage with AI Agents is disabled by default and requires N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true","Using the node as an AI Agent tool sends inputs and results through the connected LLM provider and consumes API quota"],"relatedNodes":[]}


node_type: @affeldt28/n8n-nodes-infinigate.infinigate
package_name: @affeldt28/n8n-nodes-infinigate
display_name: Infinigate
description: Interact with the Infinigate API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: affeldt28
author_github_url: https://github.com/affeldt28/n8n-nodes-infinigate.git
npm_package_name: @affeldt28/n8n-nodes-infinigate
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.633Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "purchaseCreditMemo",
      "options": [
        {
          "name": "Purchase Credit Memo",
          "value": "purchaseCreditMemo"
        },
        {
          "name": "Purchase Invoice",
          "value": "purchaseInvoice"
        },
        {
          "name": "Purchase Quote",
          "value": "purchaseQuote"
        },
        {
          "name": "Price List",
          "value": "priceList"
        },
        {
          "name": "Manufacturer",
          "value": "manufacturer"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many purchase credit memos",
          "routing": {
            "request": {
              "url": "/invoice-management/v2/purchasecreditmemo",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of purchase credit memos"
        },
        {
          "name": "Get by Document Id",
          "value": "getByDocumentId",
          "action": "Get purchase credit memo by document Id",
          "routing": {
            "request": {
              "url": "=/invoice-management/v2/purchasecreditmemo/{{ $parameter.documentGuid }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a purchase credit memo by document Id"
        },
        {
          "name": "Get by Document Number",
          "value": "getByDocumentNumber",
          "action": "Get purchase credit memo by document number",
          "routing": {
            "request": {
              "url": "=/invoice-management/v2/purchasecreditmemo/documentNumber/{{ $parameter.documentNumber }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a purchase credit memo by document number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseCreditMemo"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many purchase invoices",
          "routing": {
            "request": {
              "url": "/invoice-management/v2/purchaseinvoice",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of purchase invoices"
        },
        {
          "name": "Get by Document Id",
          "value": "getByDocumentId",
          "action": "Get purchase invoice by document Id",
          "routing": {
            "request": {
              "url": "=/invoice-management/v2/purchaseinvoice/{{ $parameter.documentGuid }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a purchase invoice by document Id"
        },
        {
          "name": "Get by Document Number",
          "value": "getByDocumentNumber",
          "action": "Get purchase invoice by document number",
          "routing": {
            "request": {
              "url": "=/invoice-management/v2/purchaseinvoice/documentNumber/{{ $parameter.documentNumber }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a purchase invoice by document number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseInvoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many purchase quotes",
          "routing": {
            "request": {
              "url": "/order-management/v2/purchasequote",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of purchase quotes"
        },
        {
          "name": "Get by Document Id",
          "value": "getByDocumentId",
          "action": "Get purchase quote by document Id",
          "routing": {
            "request": {
              "url": "=/order-management/v2/purchasequote/{{ $parameter.documentGuid }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a purchase quote by document Id"
        },
        {
          "name": "Get by Document Number",
          "value": "getByDocumentNumber",
          "action": "Get purchase quote by document number",
          "routing": {
            "request": {
              "url": "=/order-management/v2/purchasequote/documentNumber/{{ $parameter.documentNumber }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a purchase quote by document number"
        },
        {
          "name": "Accept",
          "value": "acceptance",
          "action": "Accept purchase quote",
          "routing": {
            "request": {
              "url": "/order-management/v2/purchasequote/acceptance",
              "method": "POST"
            }
          },
          "description": "Accept a purchase quote by document number"
        },
        {
          "name": "Reject",
          "value": "reject",
          "action": "Reject purchase quote",
          "routing": {
            "request": {
              "url": "/order-management/v2/purchasequote/reject",
              "method": "POST"
            }
          },
          "description": "Reject a purchase quote by document number"
        },
        {
          "name": "Request",
          "value": "request",
          "action": "Request purchase quote",
          "routing": {
            "request": {
              "url": "/order-management/v2/purchasequote/request",
              "method": "POST"
            }
          },
          "description": "Request a purchase quote"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "purchaseQuote"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Items",
          "value": "search",
          "action": "Search price list items",
          "routing": {
            "request": {
              "url": "=/product-management/v1/pricelist/search/{{ $parameter.searchword }}",
              "method": "GET"
            }
          },
          "description": "Search price list items with stock levels"
        },
        {
          "name": "Get Items by Vendor SKU",
          "value": "vendor",
          "action": "Get price list items by vendor SKU",
          "routing": {
            "request": {
              "url": "/product-management/v1/pricelist/vendor",
              "method": "GET"
            }
          },
          "description": "Retrieve price list items with stock levels by vendor SKU"
        },
        {
          "name": "Get Items by SKU",
          "value": "sku",
          "action": "Get price list items by SKU",
          "routing": {
            "request": {
              "url": "/product-management/v1/pricelist/sku",
              "method": "GET"
            }
          },
          "description": "Retrieve price list items with stock levels by SKU"
        },
        {
          "name": "Count Items",
          "value": "searchCount",
          "action": "Count price list items",
          "routing": {
            "request": {
              "url": "=/product-management/v1/pricelist/search/count/{{ $parameter.searchword }}",
              "method": "GET"
            }
          },
          "description": "Get the number of price list items matching a search term and filters"
        },
        {
          "name": "Get Items by Manufacturer",
          "value": "getAllByManufacturer",
          "action": "Get price list items by manufacturer",
          "routing": {
            "request": {
              "url": "/product-management/v1/pricelist/",
              "method": "GET"
            }
          },
          "description": "Retrieve price list items for a manufacturer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "priceList"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many manufacturers",
          "routing": {
            "request": {
              "url": "/product-management/v1/manufacturer",
              "method": "GET"
            }
          },
          "description": "Get a list of all manufacturer names"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "manufacturer"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many purchase credit memos",
      "routing": {
        "request": {
          "url": "/invoice-management/v2/purchasecreditmemo",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of purchase credit memos",
      "resource": "purchaseCreditMemo"
    },
    {
      "name": "Get by Document Id",
      "value": "getByDocumentId",
      "action": "Get purchase credit memo by document Id",
      "routing": {
        "request": {
          "url": "=/invoice-management/v2/purchasecreditmemo/{{ $parameter.documentGuid }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a purchase credit memo by document Id",
      "resource": "purchaseCreditMemo"
    },
    {
      "name": "Get by Document Number",
      "value": "getByDocumentNumber",
      "action": "Get purchase credit memo by document number",
      "routing": {
        "request": {
          "url": "=/invoice-management/v2/purchasecreditmemo/documentNumber/{{ $parameter.documentNumber }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a purchase credit memo by document number",
      "resource": "purchaseCreditMemo"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many purchase invoices",
      "routing": {
        "request": {
          "url": "/invoice-management/v2/purchaseinvoice",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of purchase invoices",
      "resource": "purchaseInvoice"
    },
    {
      "name": "Get by Document Id",
      "value": "getByDocumentId",
      "action": "Get purchase invoice by document Id",
      "routing": {
        "request": {
          "url": "=/invoice-management/v2/purchaseinvoice/{{ $parameter.documentGuid }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a purchase invoice by document Id",
      "resource": "purchaseInvoice"
    },
    {
      "name": "Get by Document Number",
      "value": "getByDocumentNumber",
      "action": "Get purchase invoice by document number",
      "routing": {
        "request": {
          "url": "=/invoice-management/v2/purchaseinvoice/documentNumber/{{ $parameter.documentNumber }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a purchase invoice by document number",
      "resource": "purchaseInvoice"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many purchase quotes",
      "routing": {
        "request": {
          "url": "/order-management/v2/purchasequote",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of purchase quotes",
      "resource": "purchaseQuote"
    },
    {
      "name": "Get by Document Id",
      "value": "getByDocumentId",
      "action": "Get purchase quote by document Id",
      "routing": {
        "request": {
          "url": "=/order-management/v2/purchasequote/{{ $parameter.documentGuid }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a purchase quote by document Id",
      "resource": "purchaseQuote"
    },
    {
      "name": "Get by Document Number",
      "value": "getByDocumentNumber",
      "action": "Get purchase quote by document number",
      "routing": {
        "request": {
          "url": "=/order-management/v2/purchasequote/documentNumber/{{ $parameter.documentNumber }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a purchase quote by document number",
      "resource": "purchaseQuote"
    },
    {
      "name": "Accept",
      "value": "acceptance",
      "action": "Accept purchase quote",
      "routing": {
        "request": {
          "url": "/order-management/v2/purchasequote/acceptance",
          "method": "POST"
        }
      },
      "description": "Accept a purchase quote by document number",
      "resource": "purchaseQuote"
    },
    {
      "name": "Reject",
      "value": "reject",
      "action": "Reject purchase quote",
      "routing": {
        "request": {
          "url": "/order-management/v2/purchasequote/reject",
          "method": "POST"
        }
      },
      "description": "Reject a purchase quote by document number",
      "resource": "purchaseQuote"
    },
    {
      "name": "Request",
      "value": "request",
      "action": "Request purchase quote",
      "routing": {
        "request": {
          "url": "/order-management/v2/purchasequote/request",
          "method": "POST"
        }
      },
      "description": "Request a purchase quote",
      "resource": "purchaseQuote"
    },
    {
      "name": "Search Items",
      "value": "search",
      "action": "Search price list items",
      "routing": {
        "request": {
          "url": "=/product-management/v1/pricelist/search/{{ $parameter.searchword }}",
          "method": "GET"
        }
      },
      "description": "Search price list items with stock levels",
      "resource": "priceList"
    },
    {
      "name": "Get Items by Vendor SKU",
      "value": "vendor",
      "action": "Get price list items by vendor SKU",
      "routing": {
        "request": {
          "url": "/product-management/v1/pricelist/vendor",
          "method": "GET"
        }
      },
      "description": "Retrieve price list items with stock levels by vendor SKU",
      "resource": "priceList"
    },
    {
      "name": "Get Items by SKU",
      "value": "sku",
      "action": "Get price list items by SKU",
      "routing": {
        "request": {
          "url": "/product-management/v1/pricelist/sku",
          "method": "GET"
        }
      },
      "description": "Retrieve price list items with stock levels by SKU",
      "resource": "priceList"
    },
    {
      "name": "Count Items",
      "value": "searchCount",
      "action": "Count price list items",
      "routing": {
        "request": {
          "url": "=/product-management/v1/pricelist/search/count/{{ $parameter.searchword }}",
          "method": "GET"
        }
      },
      "description": "Get the number of price list items matching a search term and filters",
      "resource": "priceList"
    },
    {
      "name": "Get Items by Manufacturer",
      "value": "getAllByManufacturer",
      "action": "Get price list items by manufacturer",
      "routing": {
        "request": {
          "url": "/product-management/v1/pricelist/",
          "method": "GET"
        }
      },
      "description": "Retrieve price list items for a manufacturer",
      "resource": "priceList"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many manufacturers",
      "routing": {
        "request": {
          "url": "/product-management/v1/manufacturer",
          "method": "GET"
        }
      },
      "description": "Get a list of all manufacturer names",
      "resource": "manufacturer"
    }
  ]

npm_readme:
  # n8n-nodes-infinigate

  This is an n8n community node for the Infinigate Reseller API.

  It lets you use Infinigate API endpoints in your n8n workflows, starting with invoice management operations for purchase credit memos.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node currently supports the following weclapp resources and operations:

  ## Operations

  This node currently supports the following Infinigate resources and operations.

  ### Invoice-Management

  | Operation                    | API                                                                           | Implemented |
  | ---------------------------- | ----------------------------------------------------------------------------- | ----------- |
  | CreditMemo overview list     | GET /invoice-management/v2/purchasecreditmemo                                 | ✅           |
  | CreditMemo by documentId     | GET /invoice-management/v2/purchasecreditmemo/{documentGuid}                  | ✅           |
  | CreditMemo by documentNumber | GET /invoice-management/v2/purchasecreditmemo/documentNumber/{documentNumber} | ✅           |
  | Invoice overview list        | GET /invoice-management/v2/purchaseinvoice                                    | ✅           |
  | Invoice by documentId        | GET /invoice-management/v2/purchaseinvoice/{documentGuid}                     | ✅           |
  | Invoice by documentNumber    | GET /invoice-management/v2/purchaseinvoice/documentNumber/{documentNumber}    | ✅           |

  ### Order-Management

  | Operation                                     | API                                                                    | Implemented |
  | --------------------------------------------- | ---------------------------------------------------------------------- | ----------- |
  | Get Quote overview list                       | GET /order-management/v2/purchasequote                                 | ✅           |
  | Get Quote by documentId                       | GET /order-management/v2/purchasequote/{documentGuid}                  | ✅           |
  | Get Quote by documentNumber                   | GET /order-management/v2/purchasequote/documentNumber/{documentNumber} | ✅           |
  | Post acceptance for Quote with documentNumber | POST /order-managment/v2/purchasequote/acceptance                      | ✅           |
  | Post reject for Quote with documentNumber     | POST /order-managment/v2/purchasequote/reject                          | ✅           |
  | Post request for a PurchaseOrder              | POST /order-managment/v2/purchaseorder/request                         | ✅           |

  ### Product-Management

  | Operation                           | API                                                            | Implemented |
  | ----------------------------------- | -------------------------------------------------------------- | ----------- |
  | Get PriceList Item search           | GET /product-management/v1/pricelist/search/{searchword}       | ✅           |
  | Get PriceList By VendorSkus         | GET /product-management/v1/pricelist/vendor                    | ✅           |
  | Get PriceList By Skus               | GET /product-management/v1/pricelist/skus                      | ✅           |
  | Get PriceList Item Count            | GET /product-management/v1/pricelist/search/count/{searchword} | ✅           |
  | Get all products for a Manufacturer | GET /product-management/v1/pricelist/                          | ✅           |
  | Get List of all Manufacturer names  | GET /product-management/v1/manufacturer                        | ✅           |

  ## Credentials

  This node uses the **Infinigate API** credential.

  You need the API access data provided by Infinigate:

  - **Client ID**: Sent as `client_id` to the token endpoint
  - **Client Secret**: Sent as `client_secret` to the token endpoint
  - **API Key**: Sent as the `API-KEY` header

  To configure the credential in n8n:

  1. Request the API access data from Infinigate by contacting your Infinigate account manager or support.
  1. Create a new **Infinigate API** credential.
  2. Enter the **Client ID** provided by Infinigate.
  3. Enter the **Client Secret** provided by Infinigate.
  4. Enter the **API Key** provided by Infinigate.
  5. Save the credential.

  The API base URL is `https://api.infinigate.com`
  The token request uses `grant_type=client_credentials`. The returned bearer token is then sent together with the `API-KEY` header on API requests.

  ## Compatibility

  This package uses the n8n community node API version 1 and depends on `n8n-workflow`.

  No specific minimum n8n version is pinned in this package yet.


  ## Usage

  Add the **Infinigate** node to a workflow and select the **PurchaseCreditMemo** resource.

  For **CreditMemo overview list**, no additional parameters are required.

  For **CreditMemo by documentId**, provide the **Document Guid** value returned by the overview list or by another Infinigate API response.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Infinigate API request](https://www.infinigate.com/de/services/infinigate-api/)

ai_documentation_summary:
  {"purpose":"An n8n community node for interacting with the Infinigate Reseller API. It currently focuses on invoice, order, and product management operations, especially purchase credit memos and related procurement data.","capabilities":["List purchase credit memos","Get a purchase credit memo by document ID","Get a purchase credit memo by document number","List purchase invoices","Get a purchase invoice by document ID","Get a purchase invoice by document number","List purchase quotes","Get a purchase quote by document ID","Get a purchase quote by document number","Accept a purchase quote by document number"],"authentication":"OAuth2 client credentials flow plus API key. Uses Client ID and Client Secret to request a bearer token from the Infinigate token endpoint, and also requires an API Key sent in the API-KEY header.","commonUseCases":["Retrieving and processing purchase credit memos and invoices in workflows","Approving or rejecting purchase quotes and requesting purchase orders","Searching product pricing and manufacturer data for procurement automation"],"limitations":["Only a limited set of Infinigate API endpoints is implemented so far","No specific minimum n8n version is pinned in the package","The README notes purchase credit memo usage explicitly, while other resources may require inspecting the node's available operations"],"relatedNodes":["n8n HTTP Request node","n8n community nodes"]}


node_type: @affeldt28/n8n-nodes-weclapp.weclapp
package_name: @affeldt28/n8n-nodes-weclapp
display_name: Weclapp
description: Interact with weclapp API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: affeldt28
author_github_url: https://github.com/affeldt28/n8n-nodes-weclapp.git
npm_package_name: @affeldt28/n8n-nodes-weclapp
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:34.634Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Article",
          "value": "article"
        },
        {
          "name": "Recurring Invoice",
          "value": "recurringInvoice"
        },
        {
          "name": "Party",
          "value": "party"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "count",
      "options": [
        {
          "name": "Get Many",
          "value": "query",
          "action": "Get many articles",
          "routing": {
            "request": {
              "url": "/article",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of articles"
        },
        {
          "name": "Count",
          "value": "count",
          "action": "Count articles",
          "routing": {
            "request": {
              "url": "/article/count",
              "method": "GET"
            }
          },
          "description": "Count articles"
        },
        {
          "name": "Get",
          "value": "queryId",
          "action": "Get article",
          "routing": {
            "request": {
              "url": "=/article/id/{{ $parameter.articleId.value }}",
              "method": "GET"
            }
          },
          "description": "Retrieve an article"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "count",
      "options": [
        {
          "name": "Get Many",
          "value": "query",
          "action": "Get many parties",
          "routing": {
            "request": {
              "url": "/party",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of parties"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create party",
          "routing": {
            "request": {
              "url": "/party",
              "method": "POST"
            }
          },
          "description": "Create a party"
        },
        {
          "name": "Count",
          "value": "count",
          "action": "Count parties",
          "routing": {
            "request": {
              "url": "/party/count",
              "method": "GET"
            }
          },
          "description": "Count parties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "party"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "count",
      "options": [
        {
          "name": "Get Many",
          "value": "query",
          "action": "Get many recurring invoices",
          "routing": {
            "request": {
              "url": "/recurringInvoice",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of recurring invoices"
        },
        {
          "name": "Count",
          "value": "count",
          "action": "Count recurring invoices",
          "routing": {
            "request": {
              "url": "/recurringInvoice/count",
              "method": "GET"
            }
          },
          "description": "Count recurring invoices"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "recurringInvoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "count",
      "options": [
        {
          "name": "Count",
          "value": "count",
          "action": "Count users",
          "routing": {
            "request": {
              "url": "/user/count",
              "method": "GET"
            }
          },
          "description": "Count users"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create user",
          "routing": {
            "request": {
              "url": "/user",
              "json": true,
              "method": "POST",
              "headers": {
                "Content-Type": "application/json"
              }
            }
          },
          "description": "Create a user"
        },
        {
          "name": "Get Many",
          "value": "query",
          "action": "Get many users",
          "routing": {
            "request": {
              "url": "/user",
              "method": "GET"
            }
          },
          "description": "Retrieve a list of users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "query",
      "action": "Get many articles",
      "routing": {
        "request": {
          "url": "/article",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of articles",
      "resource": "article"
    },
    {
      "name": "Count",
      "value": "count",
      "action": "Count articles",
      "routing": {
        "request": {
          "url": "/article/count",
          "method": "GET"
        }
      },
      "description": "Count articles",
      "resource": "article"
    },
    {
      "name": "Get",
      "value": "queryId",
      "action": "Get article",
      "routing": {
        "request": {
          "url": "=/article/id/{{ $parameter.articleId.value }}",
          "method": "GET"
        }
      },
      "description": "Retrieve an article",
      "resource": "article"
    },
    {
      "name": "Get Many",
      "value": "query",
      "action": "Get many parties",
      "routing": {
        "request": {
          "url": "/party",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of parties",
      "resource": "party"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create party",
      "routing": {
        "request": {
          "url": "/party",
          "method": "POST"
        }
      },
      "description": "Create a party",
      "resource": "party"
    },
    {
      "name": "Count",
      "value": "count",
      "action": "Count parties",
      "routing": {
        "request": {
          "url": "/party/count",
          "method": "GET"
        }
      },
      "description": "Count parties",
      "resource": "party"
    },
    {
      "name": "Get Many",
      "value": "query",
      "action": "Get many recurring invoices",
      "routing": {
        "request": {
          "url": "/recurringInvoice",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of recurring invoices",
      "resource": "recurringInvoice"
    },
    {
      "name": "Count",
      "value": "count",
      "action": "Count recurring invoices",
      "routing": {
        "request": {
          "url": "/recurringInvoice/count",
          "method": "GET"
        }
      },
      "description": "Count recurring invoices",
      "resource": "recurringInvoice"
    },
    {
      "name": "Count",
      "value": "count",
      "action": "Count users",
      "routing": {
        "request": {
          "url": "/user/count",
          "method": "GET"
        }
      },
      "description": "Count users",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create user",
      "routing": {
        "request": {
          "url": "/user",
          "json": true,
          "method": "POST",
          "headers": {
            "Content-Type": "application/json"
          }
        }
      },
      "description": "Create a user",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "query",
      "action": "Get many users",
      "routing": {
        "request": {
          "url": "/user",
          "method": "GET"
        }
      },
      "description": "Retrieve a list of users",
      "resource": "user"
    }
  ]

npm_readme:
  # n8n-nodes-weclapp

  This is an n8n community node. It lets you use weclapp in your n8n workflows.

  weclapp is a cloud-based ERP software that helps businesses manage their operations, including sales, inventory, and customer relationships. With this n8n node, you can integrate weclapp into your automated workflows to streamline your business processes.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node currently supports the following weclapp resources and operations:

  ### Article

  | Operation                   | API                                                                                                                         | Implemented |
  | --------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------- |
  | Query articles              | [GET /article](https://www.weclapp.com/api/#get-/article)                                                                   | ✅           |
  | Create articles             | [POST /article](https://www.weclapp.com/api/#post-/article)                                                                 | 🚫           |
  | Count articles              | [GET /article/count](https://www.weclapp.com/api/#get-/article/count)                                                       | ✅           |
  | Query article by ID         | [GET /article/id/{id}](https://www.weclapp.com/api/#get-/article/id/-id-)                                                   | ✅           |
  | Update article              | [PUT /article/id/{id}](https://www.weclapp.com/api/#put-/article/id/-id-)                                                   | 🚫           |
  | Delete article              | [DELETE /article/id/{id}](https://www.weclapp.com/api/#delete-/article/id/-id-)                                             | 🚫           |
  | Change unit                 | [POST /article/id/{id}/changeUnit](https://www.weclapp.com/api/#post-/article/id/-id-/changeUnit)                           | 🚫           |
  | Create datasheet PDF        | [POST /article/id/{id}/createDatasheetPdf](https://www.weclapp.com/api/#post-/article/id/-id-/createDatasheetPdf)           | 🚫           |
  | Create label PDF            | [POST /article/id/{id}/createLabelPdf](https://www.weclapp.com/api/#post-/article/id/-id-/createLabelPdf)                   | 🚫           |
  | Download article image      | [GET /article/id/{id}/downloadArticleImage](https://www.weclapp.com/api/#get-/article/id/-id-/downloadArticleImage)         | 🚫           |
  | Download main article image | [GET /article/id/{id}/downloadMainArticleImage](https://www.weclapp.com/api/#get-/article/id/-id-/downloadMainArticleImage) | 🚫           |
  | Packaging unit structure    | [GET /article/id/{id}/packagingUnitStructure](https://www.weclapp.com/api/#get-/article/id/-id-/packagingUnitStructure)     | 🚫           |
  | Upload article image        | [POST /article/id/{id}/uploadArticleImage](https://www.weclapp.com/api/#post-/article/id/-id-/uploadArticleImage)           | 🚫           |

  ### Party

  | Operation                        | API                                                                                                                                                       | Implemented |
  | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
  | Query party                      | [GET /party](https://www.weclapp.com/api/#get-/party)                                                                                                     | ✅           |
  | Create party                     | [POST /party](https://www.weclapp.com/api/#post-/party)                                                                                                   | ✅           |
  | Count parties                    | [GET /party/count](https://www.weclapp.com/api/#get-/party/count)                                                                                         | ✅           |
  | Query party by id                | [GET /party/id/{id}](https://www.weclapp.com/api/#get-/party/id/-id-)                                                                                     | 🚫           |
  | Update party                     | [PUT /party/id/{id}](https://www.weclapp.com/api/#put-/party/id/-id-)                                                                                     | 🚫           |
  | Delete party                     | [DELETE /party/id/{id}](https://www.weclapp.com/api/#delete-/party/id/-id-)                                                                               | 🚫           |
  | Create public page               | [POST /party/id/{id}/createPublicPage](https://www.weclapp.com/api/#post-/party/id/-id-/createPublicPage)                                                 | 🚫           |
  | Download image                   | [GET /party/id/{id}/downloadImage](https://www.weclapp.com/api/#get-/party/id/-id-/downloadImage)                                                         | 🚫           |
  | Transfer address to open records | [POST /party/id/{id}/startTransferAddressesToOpenRecords](https://www.weclapp.com/api/#post-/party/id/-id-/startTransferAddressesToOpenRecords)           | 🚫           |
  | Transfer email to open records   | [POST /party/id/{id}/startTransferEmailAddressesToOpenRecords](https://www.weclapp.com/api/#post-/party/id/-id-/startTransferEmailAddressesToOpenRecords) | 🚫           |
  | Upload image                     | [POST /party/id/{id}/uploadImage](https://www.weclapp.com/api/#post-/party/id/-id-/uploadImage)                                                           | 🚫           |

  ### Recurring Invoice

  > [!CAUTION]
  > This is an unofficial implementation of the weclapp API. The following operations are implemented. But it's not officially documented in the weclapp API documentation. Use at your own risk.

  | Operation                | API                                                                                     | Implemented |
  | ------------------------ | --------------------------------------------------------------------------------------- | ----------- |
  | Query recurring invoices | [GET /recurringInvoice](https://www.weclapp.com/api/#get-/recurringInvoice)             | ✅           |
  | Count recurring invoices | [GET /recurringInvoice/count](https://www.weclapp.com/api/#get-/recurringInvoice/count) | ✅           |

  ### User

  | Operation             | API                                                                                                       | Implemented |
  | --------------------- | --------------------------------------------------------------------------------------------------------- | ----------- |
  | Query users           | [GET /user](https://www.weclapp.com/api/#get-/user)                                                       | ✅           |
  | Create user           | [POST /user](https://www.weclapp.com/api/#post-/user)                                                     | ✅           |
  | Count users           | [GET /user/count](https://www.weclapp.com/api/#get-/user/count)                                           | ✅           |
  | Current user          | [GET /user/currentUser](https://www.weclapp.com/api/#get-/user/currentUser)                               | 🚫           |
  | Query user by ID      | [GET /user/id/{id}](https://www.weclapp.com/api/#get-/user/id/-id-)                                       | 🚫           |
  | Update user           | [PUT /user/id/{id}](https://www.weclapp.com/api/#put-/user/id/-id-)                                       | 🚫           |
  | Delete mfa device     | [POST /user/id/{id}/deleteMfaDevice](https://www.weclapp.com/api/#post-/user/id/-id-/deleteMfaDevice)     | 🚫           |
  | Invite user           | [POST /user/id/{id}/invite](https://www.weclapp.com/api/#post-/user/id/-id-/invite)                       | 🚫           |
  | Read user mfa devices | [GET /user/id/{id}/readMfaDevices](https://www.weclapp.com/api/#get-/user/id/-id-/readMfaDevices)         | 🚫           |
  | Soft delete user      | [POST /user/id/{id}/softDelete](https://www.weclapp.com/api/#post-/user/id/-id-/softDelete)               | 🚫           |
  | User image            | [GET /user/id/{id}/userImage](https://www.weclapp.com/api/#get-/user/id/-id-/userImage)                   | 🚫           |
  | User image thumbnail  | [GET /user/id/{id}/userImageThumbnail](https://www.weclapp.com/api/#get-/user/id/-id-/userImageThumbnail) | 🚫           |

  ## Credentials

  This node uses the **Weclapp API** credential.

  You need:

  * A weclapp tenant, available at `https://<TENANT>.weclapp.com`
  * An API token from your weclapp account

  To configure the credential in n8n:

  1. Create a new **Weclapp API** credential.
  2. Enter your **Tenant**. For `https://example.weclapp.com`, enter `example`.
  3. Enter your **API Token**. You can configure it in weclapp under **My settings > API**.
  4. Save the credential.

  The node sends the token as the `AuthenticationToken` header and calls the weclapp API at `https://<TENANT>.weclapp.com/webapp/api/v2`.

  ## Compatibility

  This package uses the n8n community node API version 1 and depends on `n8n-workflow`.

  No specific minimum n8n version is pinned in this package yet.

  ## Usage

  For query operations, use the available query parameters to shape the weclapp request:

  * **Page**, **Page Size**, and **Offset** control pagination.
  * **Sort** adds one or more sort criteria.
  * **Filter Mode** supports basic n8n filters or advanced weclapp filter operators.
  * **Properties** limits the returned fields.
  * **Include Referenced Entities** includes referenced entities in the response.
  * **Serialize Nulls** controls whether null values are included.
  * **Additional Properties** is available for article queries.

  For the **User > Create** operation, enable **Dry Run** to validate the request without creating the user in weclapp.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [weclapp api documentation](https://www.weclapp.com/api/)

ai_documentation_summary:
  {"purpose":"This node integrates n8n with the weclapp cloud ERP API, allowing workflows to query and create records for business data such as articles and parties. It is intended to automate ERP-related operations like product and customer management.","capabilities":["Query articles","Count articles","Query article by ID","Query parties","Create parties","Count parties"],"authentication":"Credentials are required, but the README excerpt does not specify the exact auth method; weclapp API access typically uses API credentials configured in n8n.","commonUseCases":["Automating product/article lookups and inventory-related workflows","Creating and querying customer or business partner records","Syncing ERP data between weclapp and other systems"],"limitations":["Many documented operations are not implemented yet, including article create/update/delete and most advanced article actions","Several party operations such as query by ID, update, delete, and image/public page actions are not implemented"],"relatedNodes":[]}


node_type: @probo/n8n-nodes-probo.proboTrigger
package_name: @probo/n8n-nodes-probo
display_name: Probo Trigger
description: Starts a workflow when Probo events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: codenem
author_github_url: https://github.com/getprobo/probo.git
npm_package_name: @probo/n8n-nodes-probo
npm_version: 0.200.0
community_fetched_at: 2026-07-14T14:40:34.635Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # @probo/n8n-nodes-probo

  n8n community node package for the [Probo](https://www.probo.com) compliance platform. Automate compliance workflows — manage controls, documents, risks, vendors, cookie banners, and more — over the Probo GraphQL API.

  This package provides two nodes:

  | Node | Type | Description |
  |------|------|-------------|
  | **Probo** | Action | Read and write Probo resources (tasks, documents, controls, organizations, and 30+ other resources) |
  | **Probo Trigger** | Trigger | Start a workflow when Probo webhook events occur (document published, user created, obligation updated, and more) |

  ## Requirements

  - A self-hosted n8n instance with [community nodes enabled](https://docs.n8n.io/hosting/configuration/configuration-examples/community-nodes/)
  - A Probo account with an API key
  - n8n 1.0+ (uses the community node package format)

  ## Installation

  Install the package from npm on your self-hosted n8n instance. Only users with the **Owner** or **Admin** role can install community nodes.

  ### GUI installation (recommended)

  1. In n8n, go to **Settings → Community Nodes**.
  2. Click **Install**.
  3. Enter the npm package name:

     ```
     @probo/n8n-nodes-probo
     ```

     To pin a specific version, append it (for example `@probo/n8n-nodes-probo@0.199.0`).

  4. Accept the community node risk notice and click **Install**.
  5. Restart n8n if the new nodes do not appear in the node palette immediately.

  See the [n8n GUI installation guide](https://docs.n8n.io/integrations/community-nodes/installation-and-management/gui-installation/) for details.

  ### Manual installation

  If you run n8n in Docker or queue mode, you can install the package manually:

  ```bash
  mkdir -p ~/.n8n/nodes
  cd ~/.n8n/nodes
  npm install @probo/n8n-nodes-probo
  ```

  Restart n8n after installation. See the [manual installation guide](https://docs.n8n.io/integrations/community-nodes/installation/manual-install/) for upgrade and downgrade steps.

  ## Credentials

  All Probo nodes use the **Probo API** credential type. The node sends your API key as a `Bearer` token on every request.

  ### Configure credentials in n8n

  1. Add a **Probo** or **Probo Trigger** node to a workflow.
  2. Open the **Credential** dropdown and select **Create New Credential**.
  3. Fill in the fields:

     | Field | Default | Description |
     |-------|---------|-------------|
     | **Probo Server** | `https://us.probo.com` | Base URL of your Probo instance. Use `https://eu.probo.com` for the EU region, or your own URL when self-hosting. |
     | **API Key** | — | A Probo API key with access to the organizations you automate against. |

  4. Click **Test** to verify connectivity. n8n calls the Probo GraphQL API and checks that the key is valid.
  5. Click **Save**. The credential is shared across all Probo nodes in your instance.

  ### Get an API key

  1. Sign in to the Probo console.
  2. Go to **Settings → API Keys**.
  3. Click **Create API Key**.
  4. Copy the key immediately — it is shown only once.

  For self-hosted Probo, set **Probo Server** to your instance URL (for example `https://probo.example.com`). The node talks to `/api/console/v1/graphql` on that host.

  More detail: [Probo n8n authentication docs](https://www.probo.com/docs/api/n8n/authentication).

  ## Workflow example: notify Slack when a document is published

  This workflow listens for Probo document events and posts a message to Slack.

  ```
  Probo Trigger  →  Slack
  (document      (post message
   published)     with document name)
  ```

  ### Steps

  1. **Create credentials** as described above and save them as `Probo API`.

  2. **Add a Probo Trigger node**
     - **Credential:** Probo API
     - **Organization ID:** your Probo organization GID (for example `gid://probo/Organization/…`)
     - **Events:** `Document Version Published`
     - **Verify Signature:** enabled (recommended)

  3. **Add a Slack node** (or any notification node) connected to the trigger output.
     - Map fields from the webhook payload, for example:
       - **Text:** `A document was published: {{ $json.data.documentVersion.document.name }}`

  4. **Activate the workflow.** n8n registers a webhook subscription in Probo. When a document version is published, Probo delivers the event and the Slack message is sent.

  ### Alternative: list open tasks on a schedule

  Use the **Probo** action node without a trigger:

  1. Add a **Schedule Trigger** node (for example, every weekday at 9:00).
  2. Add a **Probo** node:
     - **Resource:** Task
     - **Operation:** Get Many
     - **Organization ID:** your organization GID
     - **Return All:** enabled (or set a **Limit**)
  3. Add a downstream node (Slack, email, or spreadsheet) to process `$json` task records.

  This pattern works well for daily compliance standups or overdue-task digests.

  ## Resources

  The **Probo** node exposes operations across the platform, including:

  Access Review, Asset, Audit, Audit Log, Control, Cookie Banner, Cookie Category, Cookie Consent Record, Data, Document, DPIA, Evidence, Finding, Framework, Measure, Obligation, Organization, Processing Activity, Risk, Task, Third Party, Trust Center, User, Vendor, and more.

  Use the **Execute** resource to run custom GraphQL queries or mutations when a dedicated operation is not available.

  ## Links

  - [Probo documentation](https://www.probo.com/docs)
  - [Probo n8n authentication](https://www.probo.com/docs/api/n8n/authentication)
  - [Package on npm](https://www.npmjs.com/package/@probo/n8n-nodes-probo)
  - [Source code](https://github.com/getprobo/probo/tree/main/packages/n8n-node)
  - [Report an issue](https://github.com/getprobo/probo/issues)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Probo webhook events occur, such as document published, user created, or obligation updated. It is part of the Probo community node package for automating compliance workflows against the Probo GraphQL API.","capabilities":["Subscribe to Probo webhook events and start workflows on event delivery","Listen for specific events such as Document Version Published, user-created events, and obligation updates","Use organization-scoped webhook subscriptions via an Organization ID","Verify webhook signatures for added security"],"authentication":"Probo API credential using an API key sent as a Bearer token; requires Probo Server URL and API Key","commonUseCases":["Notify Slack or other apps when a Probo document is published","Trigger compliance automation when Probo records change, such as obligations or users","Start downstream workflows based on Probo webhook activity"],"limitations":["Requires a self-hosted n8n instance with community nodes enabled","Requires a Probo account with an API key","Trigger depends on Probo webhook support and an active workflow subscription"],"relatedNodes":["Probo"]}


node_type: @probo/n8n-nodes-probo.probo
package_name: @probo/n8n-nodes-probo
display_name: Probo
description: Consume data from the Probo API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: codenem
author_github_url: https://github.com/getprobo/probo.git
npm_package_name: @probo/n8n-nodes-probo
npm_version: 0.200.0
community_fetched_at: 2026-07-14T14:40:34.637Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Access Review",
          "value": "accessReview",
          "description": "Manage access review campaigns"
        },
        {
          "name": "Asset",
          "value": "asset",
          "description": "Manage assets"
        },
        {
          "name": "Audit",
          "value": "audit",
          "description": "Manage audits"
        },
        {
          "name": "Audit Log",
          "value": "auditLog",
          "description": "View audit log entries"
        },
        {
          "name": "Control",
          "value": "control",
          "description": "Manage controls"
        },
        {
          "name": "Cookie Banner",
          "value": "cookieBanner",
          "description": "Manage cookie banners"
        },
        {
          "name": "Cookie Category",
          "value": "cookieCategory",
          "description": "Manage cookie categories"
        },
        {
          "name": "Cookie Consent Record",
          "value": "cookieConsentRecord",
          "description": "View cookie consent records"
        },
        {
          "name": "Data",
          "value": "datum",
          "description": "Manage data"
        },
        {
          "name": "Document",
          "value": "document",
          "description": "Manage documents, versions, and signatures"
        },
        {
          "name": "DPIA",
          "value": "dpia",
          "description": "Manage data protection impact assessments"
        },
        {
          "name": "Evidence",
          "value": "evidence",
          "description": "Manage evidences"
        },
        {
          "name": "Execute",
          "value": "execute",
          "description": "Execute a GraphQL query or mutation"
        },
        {
          "name": "Finding",
          "value": "finding",
          "description": "Manage findings"
        },
        {
          "name": "Framework",
          "value": "framework",
          "description": "Manage frameworks"
        },
        {
          "name": "Measure",
          "value": "measure",
          "description": "Manage measures"
        },
        {
          "name": "Obligation",
          "value": "obligation",
          "description": "Manage obligations"
        },
        {
          "name": "Organization",
          "value": "organization",
          "description": "Manage organizations"
        },
        {
          "name": "Organization Context",
          "value": "organizationContext",
          "description": "Manage organization context"
        },
        {
          "name": "Processing Activity",
          "value": "processingActivity",
          "description": "Manage processing activities"
        },
        {
          "name": "Resource Alias",
          "value": "resourceAlias",
          "description": "Manage resource aliases"
        },
        {
          "name": "Rights Request",
          "value": "rightsRequest",
          "description": "Manage rights requests"
        },
        {
          "name": "Risk",
          "value": "risk",
          "description": "Manage risks"
        },
        {
          "name": "Risk Assessment",
          "value": "riskAssessment",
          "description": "Manage risk assessments"
        },
        {
          "name": "Statement of Applicability",
          "value": "statementOfApplicability",
          "description": "Manage statements of applicability"
        },
        {
          "name": "Task",
          "value": "task",
          "description": "Manage tasks"
        },
        {
          "name": "Third Party",
          "value": "thirdParty",
          "description": "Manage third parties"
        },
        {
          "name": "TIA",
          "value": "tia",
          "description": "Manage transfer impact assessments"
        },
        {
          "name": "Tracker Pattern",
          "value": "trackerPattern",
          "description": "Manage tracker patterns"
        },
        {
          "name": "Trust Center",
          "value": "trustCenter",
          "description": "Manage trust center"
        },
        {
          "name": "User",
          "value": "user",
          "description": "Manage organization users (profiles)"
        },
        {
          "name": "Webhook",
          "value": "webhook",
          "description": "Manage webhook subscriptions"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel an access review campaign",
          "description": "Cancel an access review campaign"
        },
        {
          "name": "Close",
          "value": "close",
          "action": "Close an access review campaign",
          "description": "Close an access review campaign"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an access review campaign",
          "description": "Create a new access review campaign"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an access review campaign",
          "description": "Delete an access review campaign"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an access review campaign",
          "description": "Get an access review campaign"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many access review campaigns",
          "description": "Get many access review campaigns"
        },
        {
          "name": "Start",
          "value": "start",
          "action": "Start an access review campaign",
          "description": "Start an access review campaign"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an access review campaign",
          "description": "Update an existing access review campaign"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accessReview"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an asset",
          "description": "Create a new asset"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an asset",
          "description": "Delete an asset"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an asset",
          "description": "Get an asset"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many assets",
          "description": "Get many assets"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the asset list",
          "description": "Publish the asset list as a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an asset",
          "description": "Update an existing asset"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "asset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an audit",
          "description": "Create a new audit"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an audit",
          "description": "Delete an audit"
        },
        {
          "name": "Delete Report",
          "value": "deleteReport",
          "action": "Delete an audit report",
          "description": "Delete an audit report"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an audit",
          "description": "Get an audit"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many audits",
          "description": "Get many audits"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an audit",
          "description": "Update an existing audit"
        },
        {
          "name": "Upload Report",
          "value": "uploadReport",
          "action": "Upload an audit report",
          "description": "Upload a report for an audit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an audit log entry",
          "description": "Get an audit log entry"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many audit log entries",
          "description": "Get many audit log entries"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auditLog"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a control",
          "description": "Create a new control"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a control",
          "description": "Delete a control"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a control",
          "description": "Get a control"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many controls",
          "description": "Get many controls"
        },
        {
          "name": "Link Audit",
          "value": "linkAudit",
          "action": "Link an audit to a control",
          "description": "Link an audit to a control"
        },
        {
          "name": "Link Document",
          "value": "linkDocument",
          "action": "Link a document to a control",
          "description": "Link a document to a control"
        },
        {
          "name": "Link Measure",
          "value": "linkMeasure",
          "action": "Link a measure to a control",
          "description": "Link a measure to a control"
        },
        {
          "name": "Link Obligation",
          "value": "linkObligation",
          "action": "Link an obligation to a control",
          "description": "Link an obligation to a control"
        },
        {
          "name": "Unlink Audit",
          "value": "unlinkAudit",
          "action": "Unlink an audit from a control",
          "description": "Unlink an audit from a control"
        },
        {
          "name": "Unlink Document",
          "value": "unlinkDocument",
          "action": "Unlink a document from a control",
          "description": "Unlink a document from a control"
        },
        {
          "name": "Unlink Measure",
          "value": "unlinkMeasure",
          "action": "Unlink a measure from a control",
          "description": "Unlink a measure from a control"
        },
        {
          "name": "Unlink Obligation",
          "value": "unlinkObligation",
          "action": "Unlink an obligation from a control",
          "description": "Unlink an obligation from a control"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a control",
          "description": "Update an existing control"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "control"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Activate",
          "value": "activate",
          "action": "Activate a cookie banner",
          "description": "Activate a cookie banner"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a cookie banner",
          "description": "Create a new cookie banner"
        },
        {
          "name": "Deactivate",
          "value": "deactivate",
          "action": "Deactivate a cookie banner",
          "description": "Deactivate a cookie banner"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a cookie banner",
          "description": "Delete a cookie banner"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a cookie banner",
          "description": "Get a cookie banner"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many cookie banners",
          "description": "Get many cookie banners"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a cookie banner version",
          "description": "Publish a new cookie banner version"
        },
        {
          "name": "Regenerate Policy",
          "value": "regeneratePolicy",
          "action": "Regenerate a cookie banner tracker policy",
          "description": "Re-arm tracker policy generation for a published cookie banner"
        },
        {
          "name": "Translate",
          "value": "translate",
          "action": "Translate a cookie banner",
          "description": "Upsert a cookie banner translation"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a cookie banner",
          "description": "Update an existing cookie banner"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "cookieBanner"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a cookie category",
          "description": "Create a new cookie category"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a cookie category",
          "description": "Delete a cookie category"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a cookie category",
          "description": "Get a cookie category"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many cookie categories",
          "description": "Get many cookie categories"
        },
        {
          "name": "Reorder",
          "value": "reorder",
          "action": "Reorder a cookie category",
          "description": "Change the rank of a cookie category"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a cookie category",
          "description": "Update an existing cookie category"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "cookieCategory"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a cookie consent record",
          "description": "Get a cookie consent record"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many cookie consent records",
          "description": "Get many cookie consent records"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "cookieConsentRecord"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tracker pattern",
          "description": "Create a new tracker pattern"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a tracker pattern",
          "description": "Delete a tracker pattern"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a tracker pattern",
          "description": "Get a tracker pattern"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tracker patterns",
          "description": "Get many tracker patterns"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a tracker pattern",
          "description": "Move a tracker pattern to a different category"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a tracker pattern",
          "description": "Update an existing tracker pattern"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trackerPattern"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a datum",
          "description": "Create a new datum"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a datum",
          "description": "Delete a datum"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a datum",
          "description": "Get a datum"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many data",
          "description": "Get many data"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the data list",
          "description": "Publish the data list as a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a datum",
          "description": "Update an existing datum"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datum"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive a document",
          "description": "Archive a document"
        },
        {
          "name": "Cancel Signature",
          "value": "cancelSignature",
          "action": "Cancel a document signature request",
          "description": "Cancel a signature request"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document",
          "description": "Create a new document"
        },
        {
          "name": "Create Draft Version",
          "value": "createDraftVersion",
          "action": "Create a draft document version",
          "description": "Create a new draft version from the latest published version"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document",
          "description": "Delete a document"
        },
        {
          "name": "Delete Draft Version",
          "value": "deleteDraftVersion",
          "action": "Delete a draft document version",
          "description": "Delete a draft document version"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document",
          "description": "Get a document"
        },
        {
          "name": "Get Approval Decision",
          "value": "getApprovalDecision",
          "action": "Get an approval decision",
          "description": "Get an approval decision"
        },
        {
          "name": "Get Approval Quorum",
          "value": "getApprovalQuorum",
          "action": "Get an approval quorum",
          "description": "Get an approval quorum"
        },
        {
          "name": "Get Latest Published Version ID",
          "value": "getLatestPublishedVersionId",
          "action": "Get the latest published document version ID",
          "description": "Get the latest published document version ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many documents",
          "description": "Get many documents"
        },
        {
          "name": "Get Many Approval Decisions",
          "value": "getAllApprovalDecisions",
          "action": "Get many approval decisions",
          "description": "Get many approval decisions for an approval quorum"
        },
        {
          "name": "Get Many Approval Quorums",
          "value": "getAllApprovalQuorums",
          "action": "Get many approval quorums",
          "description": "Get many approval quorums for a document version"
        },
        {
          "name": "Get Many Signatures",
          "value": "getAllSignatures",
          "action": "Get many document version signatures",
          "description": "Get many signatures for a document version"
        },
        {
          "name": "Get Many Versions",
          "value": "getAllVersions",
          "action": "Get many document versions",
          "description": "Get many versions of a document"
        },
        {
          "name": "Get Signature",
          "value": "getSignature",
          "action": "Get a document version signature",
          "description": "Get a document version signature"
        },
        {
          "name": "Get Version",
          "value": "getVersion",
          "action": "Get a document version",
          "description": "Get a document version"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a document",
          "description": "Publish a draft document, request approval, or publish as minor"
        },
        {
          "name": "Request Signature",
          "value": "requestSignature",
          "action": "Request a document version signature",
          "description": "Request a signature for a document version"
        },
        {
          "name": "Unarchive",
          "value": "unarchive",
          "action": "Unarchive a document",
          "description": "Unarchive a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document",
          "description": "Update an existing document"
        },
        {
          "name": "Update Version",
          "value": "updateVersion",
          "action": "Update a document version",
          "description": "Update a draft document version"
        },
        {
          "name": "Void Approval",
          "value": "voidApproval",
          "action": "Void a document version approval",
          "description": "Void a pending approval request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a DPIA",
          "description": "Create a new DPIA"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a DPIA",
          "description": "Delete a DPIA"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a DPIA",
          "description": "Get a DPIA"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many dpias",
          "description": "Get many DPIAs"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the DPIA list",
          "description": "Publish the DPIA list as a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a DPIA",
          "description": "Update an existing DPIA"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dpia"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an evidence",
          "description": "Delete an evidence"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an evidence",
          "description": "Get an evidence"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many evidences",
          "description": "Get many evidences for a measure"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload evidence",
          "description": "Upload evidence for a measure"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "evidence"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute graphql",
          "description": "Execute a GraphQL query or mutation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "execute"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a finding",
          "description": "Create a new finding"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a finding",
          "description": "Delete a finding"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a finding",
          "description": "Get a finding"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many findings",
          "description": "Get many findings"
        },
        {
          "name": "Link Audit",
          "value": "linkAudit",
          "action": "Link an audit to a finding",
          "description": "Link an audit to a finding"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the finding list",
          "description": "Publish the finding list as a document"
        },
        {
          "name": "Unlink Audit",
          "value": "unlinkAudit",
          "action": "Unlink an audit from a finding",
          "description": "Unlink an audit from a finding"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a finding",
          "description": "Update an existing finding"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "finding"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a framework",
          "description": "Create a new framework"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a framework",
          "description": "Delete a framework"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a framework",
          "description": "Get a framework"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many frameworks",
          "description": "Get many frameworks"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a framework",
          "description": "Update an existing framework"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "framework"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a measure",
          "description": "Create a new measure"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a measure",
          "description": "Delete a measure"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a measure",
          "description": "Get a measure"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many measures",
          "description": "Get many measures"
        },
        {
          "name": "Link Document",
          "value": "linkDocument",
          "action": "Link a document to a measure",
          "description": "Link a document to a measure"
        },
        {
          "name": "Link Third Party",
          "value": "linkThirdParty",
          "action": "Link a third party to a measure",
          "description": "Link a third party to a measure"
        },
        {
          "name": "Unlink Document",
          "value": "unlinkDocument",
          "action": "Unlink a document from a measure",
          "description": "Unlink a document from a measure"
        },
        {
          "name": "Unlink Third Party",
          "value": "unlinkThirdParty",
          "action": "Unlink a third party from a measure",
          "description": "Unlink a third party from a measure"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a measure",
          "description": "Update an existing measure"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "measure"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an obligation",
          "description": "Create a new obligation"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an obligation",
          "description": "Delete an obligation"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an obligation",
          "description": "Get an obligation"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many obligations",
          "description": "Get many obligations"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the obligation list",
          "description": "Publish the obligation list as a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an obligation",
          "description": "Update an existing obligation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "obligation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an organization",
          "description": "Create a new organization"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an organization",
          "description": "Delete an organization"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an organization",
          "description": "Get an organization"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many organizations",
          "description": "Get many organizations"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an organization",
          "description": "Update an existing organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get the organization context",
          "description": "Get the organization context"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update the organization context",
          "description": "Update the organization context"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organizationContext"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a processing activity",
          "description": "Create a new processing activity"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a processing activity",
          "description": "Delete a processing activity"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a processing activity",
          "description": "Get a processing activity"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many processing activities",
          "description": "Get many processing activities"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the processing activity list",
          "description": "Publish the processing activity list as a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a processing activity",
          "description": "Update an existing processing activity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "processingActivity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a rights request",
          "description": "Create a new rights request"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a rights request",
          "description": "Delete a rights request"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a rights request",
          "description": "Get a rights request"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many rights requests",
          "description": "Get many rights requests"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a rights request",
          "description": "Update an existing rights request"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rightsRequest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "set",
      "options": [
        {
          "name": "Remove",
          "value": "remove",
          "action": "Remove a resource alias",
          "description": "Remove a resource alias from a resource"
        },
        {
          "name": "Set",
          "value": "set",
          "action": "Set a resource alias",
          "description": "Set a resource alias for a document, file, or audit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "resourceAlias"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a risk assessment",
          "description": "Create a risk assessment"
        },
        {
          "name": "Create Boundary",
          "value": "createBoundary",
          "action": "Create a boundary",
          "description": "Create a boundary in a scope"
        },
        {
          "name": "Create Node",
          "value": "createNode",
          "action": "Create a node",
          "description": "Create a node in a scope"
        },
        {
          "name": "Create Process",
          "value": "createProcess",
          "action": "Create a process",
          "description": "Create a process in a scope"
        },
        {
          "name": "Create Scenario",
          "value": "createScenario",
          "action": "Create a scenario",
          "description": "Create a scenario in a scope"
        },
        {
          "name": "Create Scope",
          "value": "createScope",
          "action": "Create a scope",
          "description": "Create a scope in a risk assessment"
        },
        {
          "name": "Create Threat",
          "value": "createThreat",
          "action": "Create a threat",
          "description": "Create a threat in a scope"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a risk assessment",
          "description": "Delete a risk assessment"
        },
        {
          "name": "Delete Boundary",
          "value": "deleteBoundary",
          "action": "Delete a boundary",
          "description": "Delete a boundary"
        },
        {
          "name": "Delete Node",
          "value": "deleteNode",
          "action": "Delete a node",
          "description": "Delete a node"
        },
        {
          "name": "Delete Process",
          "value": "deleteProcess",
          "action": "Delete a process",
          "description": "Delete a process"
        },
        {
          "name": "Delete Scenario",
          "value": "deleteScenario",
          "action": "Delete a scenario",
          "description": "Delete a scenario"
        },
        {
          "name": "Delete Scope",
          "value": "deleteScope",
          "action": "Delete a scope",
          "description": "Delete a scope"
        },
        {
          "name": "Delete Threat",
          "value": "deleteThreat",
          "action": "Delete a threat",
          "description": "Delete a threat"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a risk assessment",
          "description": "Get a risk assessment"
        },
        {
          "name": "Get Boundary",
          "value": "getBoundary",
          "action": "Get a boundary",
          "description": "Get a boundary"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many risk assessments",
          "description": "Get many risk assessments"
        },
        {
          "name": "Get Many Boundaries",
          "value": "getAllBoundaries",
          "action": "Get many boundaries"
        },
        {
          "name": "Get Many Nodes",
          "value": "getAllNodes",
          "action": "Get many nodes"
        },
        {
          "name": "Get Many Processes",
          "value": "getAllProcesses",
          "action": "Get many processes"
        },
        {
          "name": "Get Many Scenarios",
          "value": "getAllScenarios",
          "action": "Get many scenarios"
        },
        {
          "name": "Get Many Scopes",
          "value": "getAllScopes",
          "action": "Get many scopes"
        },
        {
          "name": "Get Many Threats",
          "value": "getAllThreats",
          "action": "Get many threats"
        },
        {
          "name": "Get Node",
          "value": "getNode",
          "action": "Get a node",
          "description": "Get a node"
        },
        {
          "name": "Get Process",
          "value": "getProcess",
          "action": "Get a process",
          "description": "Get a process"
        },
        {
          "name": "Get Scenario",
          "value": "getScenario",
          "action": "Get a scenario",
          "description": "Get a scenario"
        },
        {
          "name": "Get Scope",
          "value": "getScope",
          "action": "Get a scope",
          "description": "Get a scope"
        },
        {
          "name": "Get Scope Mermaid Chart",
          "value": "getScopeMermaidChart",
          "action": "Get a scope mermaid chart",
          "description": "Get the Mermaid diagram for a scope"
        },
        {
          "name": "Get Threat",
          "value": "getThreat",
          "action": "Get a threat",
          "description": "Get a threat"
        },
        {
          "name": "Link Scenario Risk",
          "value": "linkScenarioRisk",
          "action": "Link a scenario to a risk",
          "description": "Link a scenario to a risk"
        },
        {
          "name": "Link Scenario Threat",
          "value": "linkScenarioThreat",
          "action": "Link a scenario to a threat",
          "description": "Link a scenario to a threat"
        },
        {
          "name": "Unlink Scenario Risk",
          "value": "unlinkScenarioRisk",
          "action": "Unlink a scenario from a risk",
          "description": "Unlink a scenario from a risk"
        },
        {
          "name": "Unlink Scenario Threat",
          "value": "unlinkScenarioThreat",
          "action": "Unlink a scenario from a threat",
          "description": "Unlink a scenario from a threat"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a risk assessment",
          "description": "Update a risk assessment"
        },
        {
          "name": "Update Boundary",
          "value": "updateBoundary",
          "action": "Update a boundary",
          "description": "Update a boundary"
        },
        {
          "name": "Update Node",
          "value": "updateNode",
          "action": "Update a node",
          "description": "Update a node"
        },
        {
          "name": "Update Process",
          "value": "updateProcess",
          "action": "Update a process",
          "description": "Update a process"
        },
        {
          "name": "Update Scenario",
          "value": "updateScenario",
          "action": "Update a scenario",
          "description": "Update a scenario"
        },
        {
          "name": "Update Scope",
          "value": "updateScope",
          "action": "Update a scope",
          "description": "Update a scope"
        },
        {
          "name": "Update Threat",
          "value": "updateThreat",
          "action": "Update a threat",
          "description": "Update a threat"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "riskAssessment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listUsers",
      "options": [
        {
          "name": "Archive",
          "value": "archiveUser",
          "action": "Archive a user",
          "description": "Archive a user in the organization"
        },
        {
          "name": "Create",
          "value": "createUser",
          "action": "Create a user",
          "description": "Create a new user in the organization"
        },
        {
          "name": "Get",
          "value": "getUser",
          "action": "Get a user",
          "description": "Get a user (profile) by ID"
        },
        {
          "name": "Invite",
          "value": "inviteUser",
          "action": "Invite a user",
          "description": "Invite a user to the organization"
        },
        {
          "name": "List",
          "value": "listUsers",
          "action": "List users",
          "description": "List all users in the organization"
        },
        {
          "name": "Remove",
          "value": "removeUser",
          "action": "Remove a user",
          "description": "Remove a user from the organization"
        },
        {
          "name": "Update",
          "value": "updateUser",
          "action": "Update a user",
          "description": "Update a user (profile)"
        },
        {
          "name": "Update Membership",
          "value": "updateMembership",
          "action": "Update membership role",
          "description": "Update a user's membership role"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a risk",
          "description": "Create a new risk"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a risk",
          "description": "Delete a risk"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a risk",
          "description": "Get a risk"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many risks",
          "description": "Get many risks"
        },
        {
          "name": "Link Document",
          "value": "linkDocument",
          "action": "Link a document to a risk",
          "description": "Link a document to a risk"
        },
        {
          "name": "Link Measure",
          "value": "linkMeasure",
          "action": "Link a measure to a risk",
          "description": "Link a measure to a risk"
        },
        {
          "name": "Link Obligation",
          "value": "linkObligation",
          "action": "Link an obligation to a risk",
          "description": "Link an obligation to a risk"
        },
        {
          "name": "Publish List",
          "value": "publish",
          "action": "Publish the risk register",
          "description": "Publish the risk register as a document version"
        },
        {
          "name": "Unlink Document",
          "value": "unlinkDocument",
          "action": "Unlink a document from a risk",
          "description": "Unlink a document from a risk"
        },
        {
          "name": "Unlink Measure",
          "value": "unlinkMeasure",
          "action": "Unlink a measure from a risk",
          "description": "Unlink a measure from a risk"
        },
        {
          "name": "Unlink Obligation",
          "value": "unlinkObligation",
          "action": "Unlink an obligation from a risk",
          "description": "Unlink an obligation from a risk"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a risk",
          "description": "Update an existing risk"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "risk"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a statement of applicability",
          "description": "Create a new statement of applicability"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a statement of applicability",
          "description": "Delete a statement of applicability"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a statement of applicability",
          "description": "Get a statement of applicability"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many statements of applicability",
          "description": "Get many statements of applicability"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a statement of applicability",
          "description": "Publish a statement of applicability as a document version"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a statement of applicability",
          "description": "Update an existing statement of applicability"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statementOfApplicability"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task",
          "description": "Delete a task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "description": "Get a task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tasks",
          "description": "Get many tasks"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task",
          "description": "Update an existing task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a TIA",
          "description": "Create a new TIA"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a TIA",
          "description": "Delete a TIA"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a TIA",
          "description": "Get a TIA"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many tias",
          "description": "Get many TIAs"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish the TIA list",
          "description": "Publish the TIA list as a document"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a TIA",
          "description": "Update an existing TIA"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tia"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create External URL",
          "value": "createExternalUrl",
          "action": "Create a compliance external URL",
          "description": "Create a new compliance external URL"
        },
        {
          "name": "Create Reference",
          "value": "createReference",
          "action": "Create a trust center reference",
          "description": "Create a new trust center reference"
        },
        {
          "name": "Delete External URL",
          "value": "deleteExternalUrl",
          "action": "Delete a compliance external URL",
          "description": "Delete a compliance external URL"
        },
        {
          "name": "Delete File",
          "value": "deleteFile",
          "action": "Delete a trust center file",
          "description": "Delete a trust center file"
        },
        {
          "name": "Delete Reference",
          "value": "deleteReference",
          "action": "Delete a trust center reference",
          "description": "Delete a trust center reference"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get trust center settings",
          "description": "Get trust center settings"
        },
        {
          "name": "Get Many Files",
          "value": "getAllFiles",
          "action": "Get many trust center files",
          "description": "Get many trust center files"
        },
        {
          "name": "Get Many References",
          "value": "getAllReferences",
          "action": "Get many trust center references",
          "description": "Get many trust center references"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update trust center settings",
          "description": "Update trust center settings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trustCenter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a third party",
          "description": "Create a new third party"
        },
        {
          "name": "Create Contact",
          "value": "createContact",
          "action": "Create a third party contact",
          "description": "Create a new third party contact"
        },
        {
          "name": "Create Risk Assessment",
          "value": "createRiskAssessment",
          "action": "Create a third party risk assessment",
          "description": "Create a new third party risk assessment"
        },
        {
          "name": "Create Service",
          "value": "createService",
          "action": "Create a third party service",
          "description": "Create a new third party service"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a third party",
          "description": "Delete a third party"
        },
        {
          "name": "Delete Business Associate Agreement",
          "value": "deleteBusinessAssociateAgreement",
          "action": "Delete a third party business associate agreement",
          "description": "Delete a third party business associate agreement"
        },
        {
          "name": "Delete Compliance Report",
          "value": "deleteComplianceReport",
          "action": "Delete a third party compliance report",
          "description": "Delete a third party compliance report"
        },
        {
          "name": "Delete Contact",
          "value": "deleteContact",
          "action": "Delete a third party contact",
          "description": "Delete a third party contact"
        },
        {
          "name": "Delete Data Privacy Agreement",
          "value": "deleteDataPrivacyAgreement",
          "action": "Delete a third party data privacy agreement",
          "description": "Delete a third party data privacy agreement"
        },
        {
          "name": "Delete Service",
          "value": "deleteService",
          "action": "Delete a third party service",
          "description": "Delete a third party service"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a third party",
          "description": "Get a third party"
        },
        {
          "name": "Get Business Associate Agreement",
          "value": "getBusinessAssociateAgreement",
          "action": "Get a third party business associate agreement",
          "description": "Get a third party business associate agreement"
        },
        {
          "name": "Get Contact",
          "value": "getContact",
          "action": "Get a third party contact",
          "description": "Get a third party contact"
        },
        {
          "name": "Get Data Privacy Agreement",
          "value": "getDataPrivacyAgreement",
          "action": "Get a third party data privacy agreement",
          "description": "Get a third party data privacy agreement"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many third parties",
          "description": "Get many third parties"
        },
        {
          "name": "Get Many Child Third Parties",
          "value": "listChildThirdParties",
          "action": "Get many child third parties",
          "description": "Get child third parties linked to a parent"
        },
        {
          "name": "Get Many Compliance Reports",
          "value": "getAllComplianceReports",
          "action": "Get many third party compliance reports",
          "description": "Get many third party compliance reports"
        },
        {
          "name": "Get Many Contacts",
          "value": "getAllContacts",
          "action": "Get many third party contacts",
          "description": "Get many third party contacts"
        },
        {
          "name": "Get Many Risk Assessments",
          "value": "getAllRiskAssessments",
          "action": "Get many third party risk assessments",
          "description": "Get many third party risk assessments"
        },
        {
          "name": "Get Many Services",
          "value": "getAllServices",
          "action": "Get many third party services",
          "description": "Get many third party services"
        },
        {
          "name": "Get Risk Assessment",
          "value": "getRiskAssessment",
          "action": "Get a third party risk assessment",
          "description": "Get a third party risk assessment"
        },
        {
          "name": "Get Service",
          "value": "getService",
          "action": "Get a third party service",
          "description": "Get a third party service"
        },
        {
          "name": "Link Third Party",
          "value": "linkThirdParty",
          "action": "Link a child third party",
          "description": "Link a child third party to a parent third party"
        },
        {
          "name": "Publish List",
          "value": "publish",
          "action": "Publish the third party register",
          "description": "Publish the third party register as a document version"
        },
        {
          "name": "Unlink Third Party",
          "value": "unlinkThirdParty",
          "action": "Unlink a child third party",
          "description": "Unlink a child third party from a parent third party"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a third party",
          "description": "Update an existing third party"
        },
        {
          "name": "Update Business Associate Agreement",
          "value": "updateBusinessAssociateAgreement",
          "action": "Update a third party business associate agreement",
          "description": "Update a third party business associate agreement validity"
        },
        {
          "name": "Update Contact",
          "value": "updateContact",
          "action": "Update a third party contact",
          "description": "Update an existing third party contact"
        },
        {
          "name": "Update Data Privacy Agreement",
          "value": "updateDataPrivacyAgreement",
          "action": "Update a third party data privacy agreement",
          "description": "Update a third party data privacy agreement validity"
        },
        {
          "name": "Update Service",
          "value": "updateService",
          "action": "Update a third party service",
          "description": "Update an existing third party service"
        },
        {
          "name": "Vet",
          "value": "vet",
          "action": "Vet a third party",
          "description": "Start AI-powered vetting of a third party from its website"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "thirdParty"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook subscription",
          "description": "Create a new webhook subscription"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a webhook subscription",
          "description": "Delete a webhook subscription"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a webhook subscription",
          "description": "Get a webhook subscription"
        },
        {
          "name": "Get Events",
          "value": "getEvents",
          "action": "Get webhook delivery events",
          "description": "Get delivery events for a webhook subscription"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many webhook subscriptions",
          "description": "Get many webhook subscriptions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a webhook subscription",
          "description": "Update a webhook subscription"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel an access review campaign",
      "description": "Cancel an access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Close",
      "value": "close",
      "action": "Close an access review campaign",
      "description": "Close an access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an access review campaign",
      "description": "Create a new access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an access review campaign",
      "description": "Delete an access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an access review campaign",
      "description": "Get an access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many access review campaigns",
      "description": "Get many access review campaigns",
      "resource": "accessReview"
    },
    {
      "name": "Start",
      "value": "start",
      "action": "Start an access review campaign",
      "description": "Start an access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an access review campaign",
      "description": "Update an existing access review campaign",
      "resource": "accessReview"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an asset",
      "description": "Create a new asset",
      "resource": "asset"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an asset",
      "description": "Delete an asset",
      "resource": "asset"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an asset",
      "description": "Get an asset",
      "resource": "asset"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many assets",
      "description": "Get many assets",
      "resource": "asset"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the asset list",
      "description": "Publish the asset list as a document",
      "resource": "asset"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an asset",
      "description": "Update an existing asset",
      "resource": "asset"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an audit",
      "description": "Create a new audit",
      "resource": "audit"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an audit",
      "description": "Delete an audit",
      "resource": "audit"
    },
    {
      "name": "Delete Report",
      "value": "deleteReport",
      "action": "Delete an audit report",
      "description": "Delete an audit report",
      "resource": "audit"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an audit",
      "description": "Get an audit",
      "resource": "audit"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many audits",
      "description": "Get many audits",
      "resource": "audit"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an audit",
      "description": "Update an existing audit",
      "resource": "audit"
    },
    {
      "name": "Upload Report",
      "value": "uploadReport",
      "action": "Upload an audit report",
      "description": "Upload a report for an audit",
      "resource": "audit"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an audit log entry",
      "description": "Get an audit log entry",
      "resource": "auditLog"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many audit log entries",
      "description": "Get many audit log entries",
      "resource": "auditLog"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a control",
      "description": "Create a new control",
      "resource": "control"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a control",
      "description": "Delete a control",
      "resource": "control"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a control",
      "description": "Get a control",
      "resource": "control"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many controls",
      "description": "Get many controls",
      "resource": "control"
    },
    {
      "name": "Link Audit",
      "value": "linkAudit",
      "action": "Link an audit to a control",
      "description": "Link an audit to a control",
      "resource": "control"
    },
    {
      "name": "Link Document",
      "value": "linkDocument",
      "action": "Link a document to a control",
      "description": "Link a document to a control",
      "resource": "control"
    },
    {
      "name": "Link Measure",
      "value": "linkMeasure",
      "action": "Link a measure to a control",
      "description": "Link a measure to a control",
      "resource": "control"
    },
    {
      "name": "Link Obligation",
      "value": "linkObligation",
      "action": "Link an obligation to a control",
      "description": "Link an obligation to a control",
      "resource": "control"
    },
    {
      "name": "Unlink Audit",
      "value": "unlinkAudit",
      "action": "Unlink an audit from a control",
      "description": "Unlink an audit from a control",
      "resource": "control"
    },
    {
      "name": "Unlink Document",
      "value": "unlinkDocument",
      "action": "Unlink a document from a control",
      "description": "Unlink a document from a control",
      "resource": "control"
    },
    {
      "name": "Unlink Measure",
      "value": "unlinkMeasure",
      "action": "Unlink a measure from a control",
      "description": "Unlink a measure from a control",
      "resource": "control"
    },
    {
      "name": "Unlink Obligation",
      "value": "unlinkObligation",
      "action": "Unlink an obligation from a control",
      "description": "Unlink an obligation from a control",
      "resource": "control"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a control",
      "description": "Update an existing control",
      "resource": "control"
    },
    {
      "name": "Activate",
      "value": "activate",
      "action": "Activate a cookie banner",
      "description": "Activate a cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a cookie banner",
      "description": "Create a new cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Deactivate",
      "value": "deactivate",
      "action": "Deactivate a cookie banner",
      "description": "Deactivate a cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a cookie banner",
      "description": "Delete a cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a cookie banner",
      "description": "Get a cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many cookie banners",
      "description": "Get many cookie banners",
      "resource": "cookieBanner"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a cookie banner version",
      "description": "Publish a new cookie banner version",
      "resource": "cookieBanner"
    },
    {
      "name": "Regenerate Policy",
      "value": "regeneratePolicy",
      "action": "Regenerate a cookie banner tracker policy",
      "description": "Re-arm tracker policy generation for a published cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Translate",
      "value": "translate",
      "action": "Translate a cookie banner",
      "description": "Upsert a cookie banner translation",
      "resource": "cookieBanner"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a cookie banner",
      "description": "Update an existing cookie banner",
      "resource": "cookieBanner"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a cookie category",
      "description": "Create a new cookie category",
      "resource": "cookieCategory"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a cookie category",
      "description": "Delete a cookie category",
      "resource": "cookieCategory"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a cookie category",
      "description": "Get a cookie category",
      "resource": "cookieCategory"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many cookie categories",
      "description": "Get many cookie categories",
      "resource": "cookieCategory"
    },
    {
      "name": "Reorder",
      "value": "reorder",
      "action": "Reorder a cookie category",
      "description": "Change the rank of a cookie category",
      "resource": "cookieCategory"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a cookie category",
      "description": "Update an existing cookie category",
      "resource": "cookieCategory"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a cookie consent record",
      "description": "Get a cookie consent record",
      "resource": "cookieConsentRecord"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many cookie consent records",
      "description": "Get many cookie consent records",
      "resource": "cookieConsentRecord"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tracker pattern",
      "description": "Create a new tracker pattern",
      "resource": "trackerPattern"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a tracker pattern",
      "description": "Delete a tracker pattern",
      "resource": "trackerPattern"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a tracker pattern",
      "description": "Get a tracker pattern",
      "resource": "trackerPattern"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tracker patterns",
      "description": "Get many tracker patterns",
      "resource": "trackerPattern"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a tracker pattern",
      "description": "Move a tracker pattern to a different category",
      "resource": "trackerPattern"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a tracker pattern",
      "description": "Update an existing tracker pattern",
      "resource": "trackerPattern"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a datum",
      "description": "Create a new datum",
      "resource": "datum"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a datum",
      "description": "Delete a datum",
      "resource": "datum"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a datum",
      "description": "Get a datum",
      "resource": "datum"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many data",
      "description": "Get many data",
      "resource": "datum"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the data list",
      "description": "Publish the data list as a document",
      "resource": "datum"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a datum",
      "description": "Update an existing datum",
      "resource": "datum"
    },
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive a document",
      "description": "Archive a document",
      "resource": "document"
    },
    {
      "name": "Cancel Signature",
      "value": "cancelSignature",
      "action": "Cancel a document signature request",
      "description": "Cancel a signature request",
      "resource": "document"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document",
      "description": "Create a new document",
      "resource": "document"
    },
    {
      "name": "Create Draft Version",
      "value": "createDraftVersion",
      "action": "Create a draft document version",
      "description": "Create a new draft version from the latest published version",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document",
      "description": "Delete a document",
      "resource": "document"
    },
    {
      "name": "Delete Draft Version",
      "value": "deleteDraftVersion",
      "action": "Delete a draft document version",
      "description": "Delete a draft document version",
      "resource": "document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document",
      "description": "Get a document",
      "resource": "document"
    },
    {
      "name": "Get Approval Decision",
      "value": "getApprovalDecision",
      "action": "Get an approval decision",
      "description": "Get an approval decision",
      "resource": "document"
    },
    {
      "name": "Get Approval Quorum",
      "value": "getApprovalQuorum",
      "action": "Get an approval quorum",
      "description": "Get an approval quorum",
      "resource": "document"
    },
    {
      "name": "Get Latest Published Version ID",
      "value": "getLatestPublishedVersionId",
      "action": "Get the latest published document version ID",
      "description": "Get the latest published document version ID",
      "resource": "document"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many documents",
      "description": "Get many documents",
      "resource": "document"
    },
    {
      "name": "Get Many Approval Decisions",
      "value": "getAllApprovalDecisions",
      "action": "Get many approval decisions",
      "description": "Get many approval decisions for an approval quorum",
      "resource": "document"
    },
    {
      "name": "Get Many Approval Quorums",
      "value": "getAllApprovalQuorums",
      "action": "Get many approval quorums",
      "description": "Get many approval quorums for a document version",
      "resource": "document"
    },
    {
      "name": "Get Many Signatures",
      "value": "getAllSignatures",
      "action": "Get many document version signatures",
      "description": "Get many signatures for a document version",
      "resource": "document"
    },
    {
      "name": "Get Many Versions",
      "value": "getAllVersions",
      "action": "Get many document versions",
      "description": "Get many versions of a document",
      "resource": "document"
    },
    {
      "name": "Get Signature",
      "value": "getSignature",
      "action": "Get a document version signature",
      "description": "Get a document version signature",
      "resource": "document"
    },
    {
      "name": "Get Version",
      "value": "getVersion",
      "action": "Get a document version",
      "description": "Get a document version",
      "resource": "document"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a document",
      "description": "Publish a draft document, request approval, or publish as minor",
      "resource": "document"
    },
    {
      "name": "Request Signature",
      "value": "requestSignature",
      "action": "Request a document version signature",
      "description": "Request a signature for a document version",
      "resource": "document"
    },
    {
      "name": "Unarchive",
      "value": "unarchive",
      "action": "Unarchive a document",
      "description": "Unarchive a document",
      "resource": "document"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a document",
      "description": "Update an existing document",
      "resource": "document"
    },
    {
      "name": "Update Version",
      "value": "updateVersion",
      "action": "Update a document version",
      "description": "Update a draft document version",
      "resource": "document"
    },
    {
      "name": "Void Approval",
      "value": "voidApproval",
      "action": "Void a document version approval",
      "description": "Void a pending approval request",
      "resource": "document"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a DPIA",
      "description": "Create a new DPIA",
      "resource": "dpia"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a DPIA",
      "description": "Delete a DPIA",
      "resource": "dpia"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a DPIA",
      "description": "Get a DPIA",
      "resource": "dpia"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many dpias",
      "description": "Get many DPIAs",
      "resource": "dpia"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the DPIA list",
      "description": "Publish the DPIA list as a document",
      "resource": "dpia"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a DPIA",
      "description": "Update an existing DPIA",
      "resource": "dpia"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an evidence",
      "description": "Delete an evidence",
      "resource": "evidence"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an evidence",
      "description": "Get an evidence",
      "resource": "evidence"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many evidences",
      "description": "Get many evidences for a measure",
      "resource": "evidence"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload evidence",
      "description": "Upload evidence for a measure",
      "resource": "evidence"
    },
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute graphql",
      "description": "Execute a GraphQL query or mutation",
      "resource": "execute"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a finding",
      "description": "Create a new finding",
      "resource": "finding"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a finding",
      "description": "Delete a finding",
      "resource": "finding"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a finding",
      "description": "Get a finding",
      "resource": "finding"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many findings",
      "description": "Get many findings",
      "resource": "finding"
    },
    {
      "name": "Link Audit",
      "value": "linkAudit",
      "action": "Link an audit to a finding",
      "description": "Link an audit to a finding",
      "resource": "finding"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the finding list",
      "description": "Publish the finding list as a document",
      "resource": "finding"
    },
    {
      "name": "Unlink Audit",
      "value": "unlinkAudit",
      "action": "Unlink an audit from a finding",
      "description": "Unlink an audit from a finding",
      "resource": "finding"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a finding",
      "description": "Update an existing finding",
      "resource": "finding"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a framework",
      "description": "Create a new framework",
      "resource": "framework"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a framework",
      "description": "Delete a framework",
      "resource": "framework"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a framework",
      "description": "Get a framework",
      "resource": "framework"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many frameworks",
      "description": "Get many frameworks",
      "resource": "framework"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a framework",
      "description": "Update an existing framework",
      "resource": "framework"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a measure",
      "description": "Create a new measure",
      "resource": "measure"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a measure",
      "description": "Delete a measure",
      "resource": "measure"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a measure",
      "description": "Get a measure",
      "resource": "measure"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many measures",
      "description": "Get many measures",
      "resource": "measure"
    },
    {
      "name": "Link Document",
      "value": "linkDocument",
      "action": "Link a document to a measure",
      "description": "Link a document to a measure",
      "resource": "measure"
    },
    {
      "name": "Link Third Party",
      "value": "linkThirdParty",
      "action": "Link a third party to a measure",
      "description": "Link a third party to a measure",
      "resource": "measure"
    },
    {
      "name": "Unlink Document",
      "value": "unlinkDocument",
      "action": "Unlink a document from a measure",
      "description": "Unlink a document from a measure",
      "resource": "measure"
    },
    {
      "name": "Unlink Third Party",
      "value": "unlinkThirdParty",
      "action": "Unlink a third party from a measure",
      "description": "Unlink a third party from a measure",
      "resource": "measure"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a measure",
      "description": "Update an existing measure",
      "resource": "measure"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an obligation",
      "description": "Create a new obligation",
      "resource": "obligation"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an obligation",
      "description": "Delete an obligation",
      "resource": "obligation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an obligation",
      "description": "Get an obligation",
      "resource": "obligation"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many obligations",
      "description": "Get many obligations",
      "resource": "obligation"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the obligation list",
      "description": "Publish the obligation list as a document",
      "resource": "obligation"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an obligation",
      "description": "Update an existing obligation",
      "resource": "obligation"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an organization",
      "description": "Create a new organization",
      "resource": "organization"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an organization",
      "description": "Delete an organization",
      "resource": "organization"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an organization",
      "description": "Get an organization",
      "resource": "organization"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many organizations",
      "description": "Get many organizations",
      "resource": "organization"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an organization",
      "description": "Update an existing organization",
      "resource": "organization"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get the organization context",
      "description": "Get the organization context",
      "resource": "organizationContext"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update the organization context",
      "description": "Update the organization context",
      "resource": "organizationContext"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a processing activity",
      "description": "Create a new processing activity",
      "resource": "processingActivity"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a processing activity",
      "description": "Delete a processing activity",
      "resource": "processingActivity"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a processing activity",
      "description": "Get a processing activity",
      "resource": "processingActivity"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many processing activities",
      "description": "Get many processing activities",
      "resource": "processingActivity"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the processing activity list",
      "description": "Publish the processing activity list as a document",
      "resource": "processingActivity"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a processing activity",
      "description": "Update an existing processing activity",
      "resource": "processingActivity"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a rights request",
      "description": "Create a new rights request",
      "resource": "rightsRequest"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a rights request",
      "description": "Delete a rights request",
      "resource": "rightsRequest"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a rights request",
      "description": "Get a rights request",
      "resource": "rightsRequest"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many rights requests",
      "description": "Get many rights requests",
      "resource": "rightsRequest"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a rights request",
      "description": "Update an existing rights request",
      "resource": "rightsRequest"
    },
    {
      "name": "Remove",
      "value": "remove",
      "action": "Remove a resource alias",
      "description": "Remove a resource alias from a resource",
      "resource": "resourceAlias"
    },
    {
      "name": "Set",
      "value": "set",
      "action": "Set a resource alias",
      "description": "Set a resource alias for a document, file, or audit",
      "resource": "resourceAlias"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a risk assessment",
      "description": "Create a risk assessment",
      "resource": "riskAssessment"
    },
    {
      "name": "Create Boundary",
      "value": "createBoundary",
      "action": "Create a boundary",
      "description": "Create a boundary in a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Create Node",
      "value": "createNode",
      "action": "Create a node",
      "description": "Create a node in a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Create Process",
      "value": "createProcess",
      "action": "Create a process",
      "description": "Create a process in a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Create Scenario",
      "value": "createScenario",
      "action": "Create a scenario",
      "description": "Create a scenario in a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Create Scope",
      "value": "createScope",
      "action": "Create a scope",
      "description": "Create a scope in a risk assessment",
      "resource": "riskAssessment"
    },
    {
      "name": "Create Threat",
      "value": "createThreat",
      "action": "Create a threat",
      "description": "Create a threat in a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a risk assessment",
      "description": "Delete a risk assessment",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete Boundary",
      "value": "deleteBoundary",
      "action": "Delete a boundary",
      "description": "Delete a boundary",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete Node",
      "value": "deleteNode",
      "action": "Delete a node",
      "description": "Delete a node",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete Process",
      "value": "deleteProcess",
      "action": "Delete a process",
      "description": "Delete a process",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete Scenario",
      "value": "deleteScenario",
      "action": "Delete a scenario",
      "description": "Delete a scenario",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete Scope",
      "value": "deleteScope",
      "action": "Delete a scope",
      "description": "Delete a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Delete Threat",
      "value": "deleteThreat",
      "action": "Delete a threat",
      "description": "Delete a threat",
      "resource": "riskAssessment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a risk assessment",
      "description": "Get a risk assessment",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Boundary",
      "value": "getBoundary",
      "action": "Get a boundary",
      "description": "Get a boundary",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many risk assessments",
      "description": "Get many risk assessments",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many Boundaries",
      "value": "getAllBoundaries",
      "action": "Get many boundaries",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many Nodes",
      "value": "getAllNodes",
      "action": "Get many nodes",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many Processes",
      "value": "getAllProcesses",
      "action": "Get many processes",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many Scenarios",
      "value": "getAllScenarios",
      "action": "Get many scenarios",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many Scopes",
      "value": "getAllScopes",
      "action": "Get many scopes",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Many Threats",
      "value": "getAllThreats",
      "action": "Get many threats",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Node",
      "value": "getNode",
      "action": "Get a node",
      "description": "Get a node",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Process",
      "value": "getProcess",
      "action": "Get a process",
      "description": "Get a process",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Scenario",
      "value": "getScenario",
      "action": "Get a scenario",
      "description": "Get a scenario",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Scope",
      "value": "getScope",
      "action": "Get a scope",
      "description": "Get a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Scope Mermaid Chart",
      "value": "getScopeMermaidChart",
      "action": "Get a scope mermaid chart",
      "description": "Get the Mermaid diagram for a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Get Threat",
      "value": "getThreat",
      "action": "Get a threat",
      "description": "Get a threat",
      "resource": "riskAssessment"
    },
    {
      "name": "Link Scenario Risk",
      "value": "linkScenarioRisk",
      "action": "Link a scenario to a risk",
      "description": "Link a scenario to a risk",
      "resource": "riskAssessment"
    },
    {
      "name": "Link Scenario Threat",
      "value": "linkScenarioThreat",
      "action": "Link a scenario to a threat",
      "description": "Link a scenario to a threat",
      "resource": "riskAssessment"
    },
    {
      "name": "Unlink Scenario Risk",
      "value": "unlinkScenarioRisk",
      "action": "Unlink a scenario from a risk",
      "description": "Unlink a scenario from a risk",
      "resource": "riskAssessment"
    },
    {
      "name": "Unlink Scenario Threat",
      "value": "unlinkScenarioThreat",
      "action": "Unlink a scenario from a threat",
      "description": "Unlink a scenario from a threat",
      "resource": "riskAssessment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a risk assessment",
      "description": "Update a risk assessment",
      "resource": "riskAssessment"
    },
    {
      "name": "Update Boundary",
      "value": "updateBoundary",
      "action": "Update a boundary",
      "description": "Update a boundary",
      "resource": "riskAssessment"
    },
    {
      "name": "Update Node",
      "value": "updateNode",
      "action": "Update a node",
      "description": "Update a node",
      "resource": "riskAssessment"
    },
    {
      "name": "Update Process",
      "value": "updateProcess",
      "action": "Update a process",
      "description": "Update a process",
      "resource": "riskAssessment"
    },
    {
      "name": "Update Scenario",
      "value": "updateScenario",
      "action": "Update a scenario",
      "description": "Update a scenario",
      "resource": "riskAssessment"
    },
    {
      "name": "Update Scope",
      "value": "updateScope",
      "action": "Update a scope",
      "description": "Update a scope",
      "resource": "riskAssessment"
    },
    {
      "name": "Update Threat",
      "value": "updateThreat",
      "action": "Update a threat",
      "description": "Update a threat",
      "resource": "riskAssessment"
    },
    {
      "name": "Archive",
      "value": "archiveUser",
      "action": "Archive a user",
      "description": "Archive a user in the organization",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "createUser",
      "action": "Create a user",
      "description": "Create a new user in the organization",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "getUser",
      "action": "Get a user",
      "description": "Get a user (profile) by ID",
      "resource": "user"
    },
    {
      "name": "Invite",
      "value": "inviteUser",
      "action": "Invite a user",
      "description": "Invite a user to the organization",
      "resource": "user"
    },
    {
      "name": "List",
      "value": "listUsers",
      "action": "List users",
      "description": "List all users in the organization",
      "resource": "user"
    },
    {
      "name": "Remove",
      "value": "removeUser",
      "action": "Remove a user",
      "description": "Remove a user from the organization",
      "resource": "user"
    },
    {
      "name": "Update",
      "value": "updateUser",
      "action": "Update a user",
      "description": "Update a user (profile)",
      "resource": "user"
    },
    {
      "name": "Update Membership",
      "value": "updateMembership",
      "action": "Update membership role",
      "description": "Update a user's membership role",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a risk",
      "description": "Create a new risk",
      "resource": "risk"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a risk",
      "description": "Delete a risk",
      "resource": "risk"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a risk",
      "description": "Get a risk",
      "resource": "risk"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many risks",
      "description": "Get many risks",
      "resource": "risk"
    },
    {
      "name": "Link Document",
      "value": "linkDocument",
      "action": "Link a document to a risk",
      "description": "Link a document to a risk",
      "resource": "risk"
    },
    {
      "name": "Link Measure",
      "value": "linkMeasure",
      "action": "Link a measure to a risk",
      "description": "Link a measure to a risk",
      "resource": "risk"
    },
    {
      "name": "Link Obligation",
      "value": "linkObligation",
      "action": "Link an obligation to a risk",
      "description": "Link an obligation to a risk",
      "resource": "risk"
    },
    {
      "name": "Publish List",
      "value": "publish",
      "action": "Publish the risk register",
      "description": "Publish the risk register as a document version",
      "resource": "risk"
    },
    {
      "name": "Unlink Document",
      "value": "unlinkDocument",
      "action": "Unlink a document from a risk",
      "description": "Unlink a document from a risk",
      "resource": "risk"
    },
    {
      "name": "Unlink Measure",
      "value": "unlinkMeasure",
      "action": "Unlink a measure from a risk",
      "description": "Unlink a measure from a risk",
      "resource": "risk"
    },
    {
      "name": "Unlink Obligation",
      "value": "unlinkObligation",
      "action": "Unlink an obligation from a risk",
      "description": "Unlink an obligation from a risk",
      "resource": "risk"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a risk",
      "description": "Update an existing risk",
      "resource": "risk"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a statement of applicability",
      "description": "Create a new statement of applicability",
      "resource": "statementOfApplicability"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a statement of applicability",
      "description": "Delete a statement of applicability",
      "resource": "statementOfApplicability"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a statement of applicability",
      "description": "Get a statement of applicability",
      "resource": "statementOfApplicability"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many statements of applicability",
      "description": "Get many statements of applicability",
      "resource": "statementOfApplicability"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a statement of applicability",
      "description": "Publish a statement of applicability as a document version",
      "resource": "statementOfApplicability"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a statement of applicability",
      "description": "Update an existing statement of applicability",
      "resource": "statementOfApplicability"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new task",
      "resource": "task"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task",
      "description": "Delete a task",
      "resource": "task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task",
      "description": "Get a task",
      "resource": "task"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tasks",
      "description": "Get many tasks",
      "resource": "task"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task",
      "description": "Update an existing task",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a TIA",
      "description": "Create a new TIA",
      "resource": "tia"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a TIA",
      "description": "Delete a TIA",
      "resource": "tia"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a TIA",
      "description": "Get a TIA",
      "resource": "tia"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many tias",
      "description": "Get many TIAs",
      "resource": "tia"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish the TIA list",
      "description": "Publish the TIA list as a document",
      "resource": "tia"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a TIA",
      "description": "Update an existing TIA",
      "resource": "tia"
    },
    {
      "name": "Create External URL",
      "value": "createExternalUrl",
      "action": "Create a compliance external URL",
      "description": "Create a new compliance external URL",
      "resource": "trustCenter"
    },
    {
      "name": "Create Reference",
      "value": "createReference",
      "action": "Create a trust center reference",
      "description": "Create a new trust center reference",
      "resource": "trustCenter"
    },
    {
      "name": "Delete External URL",
      "value": "deleteExternalUrl",
      "action": "Delete a compliance external URL",
      "description": "Delete a compliance external URL",
      "resource": "trustCenter"
    },
    {
      "name": "Delete File",
      "value": "deleteFile",
      "action": "Delete a trust center file",
      "description": "Delete a trust center file",
      "resource": "trustCenter"
    },
    {
      "name": "Delete Reference",
      "value": "deleteReference",
      "action": "Delete a trust center reference",
      "description": "Delete a trust center reference",
      "resource": "trustCenter"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get trust center settings",
      "description": "Get trust center settings",
      "resource": "trustCenter"
    },
    {
      "name": "Get Many Files",
      "value": "getAllFiles",
      "action": "Get many trust center files",
      "description": "Get many trust center files",
      "resource": "trustCenter"
    },
    {
      "name": "Get Many References",
      "value": "getAllReferences",
      "action": "Get many trust center references",
      "description": "Get many trust center references",
      "resource": "trustCenter"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update trust center settings",
      "description": "Update trust center settings",
      "resource": "trustCenter"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a third party",
      "description": "Create a new third party",
      "resource": "thirdParty"
    },
    {
      "name": "Create Contact",
      "value": "createContact",
      "action": "Create a third party contact",
      "description": "Create a new third party contact",
      "resource": "thirdParty"
    },
    {
      "name": "Create Risk Assessment",
      "value": "createRiskAssessment",
      "action": "Create a third party risk assessment",
      "description": "Create a new third party risk assessment",
      "resource": "thirdParty"
    },
    {
      "name": "Create Service",
      "value": "createService",
      "action": "Create a third party service",
      "description": "Create a new third party service",
      "resource": "thirdParty"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a third party",
      "description": "Delete a third party",
      "resource": "thirdParty"
    },
    {
      "name": "Delete Business Associate Agreement",
      "value": "deleteBusinessAssociateAgreement",
      "action": "Delete a third party business associate agreement",
      "description": "Delete a third party business associate agreement",
      "resource": "thirdParty"
    },
    {
      "name": "Delete Compliance Report",
      "value": "deleteComplianceReport",
      "action": "Delete a third party compliance report",
      "description": "Delete a third party compliance report",
      "resource": "thirdParty"
    },
    {
      "name": "Delete Contact",
      "value": "deleteContact",
      "action": "Delete a third party contact",
      "description": "Delete a third party contact",
      "resource": "thirdParty"
    },
    {
      "name": "Delete Data Privacy Agreement",
      "value": "deleteDataPrivacyAgreement",
      "action": "Delete a third party data privacy agreement",
      "description": "Delete a third party data privacy agreement",
      "resource": "thirdParty"
    },
    {
      "name": "Delete Service",
      "value": "deleteService",
      "action": "Delete a third party service",
      "description": "Delete a third party service",
      "resource": "thirdParty"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a third party",
      "description": "Get a third party",
      "resource": "thirdParty"
    },
    {
      "name": "Get Business Associate Agreement",
      "value": "getBusinessAssociateAgreement",
      "action": "Get a third party business associate agreement",
      "description": "Get a third party business associate agreement",
      "resource": "thirdParty"
    },
    {
      "name": "Get Contact",
      "value": "getContact",
      "action": "Get a third party contact",
      "description": "Get a third party contact",
      "resource": "thirdParty"
    },
    {
      "name": "Get Data Privacy Agreement",
      "value": "getDataPrivacyAgreement",
      "action": "Get a third party data privacy agreement",
      "description": "Get a third party data privacy agreement",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many third parties",
      "description": "Get many third parties",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many Child Third Parties",
      "value": "listChildThirdParties",
      "action": "Get many child third parties",
      "description": "Get child third parties linked to a parent",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many Compliance Reports",
      "value": "getAllComplianceReports",
      "action": "Get many third party compliance reports",
      "description": "Get many third party compliance reports",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many Contacts",
      "value": "getAllContacts",
      "action": "Get many third party contacts",
      "description": "Get many third party contacts",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many Risk Assessments",
      "value": "getAllRiskAssessments",
      "action": "Get many third party risk assessments",
      "description": "Get many third party risk assessments",
      "resource": "thirdParty"
    },
    {
      "name": "Get Many Services",
      "value": "getAllServices",
      "action": "Get many third party services",
      "description": "Get many third party services",
      "resource": "thirdParty"
    },
    {
      "name": "Get Risk Assessment",
      "value": "getRiskAssessment",
      "action": "Get a third party risk assessment",
      "description": "Get a third party risk assessment",
      "resource": "thirdParty"
    },
    {
      "name": "Get Service",
      "value": "getService",
      "action": "Get a third party service",
      "description": "Get a third party service",
      "resource": "thirdParty"
    },
    {
      "name": "Link Third Party",
      "value": "linkThirdParty",
      "action": "Link a child third party",
      "description": "Link a child third party to a parent third party",
      "resource": "thirdParty"
    },
    {
      "name": "Publish List",
      "value": "publish",
      "action": "Publish the third party register",
      "description": "Publish the third party register as a document version",
      "resource": "thirdParty"
    },
    {
      "name": "Unlink Third Party",
      "value": "unlinkThirdParty",
      "action": "Unlink a child third party",
      "description": "Unlink a child third party from a parent third party",
      "resource": "thirdParty"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a third party",
      "description": "Update an existing third party",
      "resource": "thirdParty"
    },
    {
      "name": "Update Business Associate Agreement",
      "value": "updateBusinessAssociateAgreement",
      "action": "Update a third party business associate agreement",
      "description": "Update a third party business associate agreement validity",
      "resource": "thirdParty"
    },
    {
      "name": "Update Contact",
      "value": "updateContact",
      "action": "Update a third party contact",
      "description": "Update an existing third party contact",
      "resource": "thirdParty"
    },
    {
      "name": "Update Data Privacy Agreement",
      "value": "updateDataPrivacyAgreement",
      "action": "Update a third party data privacy agreement",
      "description": "Update a third party data privacy agreement validity",
      "resource": "thirdParty"
    },
    {
      "name": "Update Service",
      "value": "updateService",
      "action": "Update a third party service",
      "description": "Update an existing third party service",
      "resource": "thirdParty"
    },
    {
      "name": "Vet",
      "value": "vet",
      "action": "Vet a third party",
      "description": "Start AI-powered vetting of a third party from its website",
      "resource": "thirdParty"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a webhook subscription",
      "description": "Create a new webhook subscription",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a webhook subscription",
      "description": "Delete a webhook subscription",
      "resource": "webhook"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a webhook subscription",
      "description": "Get a webhook subscription",
      "resource": "webhook"
    },
    {
      "name": "Get Events",
      "value": "getEvents",
      "action": "Get webhook delivery events",
      "description": "Get delivery events for a webhook subscription",
      "resource": "webhook"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many webhook subscriptions",
      "description": "Get many webhook subscriptions",
      "resource": "webhook"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a webhook subscription",
      "description": "Update a webhook subscription",
      "resource": "webhook"
    }
  ]

npm_readme:
  # @probo/n8n-nodes-probo

  n8n community node package for the [Probo](https://www.probo.com) compliance platform. Automate compliance workflows — manage controls, documents, risks, vendors, cookie banners, and more — over the Probo GraphQL API.

  This package provides two nodes:

  | Node | Type | Description |
  |------|------|-------------|
  | **Probo** | Action | Read and write Probo resources (tasks, documents, controls, organizations, and 30+ other resources) |
  | **Probo Trigger** | Trigger | Start a workflow when Probo webhook events occur (document published, user created, obligation updated, and more) |

  ## Requirements

  - A self-hosted n8n instance with [community nodes enabled](https://docs.n8n.io/hosting/configuration/configuration-examples/community-nodes/)
  - A Probo account with an API key
  - n8n 1.0+ (uses the community node package format)

  ## Installation

  Install the package from npm on your self-hosted n8n instance. Only users with the **Owner** or **Admin** role can install community nodes.

  ### GUI installation (recommended)

  1. In n8n, go to **Settings → Community Nodes**.
  2. Click **Install**.
  3. Enter the npm package name:

     ```
     @probo/n8n-nodes-probo
     ```

     To pin a specific version, append it (for example `@probo/n8n-nodes-probo@0.199.0`).

  4. Accept the community node risk notice and click **Install**.
  5. Restart n8n if the new nodes do not appear in the node palette immediately.

  See the [n8n GUI installation guide](https://docs.n8n.io/integrations/community-nodes/installation-and-management/gui-installation/) for details.

  ### Manual installation

  If you run n8n in Docker or queue mode, you can install the package manually:

  ```bash
  mkdir -p ~/.n8n/nodes
  cd ~/.n8n/nodes
  npm install @probo/n8n-nodes-probo
  ```

  Restart n8n after installation. See the [manual installation guide](https://docs.n8n.io/integrations/community-nodes/installation/manual-install/) for upgrade and downgrade steps.

  ## Credentials

  All Probo nodes use the **Probo API** credential type. The node sends your API key as a `Bearer` token on every request.

  ### Configure credentials in n8n

  1. Add a **Probo** or **Probo Trigger** node to a workflow.
  2. Open the **Credential** dropdown and select **Create New Credential**.
  3. Fill in the fields:

     | Field | Default | Description |
     |-------|---------|-------------|
     | **Probo Server** | `https://us.probo.com` | Base URL of your Probo instance. Use `https://eu.probo.com` for the EU region, or your own URL when self-hosting. |
     | **API Key** | — | A Probo API key with access to the organizations you automate against. |

  4. Click **Test** to verify connectivity. n8n calls the Probo GraphQL API and checks that the key is valid.
  5. Click **Save**. The credential is shared across all Probo nodes in your instance.

  ### Get an API key

  1. Sign in to the Probo console.
  2. Go to **Settings → API Keys**.
  3. Click **Create API Key**.
  4. Copy the key immediately — it is shown only once.

  For self-hosted Probo, set **Probo Server** to your instance URL (for example `https://probo.example.com`). The node talks to `/api/console/v1/graphql` on that host.

  More detail: [Probo n8n authentication docs](https://www.probo.com/docs/api/n8n/authentication).

  ## Workflow example: notify Slack when a document is published

  This workflow listens for Probo document events and posts a message to Slack.

  ```
  Probo Trigger  →  Slack
  (document      (post message
   published)     with document name)
  ```

  ### Steps

  1. **Create credentials** as described above and save them as `Probo API`.

  2. **Add a Probo Trigger node**
     - **Credential:** Probo API
     - **Organization ID:** your Probo organization GID (for example `gid://probo/Organization/…`)
     - **Events:** `Document Version Published`
     - **Verify Signature:** enabled (recommended)

  3. **Add a Slack node** (or any notification node) connected to the trigger output.
     - Map fields from the webhook payload, for example:
       - **Text:** `A document was published: {{ $json.data.documentVersion.document.name }}`

  4. **Activate the workflow.** n8n registers a webhook subscription in Probo. When a document version is published, Probo delivers the event and the Slack message is sent.

  ### Alternative: list open tasks on a schedule

  Use the **Probo** action node without a trigger:

  1. Add a **Schedule Trigger** node (for example, every weekday at 9:00).
  2. Add a **Probo** node:
     - **Resource:** Task
     - **Operation:** Get Many
     - **Organization ID:** your organization GID
     - **Return All:** enabled (or set a **Limit**)
  3. Add a downstream node (Slack, email, or spreadsheet) to process `$json` task records.

  This pattern works well for daily compliance standups or overdue-task digests.

  ## Resources

  The **Probo** node exposes operations across the platform, including:

  Access Review, Asset, Audit, Audit Log, Control, Cookie Banner, Cookie Category, Cookie Consent Record, Data, Document, DPIA, Evidence, Finding, Framework, Measure, Obligation, Organization, Processing Activity, Risk, Task, Third Party, Trust Center, User, Vendor, and more.

  Use the **Execute** resource to run custom GraphQL queries or mutations when a dedicated operation is not available.

  ## Links

  - [Probo documentation](https://www.probo.com/docs)
  - [Probo n8n authentication](https://www.probo.com/docs/api/n8n/authentication)
  - [Package on npm](https://www.npmjs.com/package/@probo/n8n-nodes-probo)
  - [Source code](https://github.com/getprobo/probo/tree/main/packages/n8n-node)
  - [Report an issue](https://github.com/getprobo/probo/issues)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"The Probo node lets n8n workflows read and write data in the Probo compliance platform over its GraphQL API. It is used to automate compliance-related operations across resources like tasks, documents, controls, risks, vendors, and more.","capabilities":["Read and write Probo resources","Work with many resource types including tasks, documents, controls, organizations, audits, risks, vendors, and others","Run custom GraphQL queries and mutations via the Execute resource","Trigger workflows from Probo webhook events such as document published, user created, and obligation updated","Support webhook signature verification for trigger events"],"authentication":"Probo API key using the Probo API credential type; the key is sent as a Bearer token. Requires configuring the Probo Server base URL and API Key.","commonUseCases":["Send notifications when a Probo document is published","Schedule compliance digests such as open or overdue tasks","Automate syncing or reporting of compliance resources","Listen for Probo webhook events to start downstream workflows"],"limitations":["Requires a self-hosted n8n instance with community nodes enabled","Requires n8n 1.0+","Only users with Owner or Admin role can install the community node","Some operations may require using the Execute resource for custom GraphQL queries or mutations"],"relatedNodes":["Slack","Schedule Trigger","Probo Trigger"]}


node_type: n8n-nodes-spreadapi.spreadApi
package_name: n8n-nodes-spreadapi
display_name: SpreadAPI
description: Run spreadsheet calculations with SpreadAPI
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: stephan_methner
author_github_url: https://github.com/airrange-io/
npm_package_name: n8n-nodes-spreadapi
npm_version: 0.1.1
community_fetched_at: 2026-07-14T14:40:34.638Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "calculate",
      "options": [
        {
          "name": "Calculate",
          "value": "calculate",
          "action": "Run a calculation",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "method": "POST"
            }
          },
          "description": "Send input values to a service and get the calculated outputs"
        },
        {
          "name": "Get Service Details",
          "value": "getDetails",
          "action": "Get service details",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "method": "GET"
            }
          },
          "description": "Get a service's input parameters, outputs and usage documentation"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Calculate",
      "value": "calculate",
      "action": "Run a calculation",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "method": "POST"
        }
      },
      "description": "Send input values to a service and get the calculated outputs"
    },
    {
      "name": "Get Service Details",
      "value": "getDetails",
      "action": "Get service details",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "method": "GET"
        }
      },
      "description": "Get a service's input parameters, outputs and usage documentation"
    }
  ]

npm_readme:
  # n8n-nodes-spreadapi

  This is an n8n community node for [SpreadAPI](https://spreadapi.io) — it lets you
  run spreadsheet calculations as part of your n8n workflows.

  SpreadAPI turns Excel models into web APIs: pick cells as inputs and outputs,
  publish, and every calculation your spreadsheet can do becomes callable — pricing
  models, financial calculators, engineering formulas, quotes.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/)
  workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  in the n8n community nodes documentation:

  **Settings → Community Nodes → Install** and enter `n8n-nodes-spreadapi`.

  ## Operations

  ### Calculate
  Sends input values to a published SpreadAPI service and returns the calculated
  outputs. Runs once per incoming item — to calculate many scenarios, feed the
  node many items.

  - **Inputs** — a typed form generated live from the service definition:
    fields with allowed values become dropdowns, booleans become toggles,
    numbers get number inputs, and required fields are enforced. Switch to
    **JSON** mode to map a whole object from a previous node instead.
  - **Simplify Output** (default on) — outputs arrive as a flat object,
    e.g. `{ "monthly_payment": 1265.79, "total_interest": 155684.4 }`.
    Turn it off for the raw API response including metadata.
  - **Bypass Cache** — force a fresh calculation.

  ### Get Service Details
  Returns the service's full self-description: input parameters (types, ranges,
  allowed values), outputs, and usage documentation. Useful for exploring a
  service or building dynamic workflows.

  ## Credentials

  One paste is all it takes: copy the **service URL** from your service's
  Integration panel (n8n section) and paste it into the credential's
  **Service URL** field. For token-protected services the URL already includes
  the token; for public services the plain URL works. n8n tests the connection
  when you save the credential.

  In the node, pick your service **From List** (it shows the credential's service) — the input form then loads automatically. For public services you
  can skip the credential and choose the service **By URL** or **By ID**.

  ## Things to know

  - **Percentages are decimals.** A rate of 5% is `0.05`, not `5`. Strings like
    `"5%"` are converted automatically.
  - Numbers and booleans given as text are converted server-side; `yes/no`,
    `true/false` and `1/0` all work for boolean inputs.
  - Validation errors name the exact parameter, what's wrong, and the allowed
    values — check the error output when a calculation fails.
  - The **Service ID** is shown in the service's Integration panel and in its URL.

  ## Resources

  - [SpreadAPI documentation](https://spreadapi.io/docs)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"SpreadAPI is an n8n community node that runs spreadsheet-based calculations inside workflows by calling published SpreadAPI services. It turns Excel models into callable web APIs for scenarios like pricing, financial, engineering, and quote calculations.","capabilities":["Calculate outputs from a published SpreadAPI service using provided input values","Automatically generate typed input forms from the service definition","Support JSON mode to map an entire input object from a previous node","Return simplified flat output objects or full raw API responses with metadata","Bypass cache to force a fresh calculation","Retrieve full service details including inputs, outputs, ranges, allowed values, and documentation"],"authentication":"Service URL credential required; paste the service URL into the credential. For token-protected services, the URL includes the token. Public services can be used by URL or ID without credentials.","commonUseCases":["Running financial or pricing calculations in an automation workflow","Fetching service metadata to dynamically build or explore workflows","Executing spreadsheet model calculations for quotes, engineering formulas, or other scenario-based computations"],"limitations":["Calculations run once per incoming item, so batch scenarios require multiple items","Percentages must be provided as decimals (for example, 0.05 instead of 5%)","The node depends on a previously published SpreadAPI service"],"relatedNodes":["HTTP Request","Spreadsheet/File handling nodes","Set","Code"]}


node_type: n8n-nodes-speakai.speakAi
package_name: n8n-nodes-speakai
display_name: Speak AI
description: Upload media and text to Speak AI, run AI Chat, and search media
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: speakai
author_github_url: https://github.com/speakai/
npm_package_name: n8n-nodes-speakai
npm_version: 0.1.1
community_fetched_at: 2026-07-14T14:40:34.639Z
ai_summary_generated_at: 2026-07-06 09:55:11
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "uploadFile",
      "options": [
        {
          "name": "Find Media by ID",
          "value": "findMedia",
          "action": "Find media by ID",
          "description": "Look up a single media item and its insights"
        },
        {
          "name": "Run AI Chat",
          "value": "runMagicPrompt",
          "action": "Run ai chat",
          "description": "Ask a question against a folder or set of media"
        },
        {
          "name": "Upload File to Transcribe & Analyze",
          "value": "uploadFile",
          "action": "Upload a file to transcribe and analyze",
          "description": "Send an audio or video URL to Speak AI for transcription and analysis"
        },
        {
          "name": "Upload Text Note to Analyze",
          "value": "uploadText",
          "action": "Upload a text note to analyze",
          "description": "Send raw text to Speak AI for analysis"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Find Media by ID",
      "value": "findMedia",
      "action": "Find media by ID",
      "description": "Look up a single media item and its insights"
    },
    {
      "name": "Run AI Chat",
      "value": "runMagicPrompt",
      "action": "Run ai chat",
      "description": "Ask a question against a folder or set of media"
    },
    {
      "name": "Upload File to Transcribe & Analyze",
      "value": "uploadFile",
      "action": "Upload a file to transcribe and analyze",
      "description": "Send an audio or video URL to Speak AI for transcription and analysis"
    },
    {
      "name": "Upload Text Note to Analyze",
      "value": "uploadText",
      "action": "Upload a text note to analyze",
      "description": "Send raw text to Speak AI for analysis"
    }
  ]

npm_readme:
  # n8n-nodes-speakai

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-speakai)](https://www.npmjs.com/package/n8n-nodes-speakai)
  [![npm downloads](https://img.shields.io/npm/dw/n8n-nodes-speakai)](https://www.npmjs.com/package/n8n-nodes-speakai)

  An [n8n](https://n8n.io) community node for [Speak AI](https://speakai.co). Upload media and text for transcription and analysis, run AI Chat, look up media, and trigger workflows automatically when Speak AI produces new insights.

  [n8n](https://n8n.io) is a fair-code licensed workflow automation platform.

  ## Installation

  Follow the n8n [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) and use the package name `n8n-nodes-speakai`, or install it directly:

  ```bash
  npm install n8n-nodes-speakai
  ```

  ## Credentials

  Both nodes use the **Speak AI API** credential:

  | Field | Description |
  | --- | --- |
  | Server URL | Base URL of the Speak AI API. Defaults to `https://api.speakai.co`. |
  | API Key | Your Speak AI API key. Create one in your Speak AI account under **Settings → API Keys**. |

  ## Nodes

  ### Speak AI

  An action node with four operations:

  | Operation | What it does |
  | --- | --- |
  | Upload File to Transcribe & Analyze | Send an audio or video URL for transcription and analysis. |
  | Upload Text Note to Analyze | Send raw text for analysis. |
  | Run AI Chat | Ask a question against a folder or a set of media. |
  | Find Media by ID | Look up a single media item and its insights. |

  ### Speak AI Trigger

  A webhook trigger node. Pick one event; the node registers a webhook with Speak AI when the workflow is activated and removes it when the workflow is deactivated.

  | Event | Fires when |
  | --- | --- |
  | New Automated Transcription | A media transcript is ready |
  | New Captions (SRT/VTT) | Caption files are ready |
  | New Sentiment Analysis | Sentiment analysis is ready |
  | New AI Chat Response | An AI Chat response is ready |
  | New Recording Captured | A recorder submission is received |

  Each emitted item carries a stable `id`, so repeated deliveries and re-analysis are not deduplicated away.

  ## Resources

  - [Speak AI](https://speakai.co)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Support

  Questions or issues? Contact [accounts@speakai.co](mailto:accounts@speakai.co).

  ## Credits

  Created by [Vatsal Shah](https://github.com/vatsal2210).

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A community node for integrating n8n with Speak AI to upload media or text for transcription and analysis, run AI Chat, look up media, and react to new insights via triggers.","capabilities":["Upload audio or video files by URL for transcription and analysis","Upload raw text notes for analysis","Run AI Chat against a folder or set of media","Find media by ID and retrieve its insights","Trigger workflows on new automated transcription, captions, sentiment analysis, AI Chat responses, and recording captures"],"authentication":"Speak AI API credential using an API key and optional Server URL (defaults to https://api.speakai.co)","commonUseCases":["Automating transcription and analysis of uploaded media","Sending notes or documents to Speak AI for text analysis","Querying media collections with AI Chat","Looking up a media item and its generated insights","Triggering downstream workflows when Speak AI produces new transcription or analysis results"],"limitations":["Upload File to Transcribe & Analyze uses an audio or video URL rather than direct file upload","Trigger emits one selected event at a time"],"relatedNodes":["Speak AI Trigger"]}


node_type: n8n-nodes-speakai.speakAiTrigger
package_name: n8n-nodes-speakai
display_name: Speak AI Trigger
description: Starts a workflow when Speak AI produces new insights, captions, AI Chat responses, or recordings
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: speakai
author_github_url: https://github.com/speakai/
npm_package_name: n8n-nodes-speakai
npm_version: 0.1.1
community_fetched_at: 2026-07-14T14:40:34.640Z
ai_summary_generated_at: 2026-07-06 09:55:11
npm_readme:
  # n8n-nodes-speakai

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-speakai)](https://www.npmjs.com/package/n8n-nodes-speakai)
  [![npm downloads](https://img.shields.io/npm/dw/n8n-nodes-speakai)](https://www.npmjs.com/package/n8n-nodes-speakai)

  An [n8n](https://n8n.io) community node for [Speak AI](https://speakai.co). Upload media and text for transcription and analysis, run AI Chat, look up media, and trigger workflows automatically when Speak AI produces new insights.

  [n8n](https://n8n.io) is a fair-code licensed workflow automation platform.

  ## Installation

  Follow the n8n [community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) and use the package name `n8n-nodes-speakai`, or install it directly:

  ```bash
  npm install n8n-nodes-speakai
  ```

  ## Credentials

  Both nodes use the **Speak AI API** credential:

  | Field | Description |
  | --- | --- |
  | Server URL | Base URL of the Speak AI API. Defaults to `https://api.speakai.co`. |
  | API Key | Your Speak AI API key. Create one in your Speak AI account under **Settings → API Keys**. |

  ## Nodes

  ### Speak AI

  An action node with four operations:

  | Operation | What it does |
  | --- | --- |
  | Upload File to Transcribe & Analyze | Send an audio or video URL for transcription and analysis. |
  | Upload Text Note to Analyze | Send raw text for analysis. |
  | Run AI Chat | Ask a question against a folder or a set of media. |
  | Find Media by ID | Look up a single media item and its insights. |

  ### Speak AI Trigger

  A webhook trigger node. Pick one event; the node registers a webhook with Speak AI when the workflow is activated and removes it when the workflow is deactivated.

  | Event | Fires when |
  | --- | --- |
  | New Automated Transcription | A media transcript is ready |
  | New Captions (SRT/VTT) | Caption files are ready |
  | New Sentiment Analysis | Sentiment analysis is ready |
  | New AI Chat Response | An AI Chat response is ready |
  | New Recording Captured | A recorder submission is received |

  Each emitted item carries a stable `id`, so repeated deliveries and re-analysis are not deduplicated away.

  ## Resources

  - [Speak AI](https://speakai.co)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Support

  Questions or issues? Contact [accounts@speakai.co](mailto:accounts@speakai.co).

  ## Credits

  Created by [Vatsal Shah](https://github.com/vatsal2210).

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A webhook trigger node for Speak AI that starts an n8n workflow when Speak AI generates new outputs such as transcriptions, captions, sentiment analysis, AI chat responses, or recordings. It registers the webhook on activation and removes it on deactivation.","capabilities":["Triggers on new automated transcription events","Triggers on new captions availability (SRT/VTT)","Triggers on new sentiment analysis results","Triggers on new AI Chat responses","Triggers on new recording capture events","Registers and removes Speak AI webhooks automatically with workflow activation/deactivation","Emits items with a stable id for each event"],"authentication":"Speak AI API credential required (Server URL and API Key)","commonUseCases":["Start a workflow when a transcription is completed","Process newly generated captions or sentiment analysis results","React to incoming AI Chat responses or new recording submissions"],"limitations":["One event must be selected per trigger node","Repeated deliveries and re-analysis are not deduplicated away"],"relatedNodes":["Speak AI"]}


