# nodes

node_type: n8n-nodes-officernd.officerndTrigger
package_name: n8n-nodes-officernd
display_name: OfficeRnD Trigger
description: Starts the workflow when OfficeRnD events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: skrapion
author_github_url: https://github.com/Skrapion/
npm_package_name: n8n-nodes-officernd
npm_version: 1.1.4
community_fetched_at: 2026-07-14T14:40:33.829Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-officernd

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

  _OfficeRnD_ is a cloud platform for managing coworking spaces, offices, and memberships. This node allows you to fetch members, memberships, plans, fees, and passes, as well as update and check in members.

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

  [Installation](#installation)
  [Operations](#operations)
  [Triggers](#triggers)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

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

  ## Operations

  The node supports the following operations:

  * Checkins
    * Check in a member
  * Day Passes
    * Get All Sets of Daypasses
    * Get a Set of Daypasses
  * Fees
    * Get Payment
    * Get All Payments
  * Members
    * Get Member
    * Get All Members
    * Update Member
  * Memberships
    * Get Membership
    * Get All Memberships
  * Payments
    * Get Payment
    * Get All Payments
  * Plans
    * Get Plan
    * Get All Plans

  ## Triggers
  * Company
    * Created
    * Updated
    * Removed
  * Company Payment Details
    * Created
  * Removed
  * Member
    * Created
    * Updated
  * Removed
  * Member Payment Details
    * Created
    * Removed
  * Invoice
    * Created
    * Updated
    * Removed
  * Invoice Charge
    * Created
    * Updated
    * Removed
  * Invoice Allocation
    * Created
    * Removed
  * Fee
    * Created
    * Updated
    * Removed
  * Membership
    * Created
    * Updated
    * Removed
  * Booking
    * Created
    * Updated
    * Removed
  * Contract
    * Created
    * Updated
    * Removed
  * Ticket
    * Created
    * Updated
    * Removed
  * Integration
    * Removed
  * Pass
    * Created
    * Updated
  * Occupancy Slot
    * Created
    * Removed

  ## Credentials

  To use this node, you must authenticate with OfficeRnD via an API token:

  Sign in to your OfficeRnD account.

  Navigate to Settings->Data & Accessibility->Developer Tools->Applications and add an application.

  Make sure you enable all the permissions listed in the Scopes field of your credentials. The scopes default to all the permissions you need to use all the features of this node. You can remove some of the scopes if you don't need to use all the features of this node, or add more scopes if you're using the HTTP Request operation to access operations that aren't included in this node.

  Once created, you can click the cog icon next to the application and choose 'View' to get your Client ID and Client Secret for your n8n credentials.

  You'll also need to set your Organization Slug. You can find this in the location bar when logged in to OfficeRnD:

  https://app.officernd.com/admin/<YOUR ORG SLUG>

  ## Compatibility

  Tested against n8n 2.4.8 and the OfficeRnD v2 API.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [OfficeRnD API Documentation](https://developer.officernd.com/reference)

ai_documentation_summary:
  {"purpose":"This node integrates with OfficeRnD, a coworking space management platform, to automate workflows based on real-time events like member check-ins, membership changes, and billing updates.","capabilities":["Check in members","Retrieve and manage day passes","Fetch and update payment records","Manage member profiles and memberships","Retrieve pricing plans","Monitor company and member lifecycle events","Track invoices, fees, bookings, contracts, and tickets"],"authentication":"OAuth2 (Client ID and Client Secret required)","commonUseCases":["Automate notifications when a new member joins or their membership is updated","Trigger workflows upon member check-in or pass creation","Sync billing data and invoice allocations between OfficeRnD and other systems","Monitor occupancy slots and booking changes"],"limitations":["Requires manual setup of API credentials and organization slug","Specific scopes must be enabled in the OfficeRnD application settings for full functionality","Compatibility tested only against n8n 2.4.8 and OfficeRnD v2 API"],"relatedNodes":[]}


node_type: n8n-nodes-ship24.ship24
package_name: n8n-nodes-ship24
display_name: Ship24
description: Automate shipment tracking using the Ship24 API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: ship24
author_github_url: https://github.com/ship24-official/
npm_package_name: n8n-nodes-ship24
npm_version: 1.1.3
community_fetched_at: 2026-07-14T14:40:33.831Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tracker",
      "options": [
        {
          "name": "Tracker",
          "value": "tracker"
        },
        {
          "name": "Utility",
          "value": "utility"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tracker"
        },
        {
          "name": "Create and Get Results",
          "value": "createAndGetResults",
          "action": "Create and get results"
        },
        {
          "name": "Get Results By Tracker ID",
          "value": "getResultsByTrackerId",
          "action": "Get results by tracker ID"
        },
        {
          "name": "Get Results By Tracking Number",
          "value": "getResultsByTrackingNumber",
          "action": "Get results by tracking number"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a tracker"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tracker"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tracker",
      "resource": "tracker"
    },
    {
      "name": "Create and Get Results",
      "value": "createAndGetResults",
      "action": "Create and get results",
      "resource": "tracker"
    },
    {
      "name": "Get Results By Tracker ID",
      "value": "getResultsByTrackerId",
      "action": "Get results by tracker ID",
      "resource": "tracker"
    },
    {
      "name": "Get Results By Tracking Number",
      "value": "getResultsByTrackingNumber",
      "action": "Get results by tracking number",
      "resource": "tracker"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a tracker",
      "resource": "tracker"
    }
  ]

npm_readme:
  # n8n-nodes-ship24

  Automate global shipment tracking inside n8n using the Ship24 API.

  This package includes two nodes:

  -   **Ship24** — action node for creating, updating, and querying trackers via the Ship24 API
  -   **Ship24 Trigger** — trigger node that starts a workflow when Ship24 sends a tracking event webhook

  ------------------------------------------------------------------------

  ## About Ship24

  Ship24 is a global shipment tracking API supporting 1500+ couriers and
  marketplaces worldwide.

  This package allows n8n users to:

  -   Create shipment trackers
  -   Retrieve tracking results
  -   Update tracker subscription status
  -   Process bulk shipments
  -   Receive real-time tracking events via webhooks
  -   Automate delivery workflows at scale

  ------------------------------------------------------------------------

  ## Features

  ### Ship24 (action node)

  -   Single tracker creation
  -   Bulk tracker creation (automatic chunking up to 100 per request)
  -   Create and immediately fetch tracking results
  -   Retrieve results by tracking number
  -   Retrieve results by tracker ID
  -   Update tracker subscription status
  -   Full n8n multi-item support
  -   Structured per-item error handling
  -   `continueOnFail` support
  -   Utility mode for advanced API access

  ### Ship24 Trigger (trigger node)

  -   Receives real-time tracking events pushed by Ship24
  -   Starts a workflow automatically on each incoming webhook
  -   Configurable webhook path — required field, ensuring each workflow uses a distinct endpoint
  -   Passes the raw Ship24 payload through for flexible mapping
  -   Supports optional webhook secret validation via the `Authorization` header

  ------------------------------------------------------------------------

  ## Installation

  ### Community Node Installation

  1.  Open n8n.
  2.  Go to **Settings → Community Nodes**.
  3.  Click **Install**.
  4.  Enter:

  ```{=html}
  <!-- -->
  ```
      n8n-nodes-ship24

  5.  Restart n8n if required.

  ------------------------------------------------------------------------

  ## Credentials Setup

  This node requires a Ship24 API key.

  1.  In n8n, create new credentials.
  2.  Select **Ship24 API**.
  3.  Enter your API key.
  4.  Save.

  ![Credentials Setup](docs/images/credentials-setup.png)

  ------------------------------------------------------------------------

  ## Node Overview

  ![Node Overview](docs/images/node-overview.png)

  The **Ship24** action node provides two resources:

  -   **Tracker**
  -   **Utility**

  ------------------------------------------------------------------------

  # Tracker Resource

  ## Create

  Create shipment trackers.

  Supports:

  -   Single per item
  -   Bulk mode (up to 100 tracking numbers per API request)

  ![Create operation](docs/images/create-operation.png)

  ### Bulk Mode Behaviour

  Bulk mode still follows standard n8n multi-item logic.

  Each incoming item must contain one tracking number per item.
  The Ship24 node automatically batches those items into API requests of
  up to 100 tracking numbers per call.

  Expected Input Format

  Your previous node (Set, Code, HTTP Request, Google Sheets, etc.) should
  output items like:

  -   Item 1 → { "trackingNumber": "00340435063770617839" }
  -   Item 2 → { "trackingNumber": "00340434788009688510" }
  -   Item 3 → { "trackingNumber": "00340434788009688268" }

  If your upstream system provides an array of tracking numbers, use an
  Item Lists, Split Out Items, or Code node to convert the array into
  multiple items before passing them to the Ship24 node.

  Automatic Chunking

  If more than 100 items are provided, the node automatically splits them into multiple API calls.

  | Input items | API calls |
  |------------|-----------|
  | 80         | 1         |
  | 150        | 2         |
  | 250        | 3         |

  Each input item returns exactly one output item.

  ![Bulk Mode](docs/images/bulk-mode.png)

  ------------------------------------------------------------------------

  ## Create and Get Results

  Creates a tracker and immediately retrieves tracking results.

  Useful when:

  -   You need tracking data immediately
  -   You want simplified output for automation workflows

  ![Create and Get Results](docs/images/create-tracker-get-results.png)

  ------------------------------------------------------------------------

  ## Update

  Update tracker subscription status (`isSubscribed` only).

  -   Requires a valid `trackerId` (UUID)
  -   Performs UUID validation before the API call

  ![Update Tracker](docs/images/update-tracker.png)

  ------------------------------------------------------------------------

  ## Get Results

  Retrieve tracking data:

  -   By tracking number
  -   By tracker ID

  ![Get Results](docs/images/get-results-by-trackerId.png)

  ------------------------------------------------------------------------

  # Ship24 Trigger

  The Ship24 Trigger node starts a workflow whenever Ship24 sends a tracking
  event to your webhook URL.

  ![Ship24 Trigger](docs/images/webhook.png)

  ## Setup

  1.  Add the **Ship24 Trigger** node to a new workflow.
  2.  Enter a unique slug in the **Webhook Path** field (e.g. `shop-tracking`). This field is required — each active workflow must use a different path, or only one will receive events.
  3.  Two webhook URLs are shown at the top of the node panel:
      -   **Test URL** — active while you click **Execute step** in the editor. Use this with the Ship24 dashboard test button to verify your workflow before going live.
      -   **Production URL** — active when the workflow is **activated** (toggle top-right). This is the URL to save in your Ship24 dashboard.
  4.  Go to [Ship24 Dashboard → Integrations → Webhook](https://dashboard.ship24.com/integrations/webhook), paste the appropriate URL, and test or save it.

  ## Webhook Payload

  Ship24 sends tracking events as a JSON object whose `trackings` field is an array. Each element in that array represents one tracking update:

  ``` json
  {
    "trackings": [
      {
        "metadata": { "generatedAt": "...", "messageId": "...", "topic": "..." },
        "tracker": { "trackerId": "...", "trackingNumber": "...", "isSubscribed": true, ... },
        "shipment": { "shipmentId": "...", "statusCode": "...", "statusMilestone": "...", ... },
        "events": [ { "eventId": "...", "status": "...", "occurrenceDatetime": "...", ... } ],
        "statistics": { "timestamps": { ... } }
      }
    ]
  }
  ```

  The node passes the raw payload through. Use n8n's **Split Out** node on the
  `trackings` field to process each tracking entry as a separate item.

  ## Webhook Secret (optional)

  Ship24 allocates a random webhook secret to your account, visible in your
  dashboard. It is sent with every request as:

  ```
  Authorization: Bearer your_webhook_secret
  ```

  To validate it, add an **IF** node after the trigger and compare
  `{{ $request.headers.authorization }}` to your expected value. This ensures
  requests genuinely originate from Ship24.

  ------------------------------------------------------------------------

  # Utility Resource

  The Utility resource allows advanced API access.

  You can:

  -   Define HTTP method
  -   Define path
  -   Provide custom request body
  -   Provide query parameters

  ![Utility Resource](docs/images/utility-call.png)

  ------------------------------------------------------------------------

  ## Response Modes

  ### Raw Mode

  This node returns the full Ship24 API response (raw mode).

  ------------------------------------------------------------------------

  ## Multi-Item Behaviour

  This node fully supports n8n multi-item processing:

  -   One output item per input item
  -   Bulk operations preserve input-to-output mapping
  -   No silent drops
  -   Large workflows (50+ items) supported

  ------------------------------------------------------------------------

  ## Error Handling

  The node includes structured error handling for:

  -   401 Unauthorized
  -   404 Not Found
  -   429 Rate limit
  -   Invalid UUID format
  -   Empty tracking number
  -   Bulk mapping failures

  With `continueOnFail` enabled, per-item failures return structured
  objects:

  ``` json
  {
    "success": false,
    "error": {
      "type": "request_error",
      "message": "..."
    }
  }
  ```

  This allows resilient workflow design without unexpected crashes.

  ------------------------------------------------------------------------

  ## Performance Notes

  -   Bulk mode automatically chunks at 100 items per API request.
  -   Large workflows are processed sequentially per chunk.

  ------------------------------------------------------------------------

  ## Development

  ### Build

  ``` bash
  npm run build
  ```

  ### Lint

  ``` bash
  npm run lint
  ```

  ### Local package test

  ``` bash
  npm pack
  ```

  ------------------------------------------------------------------------

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Automate global shipment tracking workflows by interacting with the Ship24 API to create trackers, retrieve results, and manage subscriptions for over 1500 couriers.","capabilities":["Create single shipment trackers","Bulk create trackers (up to 100 per request with automatic chunking)","Retrieve tracking results by tracking number or tracker ID","Update tracker subscription status","Create tracker and immediately fetch results","Utility mode for advanced custom HTTP requests","Full n8n multi-item processing support","Structured per-item error handling with continueOnFail"],"authentication":"API key required","commonUseCases":["Automated shipment monitoring for e-commerce orders","Bulk tracking status updates for logistics dashboards","Delivery confirmation workflows","Custom API integrations via utility mode"],"limitations":["Bulk mode requires input items to contain exactly one tracking number per item (arrays must be split first)","Large workflows are processed sequentially per chunk","Utility mode requires manual definition of HTTP method, path, body, and query parameters"],"relatedNodes":["n8n-nodes-ship24","n8n-nodes-code","n8n-nodes-itemlists","n8n-nodes-splitoutitems"]}


node_type: @qontext/n8n-nodes-qontext.qontext
package_name: @qontext/n8n-nodes-qontext
display_name: Qontext
description: Ingest and retrieve company context with the Qontext API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: valeska_pachelbel
author_github_url: https://github.com/qontext-ai/n8n-nodes-qontext.git
npm_package_name: @qontext/n8n-nodes-qontext
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:33.833Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "retrieval",
      "options": [
        {
          "name": "Ingestion",
          "value": "ingestion"
        },
        {
          "name": "Retrieval",
          "value": "retrieval"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "ingestDataWithMetadata",
      "options": [
        {
          "name": "Ingest Data with Metadata",
          "value": "ingestDataWithMetadata",
          "action": "Ingest data with metadata",
          "routing": {
            "request": {
              "url": "v1/ingestion/any",
              "body": {
                "source": {
                  "source_id": "={{ $parameter[\"source\"].source.source_id }}",
                  "source_data_type": "={{ $parameter[\"source\"].source.source_data_type }}",
                  "source_integration": "={{ $parameter[\"source\"].source.source_integration }}"
                },
                "vaultId": "={{$parameter[\"vaultId\"]}}",
                "string_data": "={{$parameter[\"string_data\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Ingest data with metadata into the specified vault"
        },
        {
          "name": "Ingest Unstructured Text",
          "value": "ingestUnstructuredText",
          "action": "Ingest unstructured text",
          "routing": {
            "request": {
              "url": "v1/ingestion/unstructured",
              "body": {
                "text": "={{$parameter[\"text\"]}}",
                "vaultId": "={{$parameter[\"vaultId\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Ingest unstructured text into the specified vault"
        },
        {
          "name": "Ingest Website",
          "value": "ingestWebsite",
          "action": "Ingest website",
          "routing": {
            "request": {
              "url": "v1/ingestion/website",
              "body": {
                "url": "={{$parameter[\"url\"]}}",
                "type": "={{$parameter[\"type\"]}}",
                "vaultId": "={{$parameter[\"vaultId\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Ingest website into the specified vault"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ingestion"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "retrieveContext",
      "options": [
        {
          "name": "Retrieve Context",
          "value": "retrieveContext",
          "action": "Retrieve context",
          "routing": {
            "request": {
              "url": "v1/retrieval",
              "body": {
                "depth": 1,
                "limit": 5,
                "prompt": "={{$parameter[\"prompt\"]}}",
                "vaultId": "={{$parameter[\"vaultId\"]}}",
                "includeSources": true
              },
              "method": "POST"
            }
          },
          "description": "Retrieve context from the specified vault related to your prompt"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "retrieval"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Ingest Data with Metadata",
      "value": "ingestDataWithMetadata",
      "action": "Ingest data with metadata",
      "routing": {
        "request": {
          "url": "v1/ingestion/any",
          "body": {
            "source": {
              "source_id": "={{ $parameter[\"source\"].source.source_id }}",
              "source_data_type": "={{ $parameter[\"source\"].source.source_data_type }}",
              "source_integration": "={{ $parameter[\"source\"].source.source_integration }}"
            },
            "vaultId": "={{$parameter[\"vaultId\"]}}",
            "string_data": "={{$parameter[\"string_data\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Ingest data with metadata into the specified vault",
      "resource": "ingestion"
    },
    {
      "name": "Ingest Unstructured Text",
      "value": "ingestUnstructuredText",
      "action": "Ingest unstructured text",
      "routing": {
        "request": {
          "url": "v1/ingestion/unstructured",
          "body": {
            "text": "={{$parameter[\"text\"]}}",
            "vaultId": "={{$parameter[\"vaultId\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Ingest unstructured text into the specified vault",
      "resource": "ingestion"
    },
    {
      "name": "Ingest Website",
      "value": "ingestWebsite",
      "action": "Ingest website",
      "routing": {
        "request": {
          "url": "v1/ingestion/website",
          "body": {
            "url": "={{$parameter[\"url\"]}}",
            "type": "={{$parameter[\"type\"]}}",
            "vaultId": "={{$parameter[\"vaultId\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Ingest website into the specified vault",
      "resource": "ingestion"
    },
    {
      "name": "Retrieve Context",
      "value": "retrieveContext",
      "action": "Retrieve context",
      "routing": {
        "request": {
          "url": "v1/retrieval",
          "body": {
            "depth": 1,
            "limit": 5,
            "prompt": "={{$parameter[\"prompt\"]}}",
            "vaultId": "={{$parameter[\"vaultId\"]}}",
            "includeSources": true
          },
          "method": "POST"
        }
      },
      "description": "Retrieve context from the specified vault related to your prompt",
      "resource": "retrieval"
    }
  ]

npm_readme:
  # @qontext/n8n-nodes-qontext

  This is an n8n community node. It lets you interact with the Qontext API in your n8n workflows.

  Qontext allows you to ingest, store, and retrieve contextual information from various data sources. This node enables you to integrate Qontext's context retrieval and ingestion capabilities into your n8n automation workflows.

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

  ## Table of Contents

  - [Installation](#installation)
  - [Operations](#operations)
    - [Retrieval Operations](#retrieval-operations)
    - [Ingestion Operations](#ingestion-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

  The Qontext node supports two main resources: **Retrieval** and **Ingestion**.

  ### Retrieval Operations

  #### Retrieve Context
  Retrieves relevant context from a specified vault based on a prompt.

  Example: retrieve information from older support tickets, documentation, and discussions to draft replies to new customer requests.

  **Parameters:**
  - **Vault ID** (required): The ID of the vault that should be used to retrieve context
  - **Prompt** (required): The prompt to retrieve context for
  - **Additional Fields:**
    - **Limit** (required, default: 5): Number of nodes on first level to consider (minimum: 1)
    - **Depth** (required, default: 1): Depth of nodes to retrieve from the graph

  ### Ingestion Operations

  #### Ingest Data with Metadata
  Ingests structured or unstructured data with metadata into a specified vault. This operation allows you to add data with source tracking information.

  **Parameters:**
  - **Vault ID** (required): The ID of the vault that the data should be ingested into
  - **Text** (required): The unstructured data (plain or markdown text) to ingest
  - **Data Source Name** (required): The system or platform where the data originates
    - Options: HubSpot, Web, Gmail, GoogleDrive, API, Notion, Gong, Slack
  - **Data Source Type** (required): The specific type of data being ingested from the source
    - Options: Contact, Company, Deal, Lead, Note, Task, Meeting, Email, Website, Page, File, None, Call, Message
  - **Data Source ID** (required): The unique identifier of the data item in the source system

  #### Ingest Unstructured Text
  Ingests plain unstructured text into a specified vault without metadata requirements.

  **Parameters:**
  - **Vault ID** (required): The ID of the vault that the data should be ingested into
  - **Text** (required): The text data to ingest

  #### Ingest Website
  Ingests content from a website URL into a specified vault. Supports both single page and deep crawl options.

  **Parameters:**
  - **Vault ID** (required): The ID of the vault that the data should be ingested into
  - **URL** (required): The website URL to ingest
  - **Type** (required): The type of ingestion to perform
    - **Single Page**: Ingests only the given URL. Use for one-off pages or articles.
    - **Deep Crawl**: Crawls the whole site from that URL and follows links, scrapes multiple pages as markdown, and ingests them in one go.

  ## Credentials

  To use the Qontext node, you need to set up Qontext API credentials.

  ### Prerequisites

  1. Sign up for a Qontext account at [https://qontext.ai](https://qontext.ai)
  2. Create an API key in your Qontext account (e.g. in **Access Keys** section in the respective Qontext vault)

  ### Setting Up Credentials

  1. In n8n, go to **Credentials** → **Add Credential**
  2. Search for **Qontext API**
  3. Enter the API key you created in the Qontext UI:
     - **X-API-Key**: Your Qontext API key (this field is masked for security)
     - **Domain**: The API domain (default: `https://api.qontext.ai`)

  The credentials will be automatically validated when you save them.

  ## Compatibility

  - **Minimum n8n version**: Compatible with n8n versions that support community nodes 
  - **API Version**: Uses Qontext API v1
  - **Node API Version**: 1

  ## Usage

  ### Basic Workflow Example

  1. **Set up credentials**: Create an API key in your [Qontext account](https://qontext.ai), then in n8n add the **Qontext API** credential and paste the key.
  2. **Add the Qontext node** to your workflow and choose **Retrieval** or **Ingestion**.
  3. **Pick an operation** (e.g. Retrieve Context, Ingest Website) and fill in the required fields (Vault ID, Prompt or URL, etc.).
  4. **Run the workflow** to retrieve context or ingest data into your vault.

  For general n8n workflow basics, see the [n8n documentation](https://docs.n8n.io/try-it-out/).

  ### Common Use Cases

  - **Data ingestion**: Ingest data from Slack, Gmail, HubSpot, and other sources into your vaults so it can be queried later.
  - **Personalized emails**: Pull in relevant context (e.g. customer history, product info) when drafting personalized marketing emails.
  - **Lost deal reactivation**: Retrieve context on why a deal was lost, then draft personalized reactivation messages.
  - **Sales call prep**: Before a call, get context for the lead to surface notes, deals, and past interactions.
  - **Support and answer drafts**: Retrieve information related to a new support tickets in older tickets, documentations, discussions etc. and generate answer drafts for customer requests.

  For new n8n users, check out the [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started with n8n basics.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Qontext Documentation](https://docs.qontext.ai/get-started)
  * [GitHub Repository](https://github.com/qontext-ai/n8n-nodes-qontext)

ai_documentation_summary:
  {"purpose":"Interact with the Qontext API to ingest and retrieve contextual information from various data sources for use in n8n automation workflows.","capabilities":["Retrieve context from a specified vault based on a prompt with configurable depth and limits","Ingest structured or unstructured data with metadata (source tracking) into a vault","Ingest plain unstructured text into a vault","Ingest website content via single page or deep crawl options"],"authentication":"API key required (X-API-Key)","commonUseCases":["Data ingestion from sources like Slack, Gmail, HubSpot, and Notion into vaults","Drafting personalized emails by pulling in customer history and product info","Reactivating lost deals by retrieving context on previous interactions","Preparing for sales calls by surfacing notes, deals, and past interactions","Generating support answer drafts by retrieving information from older tickets and documentation"],"limitations":["Requires a Qontext account and API key setup","Uses Qontext API v1 only","Data source options for metadata ingestion are limited to specific platforms (HubSpot, Web, Gmail, GoogleDrive, API, Notion, Gong, Slack)"],"relatedNodes":[]}


node_type: n8n-nodes-whatsable.whatsAbleTrigger
package_name: n8n-nodes-whatsable
display_name: Incoming/outgoing WhatsApp message Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: whatsabledev
author_github_url: https://github.com/Whatsable/
npm_package_name: n8n-nodes-whatsable
npm_version: 2.4.9
community_fetched_at: 2026-07-14T14:40:33.836Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Triggers when receiving messages from WhatsAble services. Incoming audio messages are automatically transcribed to text.

npm_readme:
  <p align="center">
    <img src="https://d1pnnwteuly8z3.cloudfront.net/images/acc1c175-2e05-4bab-805e-64536550fa04/393f0ca5-e904-41f3-8eee-b2dab6bd4e0d.png" alt="WhatsAble Logo" width="160"/>
  </p>

  [![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE.md)

  ## Table of Contents

  - [Overview](#overview)
  - [Installation](#installation)
  - [Authentication](#authentication)
  - [Features](#features)
  - [How to Use WhatsAble Action Node](#how-to-use-whatsable-action-node)
  - [How to Use WhatsAble Trigger Node](#how-to-use-whatsable-trigger-node)
  - [How to Use Notifier Action Node](#how-to-use-notifier-action-node)
  - [How to Use Notifier Trigger Node](#how-to-use-notifier-trigger-node)
  - [How to Use Notifyer System Action Node](#how-to-use-notifyer-system-action-node)
  - [How to Use Notifyer System Trigger Node](#how-to-use-notifyer-system-trigger-node)
  - [Common Use Cases](#common-use-cases)
  - [Best Practices](#best-practices)
  - [Support](#support)
  - [License](#license)
  - [Resources](#resources)

  ---

  # n8n-nodes-whatsable

  This is an [n8n](https://n8n.io/) community node for integrating with the WhatsAble Suite, providing powerful WhatsApp messaging automation capabilities.

  ---

  ## Overview

  The WhatsAble Suite offers a comprehensive set of messaging tools that integrate seamlessly with n8n, enabling powerful automation workflows for businesses of all sizes. The suite comprises three powerful messaging platforms:

  ### WhatsAble
  - Ideal for small businesses and startups
  - Simple integration with n8n
  - Basic media support
  - Subscription-based pricing
  - 7-day free trial
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ### Notifier by WhatsAble
  - Perfect for medium-sized businesses
  - Enhanced template support
  - Standard media capabilities
  - Flexible pricing options
  - Available free trial
  - [Documentation](https://docs.whatsable.app/guides/notifier/n8n)

  ### Notifyer System
  - Enterprise-grade solution
  - Advanced template capabilities
  - Full media support
  - Enterprise pricing
  - Try for free with 2 numbers
  - [Documentation](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## Installation

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

  ---

  ## Authentication

  To use this node, you need to have an API key from your chosen WhatsAble Suite platform:

  1. Sign up at [WhatsAble](https://whatsable.app)
  2. Choose your platform (WhatsAble, Notifier, or Notifyer System)
  3. Complete the verification process
  4. Generate an API key from your platform's dashboard

  > **Note:** Keep your API key secure and never share it publicly.

  ---

  ## Features

  ### WhatsAble Node
  - Send messages
  - Send template messages (Via Notifyer System)
  - Send non-template messages
  - Schedule messages
  - Support for various media types
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ### WhatsAble Trigger Node
  - Receive incoming messages
  - Handle webhooks
  - Process notifications
  - Real-time message triggers
  - [Documentation](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use WhatsAble Action Node

  ### Prerequisites
  - An active WhatsAble subscription
  - Access to n8n workflow automation platform
  - A verified WhatsApp number in your WhatsAble dashboard

  ### Setup Process

  1. **Subscribe to WhatsAble**
     - Log in to your WhatsAble dashboard
     - Click the Subscribe button
     - Start your 7-day free trial
     - Note: After trial, pricing is $8.99 per month per phone number
  2. **Add and Verify Phone Number**
     - Navigate to Verified Numbers in your dashboard
     - Click Add New Number
     - Enter your phone number (with country code)
     - Complete the WhatsApp verification process
     - Note: Only first number needs verification
  3. **Get Your API Key**
     - Go to API Keys in your WhatsAble dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your WhatsAble API key
     - Name your credential (e.g., "WhatsAble Production")
     - Click Save
  5. Configure message settings:
     - Select "Send Message (WhatsAble)" operation
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  For detailed documentation, visit [WhatsAble n8n Integration Guide](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use WhatsAble Trigger Node

  ### Prerequisites
  - An active WhatsAble subscription
  - Access to n8n workflow automation platform
  - A verified WhatsApp number in your WhatsAble dashboard

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the WhatsAble Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the WhatsAble Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your WhatsAble API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [WhatsAble n8n Integration Guide](https://docs.whatsable.app/guides/whatsable/n8n)

  ---

  ## How to Use Notifier Action Node

  ### Prerequisites
  - An active Notifier account (Monthly or Pay-as-you-go plan)
  - Access to n8n workflow automation platform
  - Business information ready for configuration

  ### Setup Process

  1. **Configure Business Information**
     - Log in to your Notifier dashboard
     - Navigate to Business Information
     - Complete required fields
     - Verify your WhatsApp number with the code sent
  2. **Get Your API Key**
     - Go to API Keys in your Notifier dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your Notifier API key
     - Name your credential (e.g., "Notifier Production")
     - Click Save
  5. Configure message settings:
     - Select "Send Message (Notifier)" operation
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  ### Example Workflows with Notifier
  - Lead Nurturing: Trigger on form submission, send personalized welcome, schedule follow-ups
  - Order Confirmations: Trigger on order status change, send update with details
  - Event Reminders: Trigger on calendar event, send reminder with RSVP link
  - Customer Feedback: Trigger on purchase, send feedback request
  - Support Ticket Updates: Trigger on ticket status change, send update

  For detailed documentation, visit [Notifier n8n Integration Guide](https://docs.whatsable.app/guides/notifier/n8n)

  ---

  ## How to Use Notifier Trigger Node

  ### Prerequisites
  - An active Notifier account
  - Access to n8n workflow automation platform
  - Business information configured in Notifier

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the Notifier Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the Notifier Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your Notifier API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [Notifier n8n Integration Guide](https://docs.whatsable.app/guides/notifier/n8n)

  ---

  ## How to Use Notifyer System Action Node

  ### Prerequisites
  - An active Notifyer System account
  - Access to n8n workflow automation platform
  - Completed WhatsApp Business Platform embedding process

  ### Setup Process

  1. **Complete Platform Embedding**
     - Connect your WhatsApp Business account
     - Complete Meta's business verification
     - Ensure compliance with WhatsApp Business Platform policies
  2. **Set Up Message Templates**
     - Navigate to Templates in your dashboard
     - Create new templates and submit for review
  3. **Get Your API Key**
     - Go to API Keys in your Notifyer dashboard
     - Copy your unique API key
     - Store it securely for the integration

  ### Integration Steps

  1. Create a new workflow in n8n
  2. Add your preferred trigger node and configure its settings
  3. Add the WhatsAble node
  4. In the WhatsAble node settings:
     - Select "Create new credential"
     - Enter your Notifyer System API key
     - Name your credential (e.g., "Notifyer System Production")
     - Click Save
  5. Configure message settings:
     - Choose between template and non-template message operations
     - Fill in required and optional fields
  6. Click "Test Step" to verify
  7. Save your workflow and activate it

  ### Example Workflows with Notifyer System
  - Order Confirmations: Trigger on new order, send template message with details
  - Appointment Reminders: Trigger on calendar event, send template message
  - Lead Notifications: Trigger on new CRM lead, send non-template message
  - Customer Support: Trigger on new support ticket, send template message
  - Delivery Updates: Trigger on shipping status change, send template message

  For detailed documentation, visit [Notifyer System n8n Integration Guide](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## How to Use Notifyer System Trigger Node

  ### Prerequisites
  - An active Notifyer System account
  - Access to n8n workflow automation platform
  - Completed WhatsApp Business Platform embedding process

  ### Setup Process

  1. **Get Your Webhook URL**
     - Open the Notifyer System Trigger Node in n8n
     - At the top of the node, locate "Webhook URLs"
     - Click the "Production URL" to copy it to your clipboard
     - This URL will be used to receive incoming messages
  2. **Configure Credentials**
     - In the Notifyer System Trigger Node settings:
       - Paste the Production Webhook URL in the "Production URL" input box
       - Enter your Notifyer System API key in the "API Key" input box
       - Click Save
       - A green success message will appear if the configuration is successful
  3. **Activate the Trigger**
     - Click "Test Step" to verify the connection
     - Save your workflow
     - Toggle "Active" to start receiving messages
     - Connect the trigger to any action node to process incoming messages

  For detailed documentation, visit [Notifyer System n8n Integration Guide](https://docs.whatsable.app/guides/notifier-system/n8n-overview)

  ---

  ## Common Use Cases

  - Lead Qualification: Automated follow-up, lead scoring, response tracking
  - Order Notifications: Confirmations, shipping updates, delivery notifications
  - Appointment Reminders: Automated reminders, confirmations, calendar integration
  - Customer Support: Ticket routing, automated responses, support updates
  - Payment Reminders: Invoice notifications, payment confirmations, subscription reminders

  ---

  ## Support

  For technical support and assistance:

  - **Email Support**: Contact our dedicated support team
  - **Video Tutorials**: Watch step-by-step integration guides
  - **Implementation Help**: Get expert assistance with workflows

  For enterprise-level support or custom solutions, contact our solution engineers at team@whatsable.app

  ---

  ## License

  [MIT](LICENSE.md)

  ---

  ## Resources

  - [WhatsAble Website](https://whatsable.app)
  - [n8n Documentation](https://docs.n8n.io)
  - [WhatsAble Suite n8n Overview](https://docs.whatsable.app/n8n-overview)

  ---

  ## Running Locally

  To run and test this node on your local machine:

  1. **Clone the repository**
     ```bash
     git clone https://github.com/Whatsable/n8n-nodes-whatsable.git
     cd n8n-nodes-whatsable
     ```
  2. **Install dependencies**
     ```bash
     pnpm install
     ```
  3. **Build the project**
     ```bash
     pnpm build
     ```
  4. **Run tests**
     ```bash
     pnpm test
     ```
     > **Note:** Unit tests are included to ensure code quality. Please run tests before submitting a pull request.
  5. **Link the node to your local n8n instance**
     - If you are developing a custom node, you can use [n8n's community node development guide](https://docs.n8n.io/integrations/community-nodes/create/) to link your node for local testing.
     - Typically, you can run:
       ```bash
       pnpm link --global
       cd ~/.n8n/custom
       pnpm link --global n8n-nodes-whatsable
       ```
     - Restart your n8n instance to load the custom node.
  6. **Test your node**
     - Open n8n in your browser (usually at `http://localhost:5678`)
     - Create a workflow and add your custom node to test its functionality

  > **Note:** Make sure you have [Node.js](https://nodejs.org/) and [pnpm](https://pnpm.io/) installed on your machine.

  ---

  ## Contributing

  We welcome contributions from the community! To contribute:

  1. **Fork the repository**: [https://github.com/Whatsable/n8n-nodes-whatsable](https://github.com/Whatsable/n8n-nodes-whatsable)
  2. **Create a new branch** for your feature or bugfix:
     ```bash
     git checkout -b feature/your-feature-name
     ```
  3. **Make your changes** and ensure code quality:
     - Follow the existing code style
     - Add or update documentation as needed
     - Run linter and tests before submitting
  4. **Commit your changes**
     ```bash
     git commit -m "Add your message here"
     ```
  5. **Push to your fork**
     ```bash
     git push origin feature/your-feature-name
     ```
  6. **Open a Pull Request**
     - Go to the GitHub page for your fork
     - Click "Compare & pull request"
     - Describe your changes and submit the PR

  ### Reporting Issues
  - If you find a bug or have a feature request, please [open an issue](https://github.com/Whatsable/n8n-nodes-whatsable/issues) with details and steps to reproduce.

  ### Code of Conduct
  - Please be respectful and follow our [Code of Conduct](CODE_OF_CONDUCT.md) when participating in this project.

ai_documentation_summary:
  {"purpose":"This n8n community node enables triggering workflows based on incoming messages from WhatsAble Suite platforms (WhatsAble, Notifier, or Notifyer System) and supports sending outgoing messages.","capabilities":["Receive incoming WhatsApp messages","Handle webhooks for real-time notifications","Process message data in workflows","Send messages via WhatsAble","Send template messages (Notifyer System)","Send non-template messages","Schedule messages","Support for various media types"],"authentication":"API key required","commonUseCases":["Automate responses to customer inquiries received via WhatsApp","Trigger internal notifications when a new message arrives","Integrate WhatsApp messaging into existing business workflows","Send scheduled promotional messages to customers"],"limitations":["Requires an active subscription to a WhatsAble Suite platform (WhatsAble, Notifier, or Notifyer System)","Requires a verified WhatsApp number in the platform dashboard","Template messaging is only available via the Notifyer System platform","Media support varies by platform (basic in WhatsAble, full in Notifyer System)"],"relatedNodes":[]}


node_type: n8n-nodes-streak-crm.streakTrigger
package_name: n8n-nodes-streak-crm
display_name: Streak Trigger
description: Starts the workflow when a Streak event occurs
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: nader_heidari
author_github_url: https://github.com/nukleas/
npm_package_name: n8n-nodes-streak-crm
npm_version: 1.3.0
community_fetched_at: 2026-07-14T14:40:33.838Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-streak-crm

  This is an n8n community node that lets you use [Streak CRM](https://streak.com) in your n8n workflows.

  Streak CRM is a powerful customer relationship management (CRM) tool integrated directly into Gmail that helps teams track leads, manage sales pipelines, and streamline customer communications.

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

  [Installation](#installation)
  [Operations](#operations)
  [Trigger Events](#trigger-events)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)
  [Version History](#version-history)

  ## Installation

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

  ```bash
  npm install n8n-nodes-streak-crm
  ```

  Or if you use n8n Desktop, you can go to **Settings > Community nodes > Install** and provide the package name `n8n-nodes-streak-crm`.

  ## Operations

  This node supports a comprehensive set of operations across various Streak CRM resources.

  ### Architecture Improvements

  The node now features a dedicated `StreakApiService` class that centralizes all API interactions, providing:

  - Consistent error handling across all operations
  - Strong TypeScript typing for better code reliability
  - Improved performance with optimized request handling
  - Better developer experience for future enhancements

  ### User Operations
  - **Get Current User** - Retrieve the details of the current authenticated user
  - **Get User** - Retrieve details of a specific user by key

  ### Team Operations
  - **Get My Teams** - Retrieve all teams the current user belongs to
  - **Get Team** - Retrieve details of a specific team by key

  ### Pipeline Operations
  - **List All Pipelines** - Get all available pipelines
  - **Get Pipeline** - Retrieve a specific pipeline by key
  - **Create Pipeline** - Create a new pipeline with customizable properties
  - **Update Pipeline** - Update properties of an existing pipeline
  - **Delete Pipeline** - Remove a pipeline
  - **Move Boxes Between Pipelines** - Move multiple boxes (deals) between pipelines in batch

  ### Box Operations
  - **List Boxes in Pipeline** - Get all boxes (deals) in a specific pipeline
  - **Get Box** - Retrieve a specific box by key
  - **Get Multiple Boxes** - Retrieve multiple boxes at once
  - **Create Box** - Create a new box in a pipeline
  - **Update Box** - Update properties of an existing box
  - **Delete Box** - Remove a box
  - **Get Box Timeline** - Retrieve the timeline of events for a box

  ### Stage Operations
  - **List Stages** - Get all stages in a pipeline
  - **Get Stage** - Retrieve a specific stage by key
  - **Create Stage** - Create a new stage in a pipeline
  - **Update Stage** - Update properties of an existing stage
  - **Delete Stage** - Remove a stage from a pipeline

  ### Field Operations
  - **List Fields** - Get all fields in a pipeline
  - **Get Field** - Retrieve a specific field by key
  - **Create Field** - Create a new field in a pipeline
  - **Update Field** - Update properties of an existing field
  - **Delete Field** - Remove a field from a pipeline
  - **List Field Values** - Get all field values for a box
  - **Get Field Value** - Retrieve a specific field value
  - **Update Field Value** - Update a field value for a box

  ### Contact Operations
  - **Get Contact** - Retrieve a specific contact by key
  - **Create Contact** - Create a new contact
  - **Update Contact** - Update properties of an existing contact
  - **Delete Contact** - Remove a contact

  ### Organization Operations
  - **Get Organization** - Retrieve a specific organization by key
  - **Create Organization** - Create a new organization
  - **Check Existing Organizations** - Search for existing organizations by name or domain
  - **Update Organization** - Update properties of an existing organization
  - **Delete Organization** - Remove an organization

  ### Task Operations
  - **Get Task** - Retrieve a specific task by key
  - **Get Tasks in Box** - Get all tasks associated with a box
  - **Create Task** - Create a new task for a box
  - **Update Task** - Update properties of an existing task
  - **Delete Task** - Remove a task

  ### Comment Operations
  - **List Comments** - Get all comments on a box
  - **Get Comment** - Retrieve a specific comment by key
  - **Create Comment** - Add a comment to a box
  - **Delete Comment** - Remove a comment

  ### Meeting Operations
  - **List Meetings** - Get all meetings for a box
  - **Get Meeting** - Retrieve a specific meeting by key
  - **Create Meeting** - Create a new meeting for a box
  - **Update Meeting** - Update properties of an existing meeting
  - **Delete Meeting** - Remove a meeting

  ### Thread Operations
  - **List Threads** - Get all threads for a box
  - **Get Thread** - Retrieve a specific thread by key
  - **Get Thread by Gmail ID** - Retrieve a thread using its Gmail ID
  - **Add Thread to Box** - Link a Gmail thread to a box

  ### File Operations
  - **List Files** - Get all files attached to a box
  - **Get File** - Retrieve a specific file by key
  - **Upload File** - Upload a file to a box
  - **Delete File** - Remove a file

  ### Newsfeed Operations
  - **Get Pipeline Newsfeed** - Get recent activity for a pipeline
  - **Get Box Newsfeed** - Get recent activity for a box
  - **Get All Newsfeed** - Get all recent activity

  ### Snippet Operations
  - **List Snippets** - Get all snippets
  - **Get Snippet** - Retrieve a specific snippet by key
  - **Create Snippet** - Create a new snippet
  - **Delete Snippet** - Remove a snippet

  ### Webhook Operations
  - **List Webhooks** - Get all webhooks for a pipeline or team
  - **Get Webhook** - Retrieve a specific webhook by key
  - **Create Webhook** - Create a new webhook for a pipeline or team event
  - **Delete Webhook** - Remove a webhook

  ### Search Operations
  - **Search by Query** - Search across Streak using a query string
  - **Search by Name** - Search for boxes by name

  ## Trigger Events

  The **Streak Trigger** node starts workflows automatically when events occur in Streak. Webhooks can be scoped to a specific pipeline or team.

  ### Supported Events

  | Event | Description |
  |-------|-------------|
  | Box Create | A new box is created |
  | Box Delete | A box is deleted |
  | Box Edit | A box's fields, notes, assignments, or name change |
  | Box Change Stage | A box moves to a different stage |
  | Box Change Pipeline | A box is transferred to a different pipeline |
  | Box New Email Address | A new email address is detected on a box |
  | Stage Create | A new stage is created |
  | Comment Create | A comment is added to a box |
  | Meeting Create | A meeting is created |
  | Meeting Update | A meeting is updated |
  | Task Create | A task is created |
  | Task Complete | A task is marked complete |
  | Task Due | A task reaches its due date |
  | Task Updated | A task is updated |
  | Contact Create | A contact is created |
  | Contact Update | A contact is updated |
  | Contact Delete | A contact is deleted |
  | Org Create | An organization is created |
  | Org Update | An organization is updated |
  | Org Delete | An organization is deleted |

  ## Credentials

  To use this node, you need an API key from Streak CRM.

  ### How to get your API key:

  1. Log in to your Streak account at [streak.com](https://streak.com)
  2. Go to **Settings** > **API** 
  3. Copy your API key

  In n8n, create a new credential of type **Streak CRM API** and enter your API key.

  ## Compatibility

  This node was developed and tested with n8n version 1.0.0 and uses Streak API v1 and v2.

  ## Usage

  ### Example: Creating a new pipeline and adding a box (deal)

  This is a simple workflow to create a pipeline and then add a box to it:

  1. **Streak CRM node** with operation **Create Pipeline**
     - Set name: `New Sales Pipeline`
     - Optional: Add description, team key, and other properties

  2. **Streak CRM node** with operation **Create Box**
     - Use the pipeline key from the previous node
     - Set name: `Potential Client`
     - Optional: Add stage key and other properties

  ### Example: Triggering a workflow when a box changes stage

  1. Add a **Streak Trigger** node
     - Set scope to **Pipeline** and select your pipeline
     - Set event to **Box Change Stage**
  2. Activate the workflow — it will now run automatically whenever a box moves between stages

  ### Example: Managing contacts and linking them to boxes

  1. **Streak CRM node** with operation **Create Contact**
     - Set email: `client@example.com`
     - Add fields for name, organization, etc.

  2. **Streak CRM node** with operation **Update Box**
     - Use an existing box key
     - Link the contact by updating field values

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Streak API Documentation](https://streak.readme.io/reference/about-the-streak-api)
  * [Streak User Guide](https://streak.com/support/articles)

  ## Version History

  ### 1.2.0
  - Added **Streak Trigger** node with webhook support for 20 event types
  - Webhooks can be scoped to a pipeline or team
  - Automatic webhook registration/cleanup on workflow activate/deactivate
  - Added Comment operations (list, get, create, delete)
  - Added Meeting operations (list, get, create, update, delete)
  - Added Thread operations (list, get, get by Gmail ID, add to box)
  - Added File operations (list, get, upload, delete)
  - Added Newsfeed operations (pipeline, box, all)
  - Added Snippet operations (list, get, create, delete)
  - Added Search operations (by query, by name)

  ### 1.0.3
  - Added a comprehensive StreakApiService class to centralize API interactions
  - Improved pipeline selection with dynamic dropdown loading
  - Fixed Box Keys field handling in Move Boxes operation
  - Enhanced error handling and API request consistency
  - Added TypeScript interfaces for better type safety

  ### 1.0.2
  - Initial release with comprehensive support for Users, Teams, Pipelines, Boxes, Stages, Fields, Contacts, Organizations, and Tasks
  - Support for pagination in list operations
  - Detailed error handling

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This node acts as a trigger to start n8n workflows when specific events occur within Streak CRM, enabling automation based on changes in deals, contacts, or pipeline activities.","capabilities":["Trigger on Streak CRM events","Retrieve current user details","Manage teams (list, get, create, update, delete)","Manage pipelines (CRUD operations, move boxes)","Manage boxes/deals (CRUD operations, timeline retrieval)","Manage stages (CRUD operations)","Manage fields and field values (CRUD operations)","Manage contacts (CRUD operations)","Manage organizations (CRUD operations, search)","Manage tasks (CRUD operations)"],"authentication":"API key required","commonUseCases":["Start workflows when a new deal is created or updated","Automate follow-up tasks when a deal moves to a specific stage","Trigger notifications when a contact is added to a pipeline","Automate email responses based on thread activity","Sync Streak data with other tools on specific events"],"limitations":[],"relatedNodes":[]}


node_type: @bdzscaler/n8n-nodes-aiguard.aiGuard
package_name: @bdzscaler/n8n-nodes-aiguard
display_name: Zscaler AI Guard
description: Scan AI prompts and responses for security threats using Zscaler AI Guard
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bd-devrel
author_github_url: https://github.com/zscaler/n8n-nodes-aiguard.git
npm_package_name: @bdzscaler/n8n-nodes-aiguard
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:33.842Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "promptScan",
      "options": [
        {
          "name": "Dual Scan",
          "value": "dualScan",
          "action": "Perform dual scanning of prompt and response",
          "description": "Scan both prompt and response in sequence"
        },
        {
          "name": "Prompt Scan",
          "value": "promptScan",
          "action": "Scan a prompt for security threats",
          "description": "Scan user input/prompts for security threats"
        },
        {
          "name": "Response Scan",
          "value": "responseScan",
          "action": "Scan a response for policy violations",
          "description": "Scan AI-generated responses for policy violations"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Dual Scan",
      "value": "dualScan",
      "action": "Perform dual scanning of prompt and response",
      "description": "Scan both prompt and response in sequence"
    },
    {
      "name": "Prompt Scan",
      "value": "promptScan",
      "action": "Scan a prompt for security threats",
      "description": "Scan user input/prompts for security threats"
    },
    {
      "name": "Response Scan",
      "value": "responseScan",
      "action": "Scan a response for policy violations",
      "description": "Scan AI-generated responses for policy violations"
    }
  ]

npm_readme:
  # Zscaler AI Guard n8n Community Node

  A production-ready n8n community node for integrating with the [Zscaler AI Guard](https://help.zscaler.com/ai-guard) API. This node enables you to scan AI prompts and responses for security threats — toxicity, PII, secrets, prompt injection, and more — directly within your n8n workflows.

  ## Features

  - **Prompt Scan** — Scan user input for security threats (direction: `IN`)
  - **Response Scan** — Scan AI-generated responses for policy violations (direction: `OUT`)
  - **Dual Scan** — Scan both prompt and response in sequence; if the prompt is blocked, the response scan is skipped
  - **Automatic Policy Resolution** — When no Policy ID is configured, the API resolves the policy linked to your API key
  - **Fail-Closed Error Handling** — On internal errors with "Continue On Fail" enabled, the node returns `action: BLOCK` so security is never silently bypassed
  - **Attribution Metadata** — Enriches output with n8n workflow context (`workflowId`, `workflowName`, `executionId`, `executionMode`)
  - **Content Size Validation** — Rejects payloads exceeding 5 MB before sending to the API
  - **Configurable Retries & Timeout** — Adjustable retry count (up to 6) and request timeout

  ## Installation

  ### Prerequisites

  - n8n instance (Cloud or self-hosted) — [Setup Docs](https://docs.n8n.io/hosting/installation/docker/)
  - A Zscaler AI Guard license and API key (Bearer token)

  ### Option 1: Install via n8n Community Nodes (Recommended)

  1. Open your n8n instance
  2. Go to **Settings → Community Nodes**
  3. Search for `@bdzscaler/n8n-nodes-aiguard`
  4. Click **Install**
  5. Restart n8n if prompted

  ### Option 2: Install via npm

  ```bash
  npm install @bdzscaler/n8n-nodes-aiguard
  ```

  ### Local Development

  ```bash
  git clone https://github.com/zscaler/n8n-nodes-aiguard.git
  cd n8n-nodes-aiguard
  npm install
  npm run build
  ```

  Link to a local n8n instance:

  ```bash
  # Native n8n
  ln -s $(pwd) ~/.n8n/custom/n8n-nodes-aiguard

  # Docker n8n — add a volume mount:
  # -v /path/to/n8n-nodes-aiguard:/home/node/.n8n/custom/n8n-nodes-aiguard
  ```

  Restart n8n to load the node.

  ## Configuration

  ### 1. Create Credentials

  1. In n8n, go to **Credentials** → **Add Credential**
  2. Search for **"Zscaler AI Guard API"**
  3. Fill in:

  | Field | Required | Description |
  |-------|:--------:|-------------|
  | **API Key** | Yes | Your Zscaler AI Guard API key (Bearer token) |
  | **Cloud** | Yes | Zscaler cloud for your tenancy (default: `us1`). Builds the URL `https://api.{cloud}.zseclipse.net` |
  | **Override URL** | No | Override the API base URL entirely. When set, the Cloud field is ignored. Equivalent to `AIGUARD_OVERRIDE_URL` in the [Python SDK](https://github.com/zscaler/zscaler-sdk-python) |
  | **Policy ID** | No | AI Guard policy ID. When set, uses `/v1/detection/execute-policy`. When empty, uses `/v1/detection/resolve-and-execute-policy` for automatic resolution |

  1. Click **Test** to validate connectivity before saving.

  ### 2. Add the Node to a Workflow

  1. In your workflow, click **+** → search for **"AI Guard"**
  2. Select the credential you created
  3. Choose an operation:

  | Operation | Direction | Description |
  |-----------|-----------|-------------|
  | **Prompt Scan** | `IN` | Scan user input/prompts for security threats |
  | **Response Scan** | `OUT` | Scan AI-generated responses for policy violations |
  | **Dual Scan** | `IN` then `OUT` | Scan both prompt and response; skips response scan if prompt is blocked |

  1. Enter content to scan (plain text or n8n expression)

  ### Additional Options

  Expand **Additional Options → Add Option** to configure:

  | Option | Default | Description |
  |--------|---------|-------------|
  | Policy ID Override | *(empty)* | Override the credential-level policy ID for this specific node |
  | Transaction ID | *(empty)* | Custom transaction ID for tracking; omitted from the request if empty |
  | Timeout (ms) | `30000` | Request timeout in milliseconds |
  | Max Retries | `3` | Retry attempts for failed requests (max: 6) |
  | AI Model | `n8n-integration` | AI model identifier included in output metadata |
  | Application Name | `n8n-workflow` | Application name for audit trails |
  | User ID | `n8n-user` | User identifier for audit trails |
  | Environment | *(empty)* | Environment tag (e.g. `production`) included in output metadata |

  ## API Endpoints

  | Scenario | Endpoint |
  |----------|----------|
  | Policy ID provided | `POST /v1/detection/execute-policy` |
  | No Policy ID (default) | `POST /v1/detection/resolve-and-execute-policy` |

  ## Usage Examples

  ### Prompt Scan

  Configure the node with **Operation: Prompt Scan** and provide content:

  ```json
  {
    "content": "Tell me how to bypass security controls"
  }
  ```

  ### Response Scan

  Configure with **Operation: Response Scan**:

  ```json
  {
    "content": "{{ $json.aiResponse }}"
  }
  ```

  ### Dual Scan

  Configure with **Operation: Dual Scan** and provide both fields:

  ```json
  {
    "promptContent": "{{ $json.userInput }}",
    "responseContent": "{{ $json.aiResponse }}"
  }
  ```

  If the prompt scan returns `BLOCK`, the response scan is skipped and the blocked result is returned immediately.

  ## Output Format

  The node returns the full AI Guard API response enriched with workflow metadata:

  ```json
  {
    "operation": "promptScan",
    "transactionId": "180b066d-48cf-497e-aaf1-a6b8e40a1deb",
    "action": "BLOCK",
    "severity": "CRITICAL",
    "direction": "IN",
    "policyId": 760,
    "policyName": "Default AI Guard Policy",
    "blocked": true,
    "detectors": ["toxicity", "malicious_content"],
    "blockingDetectors": ["toxicity"],
    "detectorResponses": {
      "toxicity": {
        "triggered": true,
        "action": "BLOCK",
        "severity": "CRITICAL"
      },
      "pii": {
        "triggered": false,
        "action": "ALLOW"
      }
    },
    "maskedContent": "...",
    "workflowId": "rKU3xnZb5S1ayJCG",
    "workflowName": "Customer Support Bot",
    "executionId": "385",
    "executionMode": "manual",
    "timestamp": "2026-01-30T10:30:00.000Z"
  }
  ```

  ### Key Output Fields

  | Field | Description |
  |-------|-------------|
  | `action` | Verdict: `ALLOW`, `BLOCK`, or `DETECT` |
  | `severity` | Severity level (e.g. `CRITICAL`, `HIGH`, `NONE`) |
  | `blocked` | Boolean convenience field (`true` when action is `BLOCK`) |
  | `detectors` | Array of triggered detector names |
  | `blockingDetectors` | Array of detectors that returned `BLOCK` |
  | `detectorResponses` | Per-detector results with trigger status, action, and severity |
  | `maskedContent` | Content with sensitive data masked (when applicable) |
  | `policyId` / `policyName` | The policy that was applied |
  | `transactionId` | Unique scan transaction identifier |

  Use the `action` or `blocked` field in an **IF** node to branch your workflow logic.

  ## Implementation Notes

  The node calls the Zscaler AI Guard API over HTTPS using n8n’s `helpers.httpRequest` (required for n8n Cloud–verified community packages). Headers match the [zscaler-sdk-python](https://github.com/zscaler/zscaler-sdk-python) pattern:

  - `Authorization: Bearer <API_KEY>`
  - `Content-Type: application/json`
  - `Accept: application/json`

  ## Error Handling

  - **Fail-closed by default**: When "Continue On Fail" is enabled in n8n, errors produce `{ action: "BLOCK", blocked: true }` rather than silently allowing content through
  - **Timeout protection**: Configurable per-request timeout (passed to the HTTP client)
  - **Content validation**: Payloads exceeding 5 MB are rejected before the API call
  - **Retry logic**: Configurable retry count (default 3, max 6) for transient failures

  ## Development

  ```bash
  npm run build       # Compile TypeScript and copy assets
  npm run dev         # Watch mode
  npm run lint        # ESLint (TypeScript + n8n-nodes-base)
  npm run lint:dist   # ESLint on dist/ (n8n Cloud rules; run after build)
  npm run scan:local  # build + ESLint (unpublished dist/; same rules as official scanner)
  npm run scan:npm    # npx @n8n/scan-community-package @…@version from package.json (needs publish)
  npm run lintfix     # Auto-fix lint issues
  npm run format      # Run Prettier
  npm test            # Run Jest tests
  npm run test:coverage  # Tests with coverage report
  ```

  ### Validate like the n8n Creator Portal

  n8n’s official tool is **`@n8n/scan-community-package`**. It **downloads the package from the npm registry** and runs ESLint with the same rules the Creator Portal uses. It **never** reads your local git tree.

  Use **both** of these, at different times:

  | Command | When to use |
  |--------|-------------|
  | **`npm run scan:local`** | Before publish: builds `dist/` and runs the **same ESLint config** the scanner uses (`eslint.community.config.mjs`). This is what CI runs as `lint:dist`. |
  | **`npm run scan:npm`** | After that **exact `version` in `package.json` exists on npm**: runs `npx @n8n/scan-community-package <name>@<version>`. Confirms the **published tarball** matches what the Portal checks. |

  ```bash
  # Unpublished changes (day to day)
  npm run scan:local

  # After npm publish of the current package.json version
  npm run scan:npm
  ```

  You can also call the CLI directly, for example `npx @n8n/scan-community-package @bdzscaler/n8n-nodes-aiguard@0.1.2`. If the version is **not** on the registry yet, the download step fails—that is expected; use **`scan:local`** until it is published.

  ## Releasing (maintainers)

  Releases are automated with [semantic-release](https://github.com/semantic-release/semantic-release) (see `.releaserc.json`), similar to [zscaler-mcp-server](https://github.com/zscaler/zscaler-mcp-server).

  - **Version and tag**: After the **first** git tag exists, the next version is computed from [Conventional Commits](https://www.conventionalcommits.org/) (for example `fix:` → patch, `feat:` → minor) and bumps from that last tag. semantic-release updates `package.json` and `package-lock.json`, creates tag `vX.Y.Z`, opens a **GitHub Release**, and publishes to npm with **provenance** (requires `NPM_TOKEN` in repository secrets).
  - **0.x packages — read this**: If there are **no** `vMAJOR.MINOR.PATCH` tags on the branch yet, semantic-release’s **first** automated release is **always `1.0.0`** ([`FIRST_RELEASE` in semantic-release](https://github.com/semantic-release/semantic-release/blob/master/lib/get-next-version.js)) — it does **not** seed from `package.json` (e.g. `0.1.2`). **Before the first successful release workflow**, create and push tags for versions already published to npm, e.g. `git tag v0.1.0 <commit>` … `git tag v0.1.2 <commit>` then `git push origin --tags`. The Release workflow includes a guard that **fails** if `package.json` is still `0.x` but there are no such tags.
  - **Pre-release checks**: The **Release** workflow runs `npm audit`, build, Prettier, ESLint (including `lint:dist`, which mirrors the n8n Creator Portal scanner rules), and Jest before any publish.
  - **Prerelease channels**: Pushes to branches `beta` or `alpha` publish npm prereleases (for example `1.0.0-beta.1`) on the corresponding dist-tag.
  - **If `1.0.0` was published by mistake**: npm generally does not allow unpublishing popular packages; you can **deprecate** `1.0.0` with an explanation, then either stay on the `1.x` line or coordinate a git/npm cleanup (remove erroneous tag/release, restore `v0.1.x` tags at the right commits, revert the `chore(release): 1.0.0` commit if policy allows) and publish **`0.1.3`** as the next intended 0.x release. There is no single-button undo — pick the line (`0.x` vs `1.x`) and document it for consumers.

  ## Security

  - API keys are stored encrypted via n8n's credential system
  - No content is logged or persisted by the node
  - All communication uses HTTPS/TLS
  - Error messages do not leak sensitive information

  ## Links

  - npm: <https://www.npmjs.com/package/@bdzscaler/n8n-nodes-aiguard>
  - Source: <https://github.com/zscaler/n8n-nodes-aiguard>
  - Zscaler AI Guard: <https://help.zscaler.com/ai-guard>
  - Zscaler Python SDK: <https://github.com/zscaler/zscaler-sdk-python>

  ## License

  MIT — see [LICENSE](LICENSE) for details.

  ## Contributing

  1. Fork the repository
  2. Create a feature branch from `main`
  3. Test thoroughly against the AI Guard API
  4. Ensure `npm run build`, `npm run lint`, `npm run lint:dist`, and `npm test` pass
  5. Use conventional commit messages (`fix:`, `feat:`, etc.) so releases version correctly
  6. Submit a pull request

ai_documentation_summary:
  {"purpose":"Scans AI prompts and responses for security threats such as toxicity, PII, secrets, and prompt injection using the Zscaler AI Guard API within n8n workflows.","capabilities":["Prompt Scan","Response Scan","Dual Scan","Automatic Policy Resolution","Fail-Closed Error Handling","Attribution Metadata Enrichment","Content Size Validation","Configurable Retries and Timeout"],"authentication":"API key required (Bearer token)","commonUseCases":["Filtering malicious user inputs before they reach an AI model","Detecting policy violations in AI-generated responses","Implementing a dual-layer security check for chatbots","Blocking prompts containing secrets or PII"],"limitations":["Content payloads exceeding 5 MB are rejected before API submission","Maximum retry attempts are capped at 6","Default request timeout is 30 seconds"],"relatedNodes":[]}


node_type: @chatarchitect/n8n-nodes-chatarchitectcom-for-whatsapp.chatArchitectWhatsApp
package_name: @chatarchitect/n8n-nodes-chatarchitectcom-for-whatsapp
display_name: ChatArchitect WhatsApp
description: ChatArchitect WhatsApp integration
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: chatarchitect
author_github_url: https://github.com/ChatArchitect/n8n-nodes-chatarchitectcom-for-whatsapp.git
npm_package_name: @chatarchitect/n8n-nodes-chatarchitectcom-for-whatsapp
npm_version: 0.0.34
community_fetched_at: 2026-07-14T14:40:33.844Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "Send Text",
          "value": "sendText",
          "action": "Send a text message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendImage",
      "options": [
        {
          "name": "Send Image",
          "value": "sendImage",
          "action": "Send an image"
        },
        {
          "name": "Send Video",
          "value": "sendVideo",
          "action": "Send a video"
        },
        {
          "name": "Send Audio",
          "value": "sendAudio",
          "action": "Send an audio file"
        },
        {
          "name": "Send Document",
          "value": "sendDocument",
          "action": "Send a document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "set",
      "options": [
        {
          "name": "Set Webhook",
          "value": "set",
          "action": "Set a webhook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Text",
      "value": "sendText",
      "action": "Send a text message",
      "resource": "message"
    },
    {
      "name": "Send Image",
      "value": "sendImage",
      "action": "Send an image",
      "resource": "media"
    },
    {
      "name": "Send Video",
      "value": "sendVideo",
      "action": "Send a video",
      "resource": "media"
    },
    {
      "name": "Send Audio",
      "value": "sendAudio",
      "action": "Send an audio file",
      "resource": "media"
    },
    {
      "name": "Send Document",
      "value": "sendDocument",
      "action": "Send a document",
      "resource": "media"
    },
    {
      "name": "Set Webhook",
      "value": "set",
      "action": "Set a webhook",
      "resource": "webhook"
    }
  ]

npm_readme:
  # n8n-nodes-chatarchitectcom-for-whatsapp

  The application integrates the official WhatsApp Business API into your n8n.

  Incoming and outgoing messages, media, buttons, also you can initiate a conversation.

  The cost of WhatsApp Business API starts from €15 per month, for more details visit the website https://www.chatarchitect.com/whatsapp/

  1 month free trial, to connect and receive a key, you can write to our WhatsApp https://wa.me/421233221242

ai_documentation_summary:
  {"purpose":"Integrates the official WhatsApp Business API into n8n to handle incoming and outgoing messages, media, buttons, and conversation initiation.","capabilities":["Send incoming messages","Receive outgoing messages","Handle media files","Manage interactive buttons","Initiate new conversations"],"authentication":"API key required","commonUseCases":["Automated customer support via WhatsApp","Sending promotional media and buttons","Triggering outbound conversations based on workflow events"],"limitations":["Requires a paid WhatsApp Business API subscription (starting at €15/month)","Free trial requires manual contact via WhatsApp to obtain credentials"],"relatedNodes":[]}


node_type: n8n-nodes-one-horizon.oneHorizon
package_name: n8n-nodes-one-horizon
display_name: One Horizon
description: Run One Horizon MCP tools from n8n
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: tijnvdaelen
author_github_url: https://github.com/onehorizonai/
npm_package_name: n8n-nodes-one-horizon
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.846Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "listPlannedWork",
      "options": [
        {
          "name": "Create Initiative",
          "value": "createInitiative"
        },
        {
          "name": "Create Todo",
          "value": "createTodo"
        },
        {
          "name": "Find Team Member",
          "value": "findTeamMember"
        },
        {
          "name": "List Blockers",
          "value": "listBlockers"
        },
        {
          "name": "List Bugs",
          "value": "listBugs"
        },
        {
          "name": "List Completed Work",
          "value": "listCompletedWork"
        },
        {
          "name": "List Initiatives",
          "value": "listInitiatives"
        },
        {
          "name": "List My Teams",
          "value": "listMyTeams"
        },
        {
          "name": "List Planned Work",
          "value": "listPlannedWork"
        },
        {
          "name": "My Work Recap",
          "value": "myWorkRecap"
        },
        {
          "name": "Raw Tool Call",
          "value": "rawToolCall"
        },
        {
          "name": "Report Bug",
          "value": "reportBug"
        },
        {
          "name": "Team Work Recap",
          "value": "teamWorkRecap"
        },
        {
          "name": "Update Bug",
          "value": "updateBug"
        },
        {
          "name": "Update Initiative",
          "value": "updateInitiative"
        },
        {
          "name": "Update Todo",
          "value": "updateTodo"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Initiative",
      "value": "createInitiative"
    },
    {
      "name": "Create Todo",
      "value": "createTodo"
    },
    {
      "name": "Find Team Member",
      "value": "findTeamMember"
    },
    {
      "name": "List Blockers",
      "value": "listBlockers"
    },
    {
      "name": "List Bugs",
      "value": "listBugs"
    },
    {
      "name": "List Completed Work",
      "value": "listCompletedWork"
    },
    {
      "name": "List Initiatives",
      "value": "listInitiatives"
    },
    {
      "name": "List My Teams",
      "value": "listMyTeams"
    },
    {
      "name": "List Planned Work",
      "value": "listPlannedWork"
    },
    {
      "name": "My Work Recap",
      "value": "myWorkRecap"
    },
    {
      "name": "Raw Tool Call",
      "value": "rawToolCall"
    },
    {
      "name": "Report Bug",
      "value": "reportBug"
    },
    {
      "name": "Team Work Recap",
      "value": "teamWorkRecap"
    },
    {
      "name": "Update Bug",
      "value": "updateBug"
    },
    {
      "name": "Update Initiative",
      "value": "updateInitiative"
    },
    {
      "name": "Update Todo",
      "value": "updateTodo"
    }
  ]

npm_readme:
  # n8n-nodes-one-horizon

  Certified-ready n8n community node for [One Horizon](https://onehorizon.ai), powered by One Horizon's MCP endpoint.

  This package provides:
  - Typed operations for the most-used One Horizon workflows
  - OAuth2 authentication with dynamic client registration
  - A `Raw Tool Call` operation for full MCP tool coverage

  ## Installation

  ### n8n Cloud (verified community node path)
  1. Open **Nodes** in n8n.
  2. Search for **One Horizon**.
  3. Install the verified package.

  ### n8n Self-Hosted
  Install in your n8n environment:

  ```bash
  npm install n8n-nodes-one-horizon
  ```

  Then restart n8n so the node is discovered.

  ## Credentials

  Use the credential type **One Horizon MCP OAuth2 API**.

  Default MCP endpoint:

  ```text
  https://mcp.onehorizon.ai/mcp
  ```

  Authentication uses One Horizon OAuth. On first use, n8n opens the consent flow.

  ## Typed Operations

  - `List Planned Work` -> `list-planned-work`
  - `List Completed Work` -> `list-completed-work`
  - `List Blockers` -> `list-blockers`
  - `My Work Recap` -> `my-work-recap`
  - `Team Work Recap` -> `team-work-recap`
  - `Create Todo` -> `create-todo`
  - `Update Todo` -> `update-todo`
  - `List Initiatives` -> `list-initiatives`
  - `Create Initiative` -> `create-initiative`
  - `Update Initiative` -> `update-initiative`
  - `List Bugs` -> `list-bugs`
  - `Report Bug` -> `report-bug`
  - `Update Bug` -> `update-bug`
  - `List My Teams` -> `list-my-teams`
  - `Find Team Member` -> `find-team-member`
  - `Raw Tool Call` -> any MCP tool via `tools/call`

  ## Raw Tool Call

  Use this operation when:
  - You need an MCP tool not yet exposed as a typed operation
  - You want to pass full custom JSON arguments

  `Raw Tool Name` supports:
  - Searchable dropdown (hydrated from MCP `tools/list`)
  - Manual ID entry

  ## Output Format

  Each execution item returns:
  - `operation` and `toolName`
  - `toolArguments`
  - `isError`
  - `text` (joined text blocks, when available)
  - `content` (structured MCP content array)
  - `rawResult`

  ## Example Workflows

  ### 1. Daily personal recap
  - Trigger: Cron (08:30 local)
  - Node: One Horizon -> `My Work Recap`
  - Follow-up: send to Slack/Email

  ### 2. Auto-log completed work
  - Trigger: External event/webhook
  - Node: One Horizon -> `Create Todo`
  - Params: `status=Completed`, `topic=API`

  ### 3. Team blocker digest
  - Trigger: Cron (weekday afternoon)
  - Node: One Horizon -> `List Blockers`
  - Optional: set `teamId`
  - Follow-up: summarize and post to team channel

  ## Error Handling

  Common failures:
  - `401/403`: credential expired or insufficient access
  - `429`: rate limiting upstream
  - Validation errors: missing required tool arguments

  The node surfaces MCP error details in the execution error output.

  ## Development

  ```bash
  npm ci
  npm run lint
  npm run build
  ```

  Run local n8n with hot reload:

  ```bash
  npm run dev
  ```

  ## Verification and Release

  ### CI checks
  - `npm run lint`
  - `npm run build`
  - `scan-community-package` (after publish)

  ### Publish with provenance
  Publishing is handled by GitHub Actions and uses npm provenance (`--provenance`).

  ### Submit for n8n verification
  Submit the package through the n8n Creator workflow after:
  - Package is publicly available on npm
  - Source repository is public and matches published package
  - Docs and examples are complete

  ## Security and Scope

  - The node does not use local filesystem access
  - The node does not use environment-variable-based runtime behavior
  - Access is scoped to the authenticated One Horizon user

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Connects n8n workflows to One Horizon's MCP endpoint to manage work items, initiatives, bugs, and team data through typed operations and raw tool calls.","capabilities":["List planned work","List completed work","List blockers","Generate my work recap","Generate team work recap","Create todo","Update todo","List initiatives","Create initiative","Update initiative"],"authentication":"OAuth2 with dynamic client registration","commonUseCases":["Automated daily personal work recaps","Auto-logging completed work as todos","Generating team blocker digests"],"limitations":["Requires One Horizon OAuth credentials","Subject to upstream rate limiting (429 errors)","Access is scoped strictly to the authenticated One Horizon user"],"relatedNodes":[]}


node_type: @gptmaker/n8n-nodes-gptmaker.gptMaker
package_name: @gptmaker/n8n-nodes-gptmaker
display_name: GPTMaker
description: Consume GPTMaker API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: arquitetura-gptmaker
author_github_url: https://github.com/irrahgroup/delaware-wilmington.git
npm_package_name: @gptmaker/n8n-nodes-gptmaker
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:33.848Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Intention",
          "value": "intention"
        },
        {
          "name": "Interaction",
          "value": "interaction"
        },
        {
          "name": "Training",
          "value": "training"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Activate",
          "value": "activate",
          "action": "Activate an agent",
          "description": "Set an agent status to active via PUT /v2/agent/{agentId}/active"
        },
        {
          "name": "Add Context",
          "value": "addMessage",
          "action": "Add context to an agent",
          "description": "Add conversation context via POST /v2/agent/{agentId}/add-message"
        },
        {
          "name": "Conversation",
          "value": "conversation",
          "action": "Talk to an agent",
          "description": "Chat with an agent via POST /v2/agent/{agentId}/conversation"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an agent",
          "description": "Create a new agent via POST /v2/workspace/{workspaceId}/agents"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an agent",
          "description": "Permanently remove an agent via DELETE /v2/agent/{agentId}"
        },
        {
          "name": "Get By ID",
          "value": "getById",
          "action": "Get an agent",
          "description": "Fetch a single agent via GET /v2/agent/{agentId}"
        },
        {
          "name": "Get Credits Spent",
          "value": "getCreditsSpent",
          "action": "Get agent credits spent",
          "description": "Retrieve credits spent via GET /v2/agent/{agentId}/credits-spent"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List agents in a workspace",
          "description": "Retrieve agents for a workspace via GET /v2/workspace/{workspaceId}/agents"
        },
        {
          "name": "Get Settings",
          "value": "getSettings",
          "action": "Get agent settings",
          "description": "Retrieve agent settings via GET /v2/agent/{agentId}/settings"
        },
        {
          "name": "Get Webhooks",
          "value": "getWebhooks",
          "action": "Get agent webhooks",
          "description": "List all webhooks configured for an agent via GET /v2/agent/{agentId}/webhooks"
        },
        {
          "name": "Inactivate",
          "value": "inactivate",
          "action": "Inactivate an agent",
          "description": "Set an agent status to inactive via PUT /v2/agent/{agentId}/inactive"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an agent",
          "description": "Edit an agent via PUT /v2/agent/{agentId}"
        },
        {
          "name": "Update Settings",
          "value": "updateSettings",
          "action": "Update agent settings",
          "description": "Update agent settings via PUT /v2/agent/{agentId}/settings"
        },
        {
          "name": "Update Webhooks",
          "value": "updateWebhooks",
          "action": "Update agent webhooks",
          "description": "Update webhooks via PUT /v2/agent/{agentId}/webhooks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a channel",
          "description": "Create a new channel for an agent via POST /v2/agent/{agentId}/create-channel"
        },
        {
          "name": "Create In Workspace",
          "value": "createInWorkspace",
          "action": "Create a channel in a workspace",
          "description": "Create a new channel in a workspace via POST /v2/workspace/{workspaceId}/create-channel"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a channel",
          "description": "Remove a channel via DEL /v2/channel/{channelId}"
        },
        {
          "name": "Get Config",
          "value": "getConfig",
          "action": "Get channel config",
          "description": "Get channel config via GET /v2/channel/{channelId}/config"
        },
        {
          "name": "List By Workspace",
          "value": "getAllByWorkspace",
          "action": "List channels in a workspace",
          "description": "List channels via GET /v2/workspace/{workspaceId}/channels"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a channel",
          "description": "Edit a channel via PUT /v2/channel/{channelId}"
        },
        {
          "name": "Update Config",
          "value": "updateConfig",
          "action": "Update channel config",
          "description": "Update channel config via PUT /v2/channel/{channelId}/config"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete Chat",
          "value": "deleteChat",
          "action": "Delete chat",
          "description": "Delete a chat (DELETE /v2/chat/{chatId})"
        },
        {
          "name": "Delete Message",
          "value": "deleteMessage",
          "action": "Delete message",
          "description": "Delete a message (DELETE /v2/chat/{chatId}/message/{messageId})"
        },
        {
          "name": "Delete Messages",
          "value": "deleteMessages",
          "action": "Delete messages",
          "description": "Clear messages from a chat (DELETE /v2/chat/{chatId}/messages)"
        },
        {
          "name": "Edit Message",
          "value": "editMessage",
          "action": "Edit message",
          "description": "Edit a message (PUT /v2/chat/{chatId}/message/{messageId})"
        },
        {
          "name": "End Human Support",
          "value": "endHumanSupport",
          "action": "End human support",
          "description": "End human support (PUT /v2/chat/{chatId}/stop-human)"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List chats",
          "description": "List workspace chats (GET /v2/workspace/{workspaceId}/chats)"
        },
        {
          "name": "List Messages",
          "value": "getMessages",
          "action": "List messages",
          "description": "List chat messages (GET /v2/chat/{chatId}/messages)"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send message",
          "description": "Send a new message to the chat (POST /v2/chat/{chatId}/send-message)"
        },
        {
          "name": "Take Over Support",
          "value": "takeOverSupport",
          "action": "Take over support",
          "description": "Mark that a human will take over the support (PUT /v2/chat/{chatId}/start-human)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllByWorkspace",
      "options": [
        {
          "name": "List Interactions",
          "value": "getAllByWorkspace",
          "action": "List interactions in a workspace",
          "description": "GET /v2/workspace/{workspaceId}/interactions"
        },
        {
          "name": "Delete Interaction",
          "value": "delete",
          "action": "Delete an interaction",
          "description": "DELETE /v2/interaction/{ID}"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "interaction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List intentions",
          "description": "List agent intentions via GET /v2/agent/{agentId}/intentions"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an intention",
          "description": "Create an intention via POST /v2/agent/{agentId}/intentions"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an intention",
          "description": "Update an intention via PUT /v2/intention/{intentionId}"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an intention",
          "description": "Delete an intention via DELETE /v2/intention/{intentionId}"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "intention"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a training",
          "description": "Add a new training via POST /v2/agent/{agentId}/trainings"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List trainings",
          "description": "List trainings via GET /v2/agent/{agentId}/trainings"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a training",
          "description": "Update a training via PUT /v2/training/{trainingId} (TEXT only)"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a training",
          "description": "Delete a training via DELETE /v2/training/{trainingId}"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "training"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List all workspaces",
          "description": "Retrieve many workspaces via GET /v2/workspaces"
        },
        {
          "name": "Get Credits Balance",
          "value": "getCredits",
          "action": "Get workspace credits balance",
          "description": "Retrieve workspace credits via GET /v2/workspace/{workspaceId}/credits"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Activate",
      "value": "activate",
      "action": "Activate an agent",
      "description": "Set an agent status to active via PUT /v2/agent/{agentId}/active",
      "resource": "agent"
    },
    {
      "name": "Add Context",
      "value": "addMessage",
      "action": "Add context to an agent",
      "description": "Add conversation context via POST /v2/agent/{agentId}/add-message",
      "resource": "agent"
    },
    {
      "name": "Conversation",
      "value": "conversation",
      "action": "Talk to an agent",
      "description": "Chat with an agent via POST /v2/agent/{agentId}/conversation",
      "resource": "agent"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an agent",
      "description": "Create a new agent via POST /v2/workspace/{workspaceId}/agents",
      "resource": "agent"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an agent",
      "description": "Permanently remove an agent via DELETE /v2/agent/{agentId}",
      "resource": "agent"
    },
    {
      "name": "Get By ID",
      "value": "getById",
      "action": "Get an agent",
      "description": "Fetch a single agent via GET /v2/agent/{agentId}",
      "resource": "agent"
    },
    {
      "name": "Get Credits Spent",
      "value": "getCreditsSpent",
      "action": "Get agent credits spent",
      "description": "Retrieve credits spent via GET /v2/agent/{agentId}/credits-spent",
      "resource": "agent"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List agents in a workspace",
      "description": "Retrieve agents for a workspace via GET /v2/workspace/{workspaceId}/agents",
      "resource": "agent"
    },
    {
      "name": "Get Settings",
      "value": "getSettings",
      "action": "Get agent settings",
      "description": "Retrieve agent settings via GET /v2/agent/{agentId}/settings",
      "resource": "agent"
    },
    {
      "name": "Get Webhooks",
      "value": "getWebhooks",
      "action": "Get agent webhooks",
      "description": "List all webhooks configured for an agent via GET /v2/agent/{agentId}/webhooks",
      "resource": "agent"
    },
    {
      "name": "Inactivate",
      "value": "inactivate",
      "action": "Inactivate an agent",
      "description": "Set an agent status to inactive via PUT /v2/agent/{agentId}/inactive",
      "resource": "agent"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an agent",
      "description": "Edit an agent via PUT /v2/agent/{agentId}",
      "resource": "agent"
    },
    {
      "name": "Update Settings",
      "value": "updateSettings",
      "action": "Update agent settings",
      "description": "Update agent settings via PUT /v2/agent/{agentId}/settings",
      "resource": "agent"
    },
    {
      "name": "Update Webhooks",
      "value": "updateWebhooks",
      "action": "Update agent webhooks",
      "description": "Update webhooks via PUT /v2/agent/{agentId}/webhooks",
      "resource": "agent"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a channel",
      "description": "Create a new channel for an agent via POST /v2/agent/{agentId}/create-channel",
      "resource": "channel"
    },
    {
      "name": "Create In Workspace",
      "value": "createInWorkspace",
      "action": "Create a channel in a workspace",
      "description": "Create a new channel in a workspace via POST /v2/workspace/{workspaceId}/create-channel",
      "resource": "channel"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a channel",
      "description": "Remove a channel via DEL /v2/channel/{channelId}",
      "resource": "channel"
    },
    {
      "name": "Get Config",
      "value": "getConfig",
      "action": "Get channel config",
      "description": "Get channel config via GET /v2/channel/{channelId}/config",
      "resource": "channel"
    },
    {
      "name": "List By Workspace",
      "value": "getAllByWorkspace",
      "action": "List channels in a workspace",
      "description": "List channels via GET /v2/workspace/{workspaceId}/channels",
      "resource": "channel"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a channel",
      "description": "Edit a channel via PUT /v2/channel/{channelId}",
      "resource": "channel"
    },
    {
      "name": "Update Config",
      "value": "updateConfig",
      "action": "Update channel config",
      "description": "Update channel config via PUT /v2/channel/{channelId}/config",
      "resource": "channel"
    },
    {
      "name": "Delete Chat",
      "value": "deleteChat",
      "action": "Delete chat",
      "description": "Delete a chat (DELETE /v2/chat/{chatId})",
      "resource": "chat"
    },
    {
      "name": "Delete Message",
      "value": "deleteMessage",
      "action": "Delete message",
      "description": "Delete a message (DELETE /v2/chat/{chatId}/message/{messageId})",
      "resource": "chat"
    },
    {
      "name": "Delete Messages",
      "value": "deleteMessages",
      "action": "Delete messages",
      "description": "Clear messages from a chat (DELETE /v2/chat/{chatId}/messages)",
      "resource": "chat"
    },
    {
      "name": "Edit Message",
      "value": "editMessage",
      "action": "Edit message",
      "description": "Edit a message (PUT /v2/chat/{chatId}/message/{messageId})",
      "resource": "chat"
    },
    {
      "name": "End Human Support",
      "value": "endHumanSupport",
      "action": "End human support",
      "description": "End human support (PUT /v2/chat/{chatId}/stop-human)",
      "resource": "chat"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List chats",
      "description": "List workspace chats (GET /v2/workspace/{workspaceId}/chats)",
      "resource": "chat"
    },
    {
      "name": "List Messages",
      "value": "getMessages",
      "action": "List messages",
      "description": "List chat messages (GET /v2/chat/{chatId}/messages)",
      "resource": "chat"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send message",
      "description": "Send a new message to the chat (POST /v2/chat/{chatId}/send-message)",
      "resource": "chat"
    },
    {
      "name": "Take Over Support",
      "value": "takeOverSupport",
      "action": "Take over support",
      "description": "Mark that a human will take over the support (PUT /v2/chat/{chatId}/start-human)",
      "resource": "chat"
    },
    {
      "name": "List Interactions",
      "value": "getAllByWorkspace",
      "action": "List interactions in a workspace",
      "description": "GET /v2/workspace/{workspaceId}/interactions",
      "resource": "interaction"
    },
    {
      "name": "Delete Interaction",
      "value": "delete",
      "action": "Delete an interaction",
      "description": "DELETE /v2/interaction/{ID}",
      "resource": "interaction"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List intentions",
      "description": "List agent intentions via GET /v2/agent/{agentId}/intentions",
      "resource": "intention"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an intention",
      "description": "Create an intention via POST /v2/agent/{agentId}/intentions",
      "resource": "intention"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an intention",
      "description": "Update an intention via PUT /v2/intention/{intentionId}",
      "resource": "intention"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an intention",
      "description": "Delete an intention via DELETE /v2/intention/{intentionId}",
      "resource": "intention"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a training",
      "description": "Add a new training via POST /v2/agent/{agentId}/trainings",
      "resource": "training"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List trainings",
      "description": "List trainings via GET /v2/agent/{agentId}/trainings",
      "resource": "training"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a training",
      "description": "Update a training via PUT /v2/training/{trainingId} (TEXT only)",
      "resource": "training"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a training",
      "description": "Delete a training via DELETE /v2/training/{trainingId}",
      "resource": "training"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List all workspaces",
      "description": "Retrieve many workspaces via GET /v2/workspaces",
      "resource": "workspace"
    },
    {
      "name": "Get Credits Balance",
      "value": "getCredits",
      "action": "Get workspace credits balance",
      "description": "Retrieve workspace credits via GET /v2/workspace/{workspaceId}/credits",
      "resource": "workspace"
    }
  ]

npm_readme:
  # @gptmaker/n8n-nodes-gptmaker

  Community node for the GPTMaker API.

  Repository: https://github.com/irrahgroup/delaware-wilmington

  ## Features

  - Native n8n resource/operation structure
  - Bearer token authentication
  - Dynamic dropdowns for Workspace and Agent
  - Support for Workspace, Agent, Channel, Chat, Intention, Interaction, and Training resources
  - Compatible with manual execution and multi-item workflows

  ## Supported Resources

  ### Workspace
  - Get many workspaces
  - Get workspace credits balance

  ### Agent
  - Create, get, update, delete, activate, inactivate
  - Conversation and context message actions
  - Get credits spent
  - Get/update settings
  - Get/update webhooks

  ### Channel
  - Create in agent or workspace context
  - Get many by workspace
  - Update/delete channel
  - Get/update channel config

  ### Chat
  - Get many chats by workspace
  - List messages
  - Send/edit/delete message
  - Delete chat messages
  - Delete chat
  - Start/stop human support

  ### Intention
  - List
  - Create
  - Update
  - Delete

  ### Interaction
  - List by workspace
  - Delete

  ### Training
  - Create
  - Get many
  - Update (TEXT)
  - Delete

  ## Authentication

  This node uses one credential:

  - GPTMaker API
    - API Token

  Token setup guide (official docs):

  - https://developer.gptmaker.ai/api-reference/introduction#autentica%C3%A7%C3%A3o

  Credential setup flow in n8n:

  1. Create a new `GPTMaker API` credential.
  2. Paste your GPTMaker API token into `API Token`.
  3. Save and test the credential.

  ## Installation

  ```bash
  npm install @gptmaker/n8n-nodes-gptmaker
  ```

  Restart n8n after installation.

  ## Example Workflow

  A sanitized workflow example is included at the project root:

  - `workflow-example-gptmaker.json`

  Use this file as a base for Creator Portal submission and internal QA.

  ## Publishing

  Current release strategy: manual publish.

  ```bash
  npm run lint
  npm run build
  npm publish --access public
  ```

  Provenance-ready workflow is included for GitHub Actions:

  - `.github/workflows/publish-provenance.yml`

  It uses `npm publish --provenance --access public` and requires `NPM_TOKEN` in repository secrets.

  ## Development

  ```bash
  npm run build
  npm run dev
  npm run lint
  ```

  Project structure:

  - `nodes/GptMaker/GptMaker.node.ts`: main node definition
  - `nodes/GptMaker/GptMakerApi.credentials.ts`: credential definition
  - `nodes/GptMaker/descriptions/`: node fields and operations
  - `nodes/GptMaker/resources/`: execution logic
  - `nodes/GptMaker/Helpers.ts`: shared API request helper

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Connects n8n workflows to the GPTMaker API to manage AI agents, workspaces, chats, and training data.","capabilities":["Manage workspaces and check credit balances","Create, update, and delete AI agents","Manage agent settings and webhooks","Handle conversation contexts and messages","Create and configure communication channels","Send, edit, and delete chat messages","Start or stop human support in chats","Manage intentions (list, create, update, delete)","List and delete interactions","Create, update, and delete training data"],"authentication":"API key required (Bearer token)","commonUseCases":["Automated customer support chatbots","Dynamic agent provisioning and management","Automated training data ingestion","Multi-channel communication orchestration"],"limitations":[],"relatedNodes":[]}


node_type: @base64ai/n8n-nodes-base64ai.base64ai
package_name: @base64ai/n8n-nodes-base64ai
display_name: Base64 Document AI
description: All-in-one AI solution for document understanding
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: mbc_base64ai
author_github_url: https://github.com/base64ai/n8n-nodes-base64ai.git
npm_package_name: @base64ai/n8n-nodes-base64ai
npm_version: 2.0.2
community_fetched_at: 2026-07-14T14:40:33.850Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Face",
          "value": "face"
        },
        {
          "name": "Flow",
          "value": "flow"
        },
        {
          "name": "Result",
          "value": "result"
        },
        {
          "name": "Signature",
          "value": "signature"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "recognizeDocument",
      "options": [
        {
          "name": "Recognize Document",
          "value": "recognizeDocument",
          "action": "Recognize a document",
          "description": "Recognize a document by URL or binary data"
        },
        {
          "name": "Recognize Document Async",
          "value": "recognizeDocumentAsync",
          "action": "Recognize a document asynchronously",
          "description": "Start an asynchronous document recognition job by uploading a document or URL"
        },
        {
          "name": "Get Async Scan Result",
          "value": "getAsyncScanResult",
          "action": "Get async scan result",
          "description": "Fetch the status or result of a previously created async scan job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "recognizeSignature",
      "options": [
        {
          "name": "Recognize Signature",
          "value": "recognizeSignature",
          "action": "Recognize a signature",
          "description": "Recognize a signature from a single image"
        },
        {
          "name": "Verify Signature",
          "value": "verifySignature",
          "action": "Verify a signature",
          "description": "Verify a signature by comparing two images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "signature"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "recognizeFace",
      "options": [
        {
          "name": "Recognize Face",
          "value": "recognizeFace",
          "action": "Recognize a face",
          "description": "Recognize a face from a single image"
        },
        {
          "name": "Verify Face",
          "value": "verifyFace",
          "action": "Verify a face",
          "description": "Verify a face by comparing two images"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "face"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFlows",
      "options": [
        {
          "name": "List Flows",
          "value": "listFlows",
          "action": "List flows",
          "description": "Retrieve all flows configured in your Base64.ai account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "flow"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getFlowResults",
      "options": [
        {
          "name": "Get Flow Results",
          "value": "getFlowResults",
          "action": "Get flow results",
          "description": "Retrieve results created by the specified flow"
        },
        {
          "name": "Get Result by UUID",
          "value": "getResultByUuid",
          "action": "Get result by UUID",
          "description": "Fetch a single result using its UUID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "result"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Recognize Document",
      "value": "recognizeDocument",
      "action": "Recognize a document",
      "description": "Recognize a document by URL or binary data",
      "resource": "document"
    },
    {
      "name": "Recognize Document Async",
      "value": "recognizeDocumentAsync",
      "action": "Recognize a document asynchronously",
      "description": "Start an asynchronous document recognition job by uploading a document or URL",
      "resource": "document"
    },
    {
      "name": "Get Async Scan Result",
      "value": "getAsyncScanResult",
      "action": "Get async scan result",
      "description": "Fetch the status or result of a previously created async scan job",
      "resource": "document"
    },
    {
      "name": "Recognize Signature",
      "value": "recognizeSignature",
      "action": "Recognize a signature",
      "description": "Recognize a signature from a single image",
      "resource": "signature"
    },
    {
      "name": "Verify Signature",
      "value": "verifySignature",
      "action": "Verify a signature",
      "description": "Verify a signature by comparing two images",
      "resource": "signature"
    },
    {
      "name": "Recognize Face",
      "value": "recognizeFace",
      "action": "Recognize a face",
      "description": "Recognize a face from a single image",
      "resource": "face"
    },
    {
      "name": "Verify Face",
      "value": "verifyFace",
      "action": "Verify a face",
      "description": "Verify a face by comparing two images",
      "resource": "face"
    },
    {
      "name": "List Flows",
      "value": "listFlows",
      "action": "List flows",
      "description": "Retrieve all flows configured in your Base64.ai account",
      "resource": "flow"
    },
    {
      "name": "Get Flow Results",
      "value": "getFlowResults",
      "action": "Get flow results",
      "description": "Retrieve results created by the specified flow",
      "resource": "result"
    },
    {
      "name": "Get Result by UUID",
      "value": "getResultByUuid",
      "action": "Get result by UUID",
      "description": "Fetch a single result using its UUID",
      "resource": "result"
    }
  ]

npm_readme:
  # Base64.ai n8n Community Node

  Use [Base64.ai](https://base64.ai) directly from your n8n workflows to automate document processing, identity verification, and biometric checks without writing glue code. This package exposes the public Base64.ai API as an installable community node.

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

  ## Installation

  1. Open your n8n instance and go to **Settings → Community Nodes**.
  2. Click **Install**, enter `@base64ai/n8n-nodes-base64ai`, and confirm the warning.
  3. Restart n8n if prompted.

  Alternatively, install via command line inside your n8n deployment directory:

  ```bash
  npm install @base64ai/n8n-nodes-base64ai
  ```

  ## Authentication

  The node authenticates with your Base64.ai **email** and **API key**.

  1. Sign in at [Base64.ai Console](https://app.base64.ai) and create an API key under **Settings → API Keys**.
  2. Copy the email associated with your workspace (usually the same email you use to log in).
  3. In n8n, create new credentials of type **Base64.ai API** and paste both values.

  Credentials are transported over HTTPS and stored by n8n according to your instance configuration.

  ## Operations

  | Resource | Operations | Description |
  | --- | --- | --- |
  | Document | Recognize Document, Recognize Document Async, Get Async Scan Result | Upload or link to a document and run a selected Base64.ai flow, either sync or async. |
  | Signature | Recognize Signature, Verify Signature | Detect signatures on a single document or compare two signatures for verification. |
  | Face | Recognize Face, Verify Face | Run biometric detection or compare two faces. |
  | Flow | List Flows | Enumerate flows available to the authenticated workspace (used to populate dropdowns). |
  | Result | Get Flow Results, Get Result By UUID | Fetch processed results in bulk or by UUID for downstream systems. |

  Every operation returns the raw Base64.ai API payload so you can post-process it with native n8n nodes.

  ## Usage Notes

  - **Input Source** – You can provide publicly accessible URLs or binary data from earlier nodes. When using binaries, ensure the previous node sets `data` (or customize the property name) and the binary data is not too large for your n8n instance.
  - **Flows** – The Document and Result resources support selecting a flow from the Base64.ai API or entering an ID manually. Use manual entry for dynamic expressions or when the flow is newly created.
  - **Asynchronous workloads** – Use **Document → Recognize Document Async** for multi-page or high-volume documents; store the returned UUID and poll with **Document → Get Async Scan Result** until the status becomes `done`.
  - **Headers** – When you provide a Flow ID the node automatically adds the `base64ai-flow-id` header required by the API.

  ## Example Workflow

  **Goal:** Recognize a document from a public URL and extract fields.

  1. Add a **Manual Trigger** node.
  2. Add **Base64 Document AI** and set:
     - **Resource**: Document
     - **Operation**: Recognize Document
     - **Input Source**: URL
     - **Document URL**: `https://example.com/sample-invoice.pdf`
     - **Flow**: Select a flow from the list (or enter a Flow ID manually)
  3. Add a **Set** node to pick the fields you need from the response, for example:
     - `{{$json.fields.invoice_number.value}}`
     - `{{$json.fields.total.value}}`

  This workflow will return the raw Base64.ai response and let you extract the fields you care about using native n8n nodes.

  ## Compatibility

  - Tested with n8n `>= 1.60.0` running on Node.js `>= 18.17`.
  - The codebase targets the latest n8n Node CLI (`@n8n/node-cli` v1) and TypeScript 5.9.
  - All requests are made against the public `https://base64.ai/api` endpoint.

  ## Resources

  - [Base64.ai](https://base64.ai/)
  - [Base64.ai API Reference](https://apidoc.base64.ai/)
  - [n8n Community Nodes guide](https://docs.n8n.io/integrations/community-nodes/installation/)
  - Support: [support@base64.ai](mailto:support@base64.ai)

  ## Version History

  - **1.0.0** – Current stable release. See [CHANGELOG.md](CHANGELOG.md) for full history.

ai_documentation_summary:
  {"purpose":"Integrates Base64.ai's document understanding, identity verification, and biometric capabilities directly into n8n workflows to automate document processing without custom code.","capabilities":["Recognize documents (sync and async)","Verify signatures","Recognize faces","Verify faces","List available AI flows","Fetch bulk processing results","Fetch results by UUID"],"authentication":"API key required (email and API key)","commonUseCases":["Automated invoice data extraction","Identity verification workflows","Biometric authentication checks","Document scanning and field extraction"],"limitations":["Requires publicly accessible URLs or binary data from previous nodes","Binary data size is constrained by the n8n instance configuration","Async operations require manual polling to retrieve results"],"relatedNodes":["Manual Trigger","Set"]}


node_type: n8n-nodes-trackpod.trackPod
package_name: n8n-nodes-trackpod
display_name: Track-POD
description: Interact with the Track-POD delivery management API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bashlenix
author_github_url: https://github.com/Bashlenix/Trackpod_n8n_Custom_Node.git
npm_package_name: n8n-nodes-trackpod
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:33.851Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "order",
      "options": [
        {
          "name": "Order",
          "value": "order"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDetails",
      "options": [
        {
          "name": "Create Orders",
          "value": "createOrders",
          "action": "Create orders",
          "description": "Create one or more unscheduled orders (bulk)"
        },
        {
          "name": "Delete Order",
          "value": "deleteOrder",
          "action": "Delete order",
          "description": "Delete an order by Number or ID"
        },
        {
          "name": "Get Details",
          "value": "getDetails",
          "action": "Get order details",
          "description": "Retrieve order details by Number, ID or Tracking-ID"
        },
        {
          "name": "Update Order",
          "value": "updateOrder",
          "action": "Update order",
          "description": "Update an existing order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Orders",
      "value": "createOrders",
      "action": "Create orders",
      "description": "Create one or more unscheduled orders (bulk)",
      "resource": "order"
    },
    {
      "name": "Delete Order",
      "value": "deleteOrder",
      "action": "Delete order",
      "description": "Delete an order by Number or ID",
      "resource": "order"
    },
    {
      "name": "Get Details",
      "value": "getDetails",
      "action": "Get order details",
      "description": "Retrieve order details by Number, ID or Tracking-ID",
      "resource": "order"
    },
    {
      "name": "Update Order",
      "value": "updateOrder",
      "action": "Update order",
      "description": "Update an existing order",
      "resource": "order"
    }
  ]

npm_readme:
  # n8n-nodes-trackpod

  This is an n8n community node. It lets you use [Track-POD](https://track-pod.com) in your n8n workflows.

  Track-POD is a delivery management platform that provides route optimization, electronic proof of delivery, and real-time driver tracking for logistics operations.

  [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)  
  [Version history](#version-history)  

  ## Installation

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

  ## Operations

  ### Action node — Track-POD

  | Resource | Operation | API endpoint |
  |---|---|---|
  | Order | Get Details | `GET /order/{getBy}/{key}` |
  | Order | Create Orders | `POST /order/bulk` |
  | Order | Update Order | `PUT /order` |
  | Order | Delete Order | `DELETE /Order/{deleteBy}/{key}` |

  ### Trigger node — Track-POD Trigger

  | Event | Track-POD webhook events |
  |---|---|
  | New / Updated Route | RouteCreated, RouteUpdated |
  | Deleted Route | RouteDeleted |
  | New / Updated Order | OrderCreated, OrderUpdated |
  | Deleted Order | OrderDeleted |

  ## Credentials

  1. In n8n go to **Credentials → New**.
  2. Search for **Track-POD API**.
  3. Paste your API key — find it at [Track-POD → Settings → Integrations → Web API](https://web.track-pod.com/en/settings/integrations/web-api).
  4. Click **Test** to verify, then **Save**.

  ## Compatibility

  Tested with n8n self-hosted. Requires Node.js ≥ 16.

  ## Usage

  ### Action node

  #### Get Details

  Looks up a single order. Returns the full order object, or an empty `{}` on 404 / 410 (order not found or deleted) rather than failing — downstream nodes can check for missing fields to branch.

  | Field | Description |
  |---|---|
  | **Get By** | `Number` · `ID` · `Tracking-ID` |
  | **Order Number / Order ID / Tracking ID** | The lookup key (shown conditionally) |

  #### Create Orders

  Collects **all input items** into one array and sends them in a single `POST /order/bulk` call. Returns one output item with the API response.

  | Field | Description |
  |---|---|
  | **Client / Customer Name** | Required by Track-POD |
  | **Address** | Required by Track-POD |
  | **Force Update Address GPS** | Updates Lat/Lon in the Addresses directory |
  | **Force Update Goods Price** | Updates Price in the Goods directory |
  | **Additional Fields** | All other optional order fields (Number, Date, Type, GoodsList, etc.) |

  `GoodsList` and `CustomFields` in Additional Fields accept a JSON array string, e.g. `[{"GoodsName":"Item A","Quantity":2,"GoodsUnit":"pcs"}]`.

  #### Update Order

  Sends `PUT /order` per input item. Include at least **ID** or **Number** in Order Fields to identify which order to update. Only the most recent matching order is updated.

  | Field | Description |
  |---|---|
  | **Force Update Address GPS** | Updates Lat/Lon in the Addresses directory |
  | **Order Fields** | Collection of all order fields including Id, Number, Client, Address, etc. |

  #### Delete Order

  Sends `DELETE /Order/{deleteBy}/{key}` per input item.

  | Field | Description |
  |---|---|
  | **Delete By** | `Number` · `ID` |
  | **Order Number / Order ID** | The key (shown conditionally) |

  ### Trigger node

  Add a **Track-POD Trigger** node to start a workflow from a Track-POD webhook event.

  1. Select the **Event** you want to listen for.
  2. **Activate** the workflow — the Webhook URL appears in the node.
  3. Copy the Webhook URL and register it in [Track-POD → Settings → Integrations → Webhooks](https://web.track-pod.com/en/settings/integrations/webhooks).
  4. In the Track-POD webhook settings, enable the corresponding events (shown as a notice in the node UI).

  Each trigger node instance has its own URL. If you need to handle multiple event types in one workflow, add one trigger node per event and register each URL separately in Track-POD.

  #### Output structure

  All trigger events pass the raw Track-POD webhook payload as-is:

  ```json
  {
    "Metadata": {
      "Event": "OrderCreated",
      "Date": "2024-01-15T10:30:00Z"
    },
    "Data": { }
  }
  ```

  `Data` shape per event:

  | Event | Data fields |
  |---|---|
  | New / Updated Route | Full route object (Code, Date, Depot, DriverName, Orders array, …) |
  | Deleted Route | `Code`, `Date` |
  | New / Updated Order | Full order object (Number, Client, Address, Status, GoodsList, …) |
  | Deleted Order | `Number`, `Date`, `Type`, `Note`, `Weight`, `Volume`, `Pallets`, `COD`, `DeletedBy`, `DeletedDate` |

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Track-POD API documentation](https://docs.track-pod.com)
  * [Track-POD website](https://track-pod.com)

  ## Version history

  **0.1.0** — Initial release with Order CRUD operations and webhook trigger support.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Interact with the Track-POD delivery management API to manage orders and routes, and trigger workflows based on real-time delivery events.","capabilities":["Retrieve order details by ID, number, or tracking ID","Create multiple orders in a single bulk request","Update existing orders with new data or GPS coordinates","Delete orders by ID or number","Trigger workflows on route creation or updates","Trigger workflows on route deletion","Trigger workflows on order creation or updates","Trigger workflows on order deletion","Pass raw webhook payloads to downstream nodes"],"authentication":"API key required","commonUseCases":["Automate order creation from CRM or e-commerce platforms","Synchronize delivery status updates back to internal systems","Trigger notifications or alerts when routes are created or deleted","Manage order lifecycle (create, update, delete) via n8n workflows"],"limitations":["Requires manual registration of webhook URLs in Track-POD settings for each trigger node","Multiple event types require separate trigger node instances within the same workflow","Returns empty object on 404/410 errors rather than throwing an exception, requiring downstream error handling"],"relatedNodes":["Webhook","HTTP Request","Code"]}


node_type: n8n-nodes-trackpod.trackPodTrigger
package_name: n8n-nodes-trackpod
display_name: Track-POD Trigger
description: Starts the workflow when Track-POD fires a webhook event
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bashlenix
author_github_url: https://github.com/Bashlenix/Trackpod_n8n_Custom_Node.git
npm_package_name: n8n-nodes-trackpod
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:33.853Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-trackpod

  This is an n8n community node. It lets you use [Track-POD](https://track-pod.com) in your n8n workflows.

  Track-POD is a delivery management platform that provides route optimization, electronic proof of delivery, and real-time driver tracking for logistics operations.

  [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)  
  [Version history](#version-history)  

  ## Installation

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

  ## Operations

  ### Action node — Track-POD

  | Resource | Operation | API endpoint |
  |---|---|---|
  | Order | Get Details | `GET /order/{getBy}/{key}` |
  | Order | Create Orders | `POST /order/bulk` |
  | Order | Update Order | `PUT /order` |
  | Order | Delete Order | `DELETE /Order/{deleteBy}/{key}` |

  ### Trigger node — Track-POD Trigger

  | Event | Track-POD webhook events |
  |---|---|
  | New / Updated Route | RouteCreated, RouteUpdated |
  | Deleted Route | RouteDeleted |
  | New / Updated Order | OrderCreated, OrderUpdated |
  | Deleted Order | OrderDeleted |

  ## Credentials

  1. In n8n go to **Credentials → New**.
  2. Search for **Track-POD API**.
  3. Paste your API key — find it at [Track-POD → Settings → Integrations → Web API](https://web.track-pod.com/en/settings/integrations/web-api).
  4. Click **Test** to verify, then **Save**.

  ## Compatibility

  Tested with n8n self-hosted. Requires Node.js ≥ 16.

  ## Usage

  ### Action node

  #### Get Details

  Looks up a single order. Returns the full order object, or an empty `{}` on 404 / 410 (order not found or deleted) rather than failing — downstream nodes can check for missing fields to branch.

  | Field | Description |
  |---|---|
  | **Get By** | `Number` · `ID` · `Tracking-ID` |
  | **Order Number / Order ID / Tracking ID** | The lookup key (shown conditionally) |

  #### Create Orders

  Collects **all input items** into one array and sends them in a single `POST /order/bulk` call. Returns one output item with the API response.

  | Field | Description |
  |---|---|
  | **Client / Customer Name** | Required by Track-POD |
  | **Address** | Required by Track-POD |
  | **Force Update Address GPS** | Updates Lat/Lon in the Addresses directory |
  | **Force Update Goods Price** | Updates Price in the Goods directory |
  | **Additional Fields** | All other optional order fields (Number, Date, Type, GoodsList, etc.) |

  `GoodsList` and `CustomFields` in Additional Fields accept a JSON array string, e.g. `[{"GoodsName":"Item A","Quantity":2,"GoodsUnit":"pcs"}]`.

  #### Update Order

  Sends `PUT /order` per input item. Include at least **ID** or **Number** in Order Fields to identify which order to update. Only the most recent matching order is updated.

  | Field | Description |
  |---|---|
  | **Force Update Address GPS** | Updates Lat/Lon in the Addresses directory |
  | **Order Fields** | Collection of all order fields including Id, Number, Client, Address, etc. |

  #### Delete Order

  Sends `DELETE /Order/{deleteBy}/{key}` per input item.

  | Field | Description |
  |---|---|
  | **Delete By** | `Number` · `ID` |
  | **Order Number / Order ID** | The key (shown conditionally) |

  ### Trigger node

  Add a **Track-POD Trigger** node to start a workflow from a Track-POD webhook event.

  1. Select the **Event** you want to listen for.
  2. **Activate** the workflow — the Webhook URL appears in the node.
  3. Copy the Webhook URL and register it in [Track-POD → Settings → Integrations → Webhooks](https://web.track-pod.com/en/settings/integrations/webhooks).
  4. In the Track-POD webhook settings, enable the corresponding events (shown as a notice in the node UI).

  Each trigger node instance has its own URL. If you need to handle multiple event types in one workflow, add one trigger node per event and register each URL separately in Track-POD.

  #### Output structure

  All trigger events pass the raw Track-POD webhook payload as-is:

  ```json
  {
    "Metadata": {
      "Event": "OrderCreated",
      "Date": "2024-01-15T10:30:00Z"
    },
    "Data": { }
  }
  ```

  `Data` shape per event:

  | Event | Data fields |
  |---|---|
  | New / Updated Route | Full route object (Code, Date, Depot, DriverName, Orders array, …) |
  | Deleted Route | `Code`, `Date` |
  | New / Updated Order | Full order object (Number, Client, Address, Status, GoodsList, …) |
  | Deleted Order | `Number`, `Date`, `Type`, `Note`, `Weight`, `Volume`, `Pallets`, `COD`, `DeletedBy`, `DeletedDate` |

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Track-POD API documentation](https://docs.track-pod.com)
  * [Track-POD website](https://track-pod.com)

  ## Version history

  **0.1.0** — Initial release with Order CRUD operations and webhook trigger support.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Enables n8n workflows to interact with Track-POD, a delivery management platform, by triggering on webhook events and performing CRUD operations on orders and routes.","capabilities":["Trigger workflow on RouteCreated events","Trigger workflow on RouteUpdated events","Trigger workflow on RouteDeleted events","Trigger workflow on OrderCreated events","Trigger workflow on OrderUpdated events","Trigger workflow on OrderDeleted events","Retrieve order details by ID, Number, or Tracking-ID","Create multiple orders in a single bulk request","Update specific order fields including GPS coordinates","Delete orders by ID or Number"],"authentication":"API key required","commonUseCases":["Automate notifications when new delivery orders are created","Synchronize delivery routes with external systems","Trigger inventory updates upon order completion","Log deleted orders for audit purposes"],"limitations":["Requires manual registration of webhook URLs in Track-POD settings for each trigger node","Multiple event types require separate trigger node instances within the same workflow","Returns empty object instead of error for missing orders (404/410), requiring downstream logic to handle missing data"],"relatedNodes":[]}


node_type: n8n-nodes-afipsdk.afipSdk
package_name: n8n-nodes-afipsdk
display_name: Afip SDK
description: Official Afip SDK nodes.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: afipsdk
author_github_url: https://github.com/AfipSDK/
npm_package_name: n8n-nodes-afipsdk
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:33.854Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "webService",
      "options": [
        {
          "name": "Automation",
          "value": "automation"
        },
        {
          "name": "PDF",
          "value": "pdf"
        },
        {
          "name": "Util",
          "value": "util"
        },
        {
          "name": "Web Service",
          "value": "webService"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTokenAuth",
      "options": [
        {
          "name": "Get Authorization Token (TA)",
          "value": "getTokenAuth",
          "action": "Get authorization token (TA)",
          "description": "Before calling an ARCA web service, you need a TA, also known as an authorization token"
        },
        {
          "name": "Make Requests to ARCA Service",
          "value": "makeRequest",
          "action": "Execute web service request",
          "description": "Send requests to the ARCA web services"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webService"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "runAutomation",
      "options": [
        {
          "name": "Get Automation Result",
          "value": "getAutomationResult",
          "action": "Get automation result",
          "description": "Get automation result and retry if the automation is not complete"
        },
        {
          "name": "Run Automation",
          "value": "runAutomation",
          "action": "Run automation",
          "description": "Execute an Afip SDK automation"
        },
        {
          "name": "Run Automation And Wait",
          "value": "runAutomationAndWait",
          "action": "Run automation and wait",
          "description": "Execute an Afip SDK automation and wait for its result"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "automation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createPdf",
      "options": [
        {
          "name": "Create A PDF",
          "value": "createPdf",
          "action": "Create PDF",
          "description": "Create a PDF of your bills and send it to your customers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLastXml",
      "options": [
        {
          "name": "Get XML From Last Request",
          "value": "getLastXml",
          "action": "Get XML from last request",
          "description": "Get an XML including the last request and response to send to ARCA support mail"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "util"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Authorization Token (TA)",
      "value": "getTokenAuth",
      "action": "Get authorization token (TA)",
      "description": "Before calling an ARCA web service, you need a TA, also known as an authorization token",
      "resource": "webService"
    },
    {
      "name": "Make Requests to ARCA Service",
      "value": "makeRequest",
      "action": "Execute web service request",
      "description": "Send requests to the ARCA web services",
      "resource": "webService"
    },
    {
      "name": "Get Automation Result",
      "value": "getAutomationResult",
      "action": "Get automation result",
      "description": "Get automation result and retry if the automation is not complete",
      "resource": "automation"
    },
    {
      "name": "Run Automation",
      "value": "runAutomation",
      "action": "Run automation",
      "description": "Execute an Afip SDK automation",
      "resource": "automation"
    },
    {
      "name": "Run Automation And Wait",
      "value": "runAutomationAndWait",
      "action": "Run automation and wait",
      "description": "Execute an Afip SDK automation and wait for its result",
      "resource": "automation"
    },
    {
      "name": "Create A PDF",
      "value": "createPdf",
      "action": "Create PDF",
      "description": "Create a PDF of your bills and send it to your customers",
      "resource": "pdf"
    },
    {
      "name": "Get XML From Last Request",
      "value": "getLastXml",
      "action": "Get XML from last request",
      "description": "Get an XML including the last request and response to send to ARCA support mail",
      "resource": "util"
    }
  ]

npm_readme:
  # n8n-nodes-afipsdk

  This is an n8n community node that lets you use **Afip SDK** in your n8n workflows.

  [Afip SDK](https://afipsdk.com/) is a service that simplifies integration with ARCA (formerly AFIP), Argentina's federal tax authority. It handles authentication, web service requests, PDF generation, and browser automations so you don't have to deal with SOAP/XML directly.

  [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)
  [Resources](#resources)

  ## Installation

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

  Search for `n8n-nodes-afipsdk` in the community nodes panel.

  ## Operations

  ### Web Service

  | Operation | Description |
  |-----------|-------------|
  | **Get Authorization Token (TA)** | Obtains an authorization token (Ticket de Acceso) required before calling any ARCA web service. Accepts `environment`, `tax_id`, `wsid`, and `force_create`. Supports custom `cert`/`key` for non-default certificates. |
  | **Make Requests to ARCA Service** | Sends requests to any ARCA web service using a previously obtained TA. |

  ### Automation

  | Operation | Description |
  |-----------|-------------|
  | **Run Automation** | Executes an Afip SDK automation asynchronously. Returns an automation ID you can use to poll for the result. |
  | **Run Automation And Wait** | Executes an automation and blocks until it completes, returning the result directly. |
  | **Get Automation Result** | Polls for the result of a previously started automation. Accepts an `automationId` and a `secondsToWait` retry interval. |

  ### PDF

  | Operation | Description |
  |-----------|-------------|
  | **Create A PDF** | Generates a PDF from a template and optionally emails it to a recipient. Accepts `file_name`, `send_to`, and `template`. |

  ### Util

  | Operation | Description |
  |-----------|-------------|
  | **Get XML From Last Request** | Returns the raw XML of the last request/response pair. Useful for debugging or sending to ARCA support. |

  ## Credentials

  This node requires an **Afip SDK API** credential (`afipSdkApi`).

  To set up credentials:
  1. Sign up at [afipsdk.com](https://afipsdk.com/) to obtain your API key.
  2. In n8n, go to **Settings → Credentials → New** and search for *Afip SDK*.
  3. Enter your API key and save.

  ## Compatibility

  - Tested with n8n `1.x`.
  - Requires n8n Nodes API version 1.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Afip SDK documentation](https://afipsdk.com/docs)
  - [ARCA (formerly AFIP) web services](https://www.afip.gob.ar/ws/)

ai_documentation_summary:
  {"purpose":"This node provides official Afip SDK integration for n8n workflows, simplifying connections to Argentina's federal tax authority (ARCA) by handling authentication, web service requests, PDF generation, and browser automations.","capabilities":["Obtain authorization tokens (Ticket de Acceso) for ARCA web services","Send requests to any ARCA web service","Execute asynchronous automations and retrieve results","Generate PDFs from templates with optional email delivery","Retrieve raw XML from last request/response for debugging"],"authentication":"API key required","commonUseCases":["Automating tax declarations and compliance with ARCA","Generating and emailing tax-related PDF documents","Handling complex browser-based interactions with tax authority portals"],"limitations":["Requires n8n version 1.x","Requires n8n Nodes API version 1","Dependent on external Afip SDK service availability"],"relatedNodes":[]}


node_type: @forestnpm/n8n-nodes-forest.forest
package_name: @forestnpm/n8n-nodes-forest
display_name: Forest Admin
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: pmerlet
author_github_url: https://github.com/ForestAdmin/n8n-nodes-forest.git
npm_package_name: @forestnpm/n8n-nodes-forest
npm_version: 1.1.0
community_fetched_at: 2026-07-14T14:40:33.857Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Make calls directly to Forest Admin securely with the same security, compliance, and control you rely on today through the Forest Admin MCP Server.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "record",
      "options": [
        {
          "name": "Record",
          "value": "record"
        },
        {
          "name": "Relation",
          "value": "relation"
        },
        {
          "name": "Custom",
          "value": "customAction"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Describe a collection",
          "value": "describe",
          "action": "Describe a collection",
          "description": "Discover a collection's schema: fields, types, operators, relations, and available actions. Always call this first before querying or modifying data."
        },
        {
          "name": "List records",
          "value": "list",
          "action": "List records",
          "description": "Retrieve a list of records from the specified collection."
        },
        {
          "name": "Create a record",
          "value": "create",
          "action": "Create a record",
          "description": "Create a new record in the specified collection."
        },
        {
          "name": "Update a record",
          "value": "update",
          "action": "Update a record",
          "description": "Update an existing record in the specified collection."
        },
        {
          "name": "Delete records",
          "value": "delete",
          "action": "Delete records",
          "description": "Delete one or more records from the specified collection."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "record"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List records from a relation",
          "value": "list",
          "action": "List related records",
          "description": "Retrieve a list of records from a one-to-many or many-to-many relation."
        },
        {
          "name": "Associate records in a relation",
          "value": "associate",
          "action": "Associate records",
          "description": "Link a record to another through a one-to-many or many-to-many relation. For many-to-many relations, this creates a new entry in the join table."
        },
        {
          "name": "Dissociate records from a relation",
          "value": "dissociate",
          "action": "Dissociate records",
          "description": "Unlink records from a one-to-many or many-to-many relation. Does not delete the target records."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "relation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Retrieve action form",
          "value": "getForm",
          "action": "Retrieve action form",
          "description": "Retrieve and validate the form for a specific action. Must be called before executeAction."
        },
        {
          "name": "Execute an action",
          "value": "execute",
          "action": "Execute an action",
          "description": "Execute a specific action on one or more records. Call getActionForm first and ensure canExecute is true."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customAction"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Describe a collection",
      "value": "describe",
      "action": "Describe a collection",
      "description": "Discover a collection's schema: fields, types, operators, relations, and available actions. Always call this first before querying or modifying data.",
      "resource": "record"
    },
    {
      "name": "List records",
      "value": "list",
      "action": "List records",
      "description": "Retrieve a list of records from the specified collection.",
      "resource": "record"
    },
    {
      "name": "Create a record",
      "value": "create",
      "action": "Create a record",
      "description": "Create a new record in the specified collection.",
      "resource": "record"
    },
    {
      "name": "Update a record",
      "value": "update",
      "action": "Update a record",
      "description": "Update an existing record in the specified collection.",
      "resource": "record"
    },
    {
      "name": "Delete records",
      "value": "delete",
      "action": "Delete records",
      "description": "Delete one or more records from the specified collection.",
      "resource": "record"
    },
    {
      "name": "List records from a relation",
      "value": "list",
      "action": "List related records",
      "description": "Retrieve a list of records from a one-to-many or many-to-many relation.",
      "resource": "relation"
    },
    {
      "name": "Associate records in a relation",
      "value": "associate",
      "action": "Associate records",
      "description": "Link a record to another through a one-to-many or many-to-many relation. For many-to-many relations, this creates a new entry in the join table.",
      "resource": "relation"
    },
    {
      "name": "Dissociate records from a relation",
      "value": "dissociate",
      "action": "Dissociate records",
      "description": "Unlink records from a one-to-many or many-to-many relation. Does not delete the target records.",
      "resource": "relation"
    },
    {
      "name": "Retrieve action form",
      "value": "getForm",
      "action": "Retrieve action form",
      "description": "Retrieve and validate the form for a specific action. Must be called before executeAction.",
      "resource": "customAction"
    },
    {
      "name": "Execute an action",
      "value": "execute",
      "action": "Execute an action",
      "description": "Execute a specific action on one or more records. Call getActionForm first and ensure canExecute is true.",
      "resource": "customAction"
    }
  ]

npm_readme:
  # n8n-nodes-forest

  This is an n8n community node for integrating with Forest.

  ## Installation

  ### In n8n Desktop or Self-hosted

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@forestnpm/n8n-nodes-forest` in the input field
  4. Click **Install**

  ### Manual Installation

  ```bash
  pnpm install @forestnpm/n8n-nodes-forest
  ```

  ## Development

  ### Prerequisites

  - Node.js >= 18.10
  - pnpm >= 9.1

  ### Setup

  ```bash
  # Use Node.js 20
  nvm use 20

  # Install n8n
  npm install -g n8n

  # Install dependencies
  pnpm install

  # Build the project
  pnpm build

  # Run in development mode (watch)
  pnpm dev

  # Run n8n
  n8n
  ```

  ### Testing in n8n

  1. Build the package: `pnpm build`
  2. Link the package globally: `pnpm link --global`
  3. In your n8n installation directory: `pnpm link --global @forestnpm/n8n-nodes-forest`
  4. Restart n8n

  ## Credentials

  This node requires Forest API credentials:
  - **API Key**: Your Forest API key
  - **Base URL**: The Forest API base URL (default: https://api.forestadmin.com)

  ## Usage

  For details on filters and aggregations syntax, see the [Forest Admin filters documentation](https://docs.forestadmin.com/developer-guide-agents-nodejs/data-sources/getting-started/queries/filters).

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Forest Documentation](https://docs.forestadmin.com/)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Integrates with Forest Admin to securely make API calls for data queries, filters, and aggregations within n8n workflows.","capabilities":["Execute Forest Admin API queries","Apply custom filters to data","Perform data aggregations","Securely manage Forest Admin credentials"],"authentication":"API key required","commonUseCases":["Querying customer data from Forest Admin","Filtering and transforming data before processing","Aggregating metrics from Forest Admin datasets"],"limitations":["Requires valid Forest API credentials","Dependent on Forest Admin API rate limits and availability","Requires manual installation of community node in n8n"],"relatedNodes":[]}


node_type: n8n-nodes-lucidlink.lucidlink
package_name: n8n-nodes-lucidlink
display_name: LucidLink
description: Interact with the self-hosted LucidLink LucidAPI
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: charlesleighton
author_github_url: https://github.com/LucidCodeLab/
npm_package_name: n8n-nodes-lucidlink
npm_version: 0.1.6
community_fetched_at: 2026-07-14T14:40:33.859Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "filespace",
      "options": [
        {
          "name": "Data Store",
          "value": "dataStore"
        },
        {
          "name": "Direct Link",
          "value": "directLink"
        },
        {
          "name": "Entry",
          "value": "entry"
        },
        {
          "name": "External Entry",
          "value": "externalEntry"
        },
        {
          "name": "Filespace",
          "value": "filespace"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Health",
          "value": "health"
        },
        {
          "name": "Member",
          "value": "member"
        },
        {
          "name": "Permission",
          "value": "permission"
        },
        {
          "name": "Provider",
          "value": "provider"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "check",
      "options": [
        {
          "name": "Check",
          "value": "check",
          "action": "Check lucid api health",
          "routing": {
            "request": {
              "url": "/api/v1/health",
              "method": "GET"
            }
          },
          "description": "Check if the LucidAPI instance is responsive"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "health"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get available providers and regions",
          "routing": {
            "request": {
              "url": "/api/v1/providers",
              "method": "GET"
            }
          },
          "description": "List many available storage providers and their regions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "provider"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a filespace",
          "routing": {
            "request": {
              "url": "/api/v1/filespaces",
              "method": "POST"
            }
          },
          "description": "Create a new filespace"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a filespace",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a filespace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a filespace",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get information for a single filespace"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many filespaces",
          "routing": {
            "request": {
              "url": "/api/v1/filespaces",
              "method": "GET"
            }
          },
          "description": "Get information for many filespaces"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a filespace",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update the name of a filespace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "filespace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a directory entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries",
              "body": {
                "type": "dir"
              },
              "method": "POST"
            }
          },
          "description": "Create a new directory in the filespace"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/{{$parameter[\"entryId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an empty directory from the filespace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/{{$parameter[\"entryId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a filesystem entry by ID"
        },
        {
          "name": "List Children",
          "value": "listChildren",
          "action": "List directory children",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/{{$parameter[\"entryId\"]}}/children",
              "method": "GET"
            }
          },
          "description": "List entries within a directory"
        },
        {
          "name": "Resolve Path",
          "value": "resolve",
          "action": "Resolve a path to an entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/resolve",
              "method": "GET"
            }
          },
          "description": "Look up a filesystem entry by its path"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entry"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a data store",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores",
              "body": {
                "kind": "S3DataStore"
              },
              "method": "POST"
            }
          },
          "description": "Create a new S3 data store"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a data store",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores/{{$parameter[\"dataStoreId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a data store by ID"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a data store",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores/{{$parameter[\"dataStoreId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get information about a data store"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many data stores",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores",
              "method": "GET"
            }
          },
          "description": "List many data stores in the filespace"
        },
        {
          "name": "Update Credentials",
          "value": "update",
          "action": "Update data store credentials",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores/{{$parameter[\"dataStoreId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update the S3 access key and secret key for a data store"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataStore"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generate",
      "options": [
        {
          "name": "Generate",
          "value": "generate",
          "action": "Generate a direct link",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/direct-links",
              "method": "GET"
            }
          },
          "description": "Generate a shareable direct link to a filesystem entry"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "directLink"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listIds",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an external entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries",
              "method": "POST"
            }
          },
          "description": "Link an S3 object or HTTP file as an entry in the filespace"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an external entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries/{{$parameter[\"entryId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Remove an external file entry from the filespace"
        },
        {
          "name": "List IDs",
          "value": "listIds",
          "action": "List external entry i ds",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries/ids",
              "method": "GET"
            }
          },
          "description": "List all external entry IDs for a given data store"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an external entry",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries/{{$parameter[\"entryId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update the URL of an existing HTTP link file entry"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "externalEntry"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Member",
          "value": "addMember",
          "action": "Add a member to a group",
          "routing": {
            "request": {
              "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}/members/{{$parameter[\"memberId\"]}}",
              "method": "PUT"
            }
          },
          "description": "Add a workspace member to a group"
        },
        {
          "name": "Add Members (Bulk)",
          "value": "addMembersBulk",
          "action": "Bulk add members to groups",
          "routing": {
            "request": {
              "url": "/api/v1/groups/members",
              "method": "PUT"
            }
          },
          "description": "Add multiple members to groups in one request"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a group",
          "routing": {
            "request": {
              "url": "/api/v1/groups",
              "method": "POST"
            }
          },
          "description": "Create a new group in the workspace"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a group",
          "routing": {
            "request": {
              "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a group from the workspace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a group",
          "routing": {
            "request": {
              "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a group by its principal ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many groups",
          "routing": {
            "request": {
              "url": "/api/v1/groups",
              "method": "GET"
            }
          },
          "description": "Get workspace groups list"
        },
        {
          "name": "Get Members",
          "value": "getMembers",
          "action": "Get group members",
          "routing": {
            "request": {
              "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}/members",
              "method": "GET"
            }
          },
          "description": "List all members in a group"
        },
        {
          "name": "Remove Member",
          "value": "removeMember",
          "action": "Remove a member from a group",
          "routing": {
            "request": {
              "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}/members/{{$parameter[\"memberId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a workspace member from a group"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a group",
          "routing": {
            "request": {
              "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update group properties"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a member to the workspace",
          "routing": {
            "request": {
              "url": "/api/v1/members",
              "method": "POST"
            }
          },
          "description": "Invite a user to the workspace by email"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Remove a member from the workspace",
          "routing": {
            "request": {
              "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a member from the workspace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a member",
          "routing": {
            "request": {
              "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a workspace member by principal ID"
        },
        {
          "name": "Get Groups",
          "value": "getGroups",
          "action": "Get a member s groups",
          "routing": {
            "request": {
              "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}/groups",
              "method": "GET"
            }
          },
          "description": "Get the groups that a member belongs to"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many members",
          "routing": {
            "request": {
              "url": "/api/v1/members",
              "method": "GET"
            }
          },
          "description": "Get the workspace members list"
        },
        {
          "name": "Update Role",
          "value": "update",
          "action": "Update a member role",
          "routing": {
            "request": {
              "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Update the role of a workspace member"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "member"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Grant",
          "value": "grant",
          "action": "Grant a permission",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions",
              "method": "POST"
            }
          },
          "description": "Grant access to a principal for a filesystem directory"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List permissions",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions",
              "method": "GET"
            }
          },
          "description": "List permissions for a filespace"
        },
        {
          "name": "Revoke",
          "value": "revoke",
          "action": "Revoke a permission",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions/{{$parameter[\"permissionId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Remove a permission from a filespace"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a permission",
          "routing": {
            "request": {
              "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions/{{$parameter[\"permissionId\"]}}",
              "method": "PATCH"
            }
          },
          "description": "Change the permissions for an existing permission entry"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "permission"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check",
      "value": "check",
      "action": "Check lucid api health",
      "routing": {
        "request": {
          "url": "/api/v1/health",
          "method": "GET"
        }
      },
      "description": "Check if the LucidAPI instance is responsive",
      "resource": "health"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get available providers and regions",
      "routing": {
        "request": {
          "url": "/api/v1/providers",
          "method": "GET"
        }
      },
      "description": "List many available storage providers and their regions",
      "resource": "provider"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a filespace",
      "routing": {
        "request": {
          "url": "/api/v1/filespaces",
          "method": "POST"
        }
      },
      "description": "Create a new filespace",
      "resource": "filespace"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a filespace",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a filespace",
      "resource": "filespace"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a filespace",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get information for a single filespace",
      "resource": "filespace"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many filespaces",
      "routing": {
        "request": {
          "url": "/api/v1/filespaces",
          "method": "GET"
        }
      },
      "description": "Get information for many filespaces",
      "resource": "filespace"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a filespace",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update the name of a filespace",
      "resource": "filespace"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a directory entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries",
          "body": {
            "type": "dir"
          },
          "method": "POST"
        }
      },
      "description": "Create a new directory in the filespace",
      "resource": "entry"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/{{$parameter[\"entryId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an empty directory from the filespace",
      "resource": "entry"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/{{$parameter[\"entryId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a filesystem entry by ID",
      "resource": "entry"
    },
    {
      "name": "List Children",
      "value": "listChildren",
      "action": "List directory children",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/{{$parameter[\"entryId\"]}}/children",
          "method": "GET"
        }
      },
      "description": "List entries within a directory",
      "resource": "entry"
    },
    {
      "name": "Resolve Path",
      "value": "resolve",
      "action": "Resolve a path to an entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/entries/resolve",
          "method": "GET"
        }
      },
      "description": "Look up a filesystem entry by its path",
      "resource": "entry"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a data store",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores",
          "body": {
            "kind": "S3DataStore"
          },
          "method": "POST"
        }
      },
      "description": "Create a new S3 data store",
      "resource": "dataStore"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a data store",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores/{{$parameter[\"dataStoreId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a data store by ID",
      "resource": "dataStore"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a data store",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores/{{$parameter[\"dataStoreId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get information about a data store",
      "resource": "dataStore"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many data stores",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores",
          "method": "GET"
        }
      },
      "description": "List many data stores in the filespace",
      "resource": "dataStore"
    },
    {
      "name": "Update Credentials",
      "value": "update",
      "action": "Update data store credentials",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/data-stores/{{$parameter[\"dataStoreId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update the S3 access key and secret key for a data store",
      "resource": "dataStore"
    },
    {
      "name": "Generate",
      "value": "generate",
      "action": "Generate a direct link",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/direct-links",
          "method": "GET"
        }
      },
      "description": "Generate a shareable direct link to a filesystem entry",
      "resource": "directLink"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an external entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries",
          "method": "POST"
        }
      },
      "description": "Link an S3 object or HTTP file as an entry in the filespace",
      "resource": "externalEntry"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an external entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries/{{$parameter[\"entryId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Remove an external file entry from the filespace",
      "resource": "externalEntry"
    },
    {
      "name": "List IDs",
      "value": "listIds",
      "action": "List external entry i ds",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries/ids",
          "method": "GET"
        }
      },
      "description": "List all external entry IDs for a given data store",
      "resource": "externalEntry"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an external entry",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/external/entries/{{$parameter[\"entryId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update the URL of an existing HTTP link file entry",
      "resource": "externalEntry"
    },
    {
      "name": "Add Member",
      "value": "addMember",
      "action": "Add a member to a group",
      "routing": {
        "request": {
          "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}/members/{{$parameter[\"memberId\"]}}",
          "method": "PUT"
        }
      },
      "description": "Add a workspace member to a group",
      "resource": "group"
    },
    {
      "name": "Add Members (Bulk)",
      "value": "addMembersBulk",
      "action": "Bulk add members to groups",
      "routing": {
        "request": {
          "url": "/api/v1/groups/members",
          "method": "PUT"
        }
      },
      "description": "Add multiple members to groups in one request",
      "resource": "group"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a group",
      "routing": {
        "request": {
          "url": "/api/v1/groups",
          "method": "POST"
        }
      },
      "description": "Create a new group in the workspace",
      "resource": "group"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a group",
      "routing": {
        "request": {
          "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a group from the workspace",
      "resource": "group"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a group",
      "routing": {
        "request": {
          "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a group by its principal ID",
      "resource": "group"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many groups",
      "routing": {
        "request": {
          "url": "/api/v1/groups",
          "method": "GET"
        }
      },
      "description": "Get workspace groups list",
      "resource": "group"
    },
    {
      "name": "Get Members",
      "value": "getMembers",
      "action": "Get group members",
      "routing": {
        "request": {
          "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}/members",
          "method": "GET"
        }
      },
      "description": "List all members in a group",
      "resource": "group"
    },
    {
      "name": "Remove Member",
      "value": "removeMember",
      "action": "Remove a member from a group",
      "routing": {
        "request": {
          "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}/members/{{$parameter[\"memberId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a workspace member from a group",
      "resource": "group"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a group",
      "routing": {
        "request": {
          "url": "=/api/v1/groups/{{$parameter[\"groupId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update group properties",
      "resource": "group"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add a member to the workspace",
      "routing": {
        "request": {
          "url": "/api/v1/members",
          "method": "POST"
        }
      },
      "description": "Invite a user to the workspace by email",
      "resource": "member"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Remove a member from the workspace",
      "routing": {
        "request": {
          "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a member from the workspace",
      "resource": "member"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a member",
      "routing": {
        "request": {
          "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a workspace member by principal ID",
      "resource": "member"
    },
    {
      "name": "Get Groups",
      "value": "getGroups",
      "action": "Get a member s groups",
      "routing": {
        "request": {
          "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}/groups",
          "method": "GET"
        }
      },
      "description": "Get the groups that a member belongs to",
      "resource": "member"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many members",
      "routing": {
        "request": {
          "url": "/api/v1/members",
          "method": "GET"
        }
      },
      "description": "Get the workspace members list",
      "resource": "member"
    },
    {
      "name": "Update Role",
      "value": "update",
      "action": "Update a member role",
      "routing": {
        "request": {
          "url": "=/api/v1/members/{{$parameter[\"memberId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Update the role of a workspace member",
      "resource": "member"
    },
    {
      "name": "Grant",
      "value": "grant",
      "action": "Grant a permission",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions",
          "method": "POST"
        }
      },
      "description": "Grant access to a principal for a filesystem directory",
      "resource": "permission"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List permissions",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions",
          "method": "GET"
        }
      },
      "description": "List permissions for a filespace",
      "resource": "permission"
    },
    {
      "name": "Revoke",
      "value": "revoke",
      "action": "Revoke a permission",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions/{{$parameter[\"permissionId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Remove a permission from a filespace",
      "resource": "permission"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a permission",
      "routing": {
        "request": {
          "url": "=/api/v1/filespaces/{{$parameter[\"filespaceId\"]}}/permissions/{{$parameter[\"permissionId\"]}}",
          "method": "PATCH"
        }
      },
      "description": "Change the permissions for an existing permission entry",
      "resource": "permission"
    }
  ]

npm_readme:
  # n8n-nodes-lucidlink

  This is an n8n community node for [LucidLink](https://www.lucidlink.com/). It lets you interact with the self-hosted **LucidLink LucidAPI** from your n8n workflows.

  LucidLink is a cloud-native file system that lets teams work with large files stored in object storage (e.g. Amazon S3) as if they were local. The LucidAPI is a REST API that ships with self-hosted LucidLink deployments and gives programmatic control over filespaces, entries, groups, members, permissions, and more.

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

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

  ---

  ## Installation

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

  The package name is **`n8n-nodes-lucidlink`**.

  ---

  ## Operations

  This node covers 9 resources and 38 operations against the LucidLink LucidAPI v1.4.2.

  ### Direct Link

  | Operation | Description                                                          |
  | --------- | -------------------------------------------------------------------- |
  | Generate  | Generate a shareable direct link to a filesystem entry by ID or path |

  ### Filespace

  | Operation | Description            |
  | --------- | ---------------------- |
  | Create    | Create a new filespace |
  | Get Many  | List all filespaces    |
  | Get       | Get a filespace by ID  |
  | Update    | Rename a filespace     |
  | Delete    | Delete a filespace     |

  ### Entry

  | Operation     | Description                             |
  | ------------- | --------------------------------------- |
  | Create        | Create a new directory entry            |
  | Get           | Get an entry by ID                      |
  | Resolve       | Resolve an entry by its filesystem path |
  | List Children | List the children of a directory entry  |
  | Delete        | Delete an entry by ID                   |

  ### Data Store

  | Operation          | Description                                |
  | ------------------ | ------------------------------------------ |
  | Create             | Create a new S3 data store                 |
  | Get Many           | List all data stores in a filespace        |
  | Get                | Get a data store by ID                     |
  | Update Credentials | Update the S3 credentials for a data store |
  | Delete             | Delete a data store                        |

  ### External Entry

  | Operation | Description                                                       |
  | --------- | ----------------------------------------------------------------- |
  | Create    | Create a new external entry (SingleObjectFile or HttpLinkFile)    |
  | Update    | Update the URL of an existing HTTP link file entry                |
  | List IDs  | List external entry IDs in a data store                           |
  | Delete    | Delete an external entry                                          |

  ### Group

  | Operation        | Description                                    |
  | ---------------- | ---------------------------------------------- |
  | Create           | Create a new group                             |
  | Get Many         | List groups (optionally filter by name)        |
  | Get              | Get a group by ID                              |
  | Update           | Update a group                                 |
  | Delete           | Delete a group                                 |
  | Get Members      | List members of a group                        |
  | Add Member       | Add a single member to a group                 |
  | Bulk Add Members | Add multiple members across groups in one call |
  | Remove Member    | Remove a member from a group                   |

  ### Member

  | Operation   | Description                               |
  | ----------- | ----------------------------------------- |
  | Add         | Add a new member                          |
  | Get Many    | List members (optionally filter by email) |
  | Get         | Get a member by ID                        |
  | Update Role | Update a member's role                    |
  | Delete      | Delete a member                           |
  | Get Groups  | List the groups a member belongs to       |

  ### Permission

  | Operation | Description                                 |
  | --------- | ------------------------------------------- |
  | Grant     | Grant a permission on a path to a principal |
  | List      | List permissions in a filespace             |
  | Update    | Update an existing permission               |
  | Revoke    | Revoke a permission                         |

  ### Provider

  | Operation | Description                                        |
  | --------- | -------------------------------------------------- |
  | Get Many  | List available storage providers and their regions |

  ---

  ## Credentials

  The LucidLink LucidAPI is self-hosted, so you configure the connection endpoint in n8n's credential settings rather than using a fixed URL.

  ### Prerequisites

  - A running LucidLink API deployment | [deployment guide](https://support.lucidlink.com/hc/en-us/articles/40221700126605-Deployment-Usage-LucidLink-API-Container)
  - A service account bearer token

  ### Setup

  1. In n8n, go to **Credentials → New** and search for **LucidLink API**.
  2. Fill in the two fields:

     | Field         | Description                                             | Example                 |
     | ------------- | ------------------------------------------------------- | ----------------------- |
     | **Base URL**  | Full base URL of your LucidAPI instance, including port | `http://localhost:7778` |
     | **API Token** | Bearer token for your service account                   | `eyJ...`                |

  3. Click **Save** — n8n will test the credential by hitting `GET /api/v1/health` and confirm it can connect.

  ---

  ## Compatibility

  - **Minimum n8n version:** 1.0.0
  - **LucidAPI version:** 1.4.2
  - Tested against n8n `1.x` running on Node.js 20+

  ---

  ## Usage

  ### Self-hosted base URL

  Because the LucidAPI is self-hosted, the base URL must be set in your credentials. Every user or team running their own LucidLink deployment will have a different address (e.g. `http://192.168.1.10:7778` or `https://lucidapi.mycompany.com`).

  ### Filespace-scoped resources

  Several resources (Direct Link, Entry, Data Store, External Entry, Permission) require a **Filespace ID**. This appears as a shared field at the top of the node when one of those resources is selected.

  ### Cursor-based pagination

  ### External Entry kinds

  When creating an external entry, select the **Kind**:

  - **Single Object File (S3)** — links a file from an S3 bucket. Requires a Data Store ID and S3 Object ID.
  - **HTTP Link File** — links a file accessible via a public HTTP/HTTPS URL. Requires only the URL.

  The **Update** operation is only applicable to `HttpLinkFile` entries and updates the linked URL.

  ### Cursor-based pagination

  The following operations support cursor-based pagination via `limit` and `Next Cursor` fields:

  - Entry → List Children
  - External Entry → List IDs
  - Permission → List

  Pass the `nextCursor` value returned in a previous response into the **Next Cursor** field to fetch the next page. Use a Loop node to iterate through all pages automatically.

  ### Bulk add group members

  The **Group → Bulk Add Members** operation accepts a list of `{ groupId, memberId }` pairs in a single API call (up to 100 items). Use the **Add item** button in the node UI to build the list.

  ### Creating a filespace with customer storage

  When creating a filespace with `storageOwner = customer`, an additional set of S3 fields appears: Access Key ID, Secret Access Key, and optional Endpoint and Bucket Name.

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [LucidLink website](https://www.lucidlink.com/)
  - [LucidLink Knowledge Base](https://support.lucidlink.com/hc/en-us)
  - LucidAPI reference — available at `<Base_URL>/api/v1/docs/` once your LucidLink API instance is running
  - [Node source code](https://github.com/LucidCodeLab/n8n-nodes-lucidlink)

  ---

  ## Version history

  ### 0.1.5

  Aligned with LucidLink LucidAPI v1.4.2:

  - **External Entry → Create**: added `HttpLinkFile` kind support — choose between `SingleObjectFile` (S3) and `HttpLinkFile` (public HTTP URL) when creating an external entry
  - **External Entry → Update**: new operation to update the URL of an existing `HttpLinkFile` entry (`PATCH /api/v1/filespaces/{filespaceId}/external/entries/{entryId}`)
  - **Data Store → Create**: corrected minimum value for `URL Expiration (Minutes)` from 360 to 4320 (3 days) to match the API spec

  ### 0.1.3

  - Added **Direct Link** resource with a Generate operation (`GET /api/v1/filespaces/{filespaceId}/direct-links`)

  ### 0.1.0

  Initial release. Covers the full LucidLink LucidAPI v1.3.0 surface:

  - 8 resources: Filespace, Entry, Data Store, External Entry, Group, Member, Permission, Provider
  - 36 operations
  - Configurable base URL and bearer token credentials

ai_documentation_summary:
  {"purpose":"Interact with self-hosted LucidLink LucidAPI to manage files, filespaces, permissions, groups, and data stores within n8n workflows.","capabilities":["Generate shareable direct links","Create, list, get, update, and delete filespaces","Create, list, resolve, and delete directory entries","Manage S3 data stores and update credentials","Create and manage external entries (SingleObjectFile, HttpLinkFile)","Create, list, update, and delete groups","Add, remove, and list group members","Bulk add members across groups","Add, list, update, and revoke permissions","List available storage providers and regions"],"authentication":"API Token (Bearer token) with Base URL configuration","commonUseCases":["Automate file organization and cleanup in self-hosted LucidLink environments","Manage user access and permissions for shared filespaces","Synchronize external HTTP links or S3 objects into LucidLink","Generate temporary shareable links for file collaboration"],"limitations":["Requires a self-hosted LucidLink API deployment; not compatible with cloud-hosted versions","Dependent on the user maintaining a running LucidLink instance and service account token"],"relatedNodes":[]}


node_type: @hyperflow-global/n8n-nodes-hyperflow-whatsapp.hyperflowWhatsAppTrigger
package_name: @hyperflow-global/n8n-nodes-hyperflow-whatsapp
display_name: Hyperflow WhatsApp Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: alexjrmatos
author_github_url: https://github.com/hyperflow-global/n8n-nodes-hyperflow-whatsapp.git
npm_package_name: @hyperflow-global/n8n-nodes-hyperflow-whatsapp
npm_version: 1.0.11
community_fetched_at: 2026-07-14T14:40:33.862Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Start the flow when WhatsApp events occur. The HTTP response (200 OK) is automatically sent when the webhook is received - do not use the "Respond to Webhook" node in this workflow.

npm_readme:
  # n8n-nodes-hyperflow-whatsapp

  n8n community node for Hyperflow WhatsApp API integration.

  ## Installation

  ### In n8n Desktop App

  1. Go to **Settings** > **Community Nodes**
  2. Select **Install a community node**
  3. Enter `@hyperflow-global/n8n-nodes-hyperflow-whatsapp`
  4. Click **Install**

  ### Manual Installation

  ```bash
  # Navigate to your n8n installation folder
  cd ~/.n8n

  # Install the package
  npm install @hyperflow-global/n8n-nodes-hyperflow-whatsapp
  ```

  ### Development Installation (Local)

  ```bash
  # Build the project
  npm install
  npm run build

  # Link to n8n
  npm link

  # In your n8n installation
  cd ~/.n8n
  npm link @hyperflow-global/n8n-nodes-hyperflow-whatsapp
  ```

  ## Configuration

  ### Credentials: Hyperflow WhatsApp Account

  1. In n8n, go to **Credentials** > **Add Credential**
  2. Search for "Hyperflow WhatsApp Account"
  3. Configure:
    - **API Key**: Your API key for authentication

  ## Available Nodes

  ### Hyperflow WhatsApp Trigger

  Webhook trigger that starts workflows when WhatsApp events occur.

  #### Supported Events


  | Event                     | Description                                                   |
  | ------------------------- | ------------------------------------------------------------- |
  | **Message Received**      | Triggered when a message is received                          |
  | **Message Status Update** | Triggered when message status changes (sent, delivered, read) |
  | **Button Click**          | Triggered when a button is clicked                            |
  | **List Selection**        | Triggered when a list item is selected                        |
  | **Flow Response**         | Triggered when a flow response is received                    |


  #### Options

  - **Filter Numbers**: Only trigger for specific phone numbers
  - **Ignore Own Status**: Ignore status updates for messages sent by this number

  #### Webhook URL

  After activating the workflow, copy the webhook URL provided by n8n and configure it in your Hyperflow API settings.

  ---

  ### Hyperflow WhatsApp

  Send WhatsApp messages through Hyperflow API. Supports multiple message types:

  #### Message Types


  | Type               | Description                                                           |
  | ------------------ | --------------------------------------------------------------------- |
  | **Text**           | Simple text message with optional buttons (postback, URL, voice call) |
  | **Image**          | Send an image with optional caption                                   |
  | **Video**          | Send a video with optional caption                                    |
  | **Audio**          | Send an audio file                                                    |
  | **File**           | Send a document (PDF, etc.)                                           |
  | **Sticker**        | Send a WhatsApp sticker                                               |
  | **Location**       | Send a location with coordinates                                      |
  | **Contact**        | Send a contact card (vCard)                                           |
  | **List**           | Interactive list with sections                                        |
  | **Template (HSM)** | Send approved message templates                                       |
  | **Flows**          | Interactive WhatsApp Flows                                            |
  | **Generic Card**   | Card with image, title, subtitle and buttons                          |
  | **Product**        | Single product from catalog                                           |
  | **Product List**   | Multiple products from catalog                                        |


  ## API Reference

  This node integrates with the Hyperflow WhatsApp API. All requests are made to:

  ```
  POST https://messaging.hyperflowapis.global/whatsapp/send-message
  ```

  With authentication via `api-key` header.

  ## Quick Use Guide - Self-hosted Version

  ### 1. Install the package

  In n8n: **Settings** > **Community Nodes** > **Install a community node** and enter:

  `@hyperflow-global/n8n-nodes-hyperflow-whatsapp`

  Or, from the shell in your n8n data directory (usually `~/.n8n`):

  ```bash
  npm install @hyperflow-global/n8n-nodes-hyperflow-whatsapp
  ```

  Restart n8n if prompted.

  ### 2. Credentials

  **Credentials** > **Add Credential** > **Hyperflow WhatsApp Account** and set the **API Key** from Hyperflow (from the WhatsApp accounts screen in the [Hyperflow integrations portal](https://integracoes.hyperflow.global/whatsapp)).

  ### 3. Available nodes


  | Node                           | Purpose                                                  |
  | ------------------------------ | -------------------------------------------------------- |
  | **Hyperflow WhatsApp**         | Send messages (text, media, templates, lists, and more). |
  | **Hyperflow WhatsApp Trigger** | Start workflows when WhatsApp events occur.              |


  ### 4. Sending a message

  Add **Hyperflow WhatsApp**, choose the credential, enter the **phone number with country code** (digits only, e.g. `5511999999999`), and select the message type.

  ### 5. Inbound events (webhook)

  In **Hyperflow WhatsApp Trigger**, pick the events you need, **activate the workflow**, and copy the **webhook URL** n8n shows. Register that URL in your Hyperflow API settings so events reach your workflow.

  ## Support

  - **Documentation**: [https://help.hyperflow.global/docs/whatsapp-api-hyperflow/whatsapp-api-hyperflow](https://help.hyperflow.global/docs/whatsapp-api-hyperflow/whatsapp-api-hyperflow)
  - **Email**: [faleconosco@hyperflow.global](mailto:faleconosco@hyperflow.global)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when specific WhatsApp events occur via the Hyperflow API, acting as a webhook listener for inbound messages and interactions.","capabilities":["Trigger on message received","Trigger on message status updates (sent, delivered, read)","Trigger on button clicks","Trigger on list selections","Trigger on flow responses","Filter triggers by specific phone numbers","Ignore status updates for messages sent by the workflow's own number"],"authentication":"API key required (configured via Hyperflow WhatsApp Account credentials)","commonUseCases":["Automating customer support responses to incoming WhatsApp messages","Tracking message delivery and read statuses","Handling interactive menu selections and button clicks","Processing inbound data from WhatsApp Flows"],"limitations":["Requires manual configuration of the webhook URL in the Hyperflow API settings after activating the workflow","The node automatically sends a 200 OK response; using a 'Respond to Webhook' node is not recommended and may cause conflicts","Dependent on external Hyperflow API availability and message type support"],"relatedNodes":["Hyperflow WhatsApp","Respond to Webhook","HTTP Request"]}


node_type: @hyperflow-global/n8n-nodes-hyperflow-whatsapp.hyperflowWhatsApp
package_name: @hyperflow-global/n8n-nodes-hyperflow-whatsapp
display_name: Hyperflow WhatsApp
description: Send WhatsApp messages through Hyperflow API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: alexjrmatos
author_github_url: https://github.com/hyperflow-global/n8n-nodes-hyperflow-whatsapp.git
npm_package_name: @hyperflow-global/n8n-nodes-hyperflow-whatsapp
npm_version: 1.0.11
community_fetched_at: 2026-07-14T14:40:33.864Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send a message",
          "description": "Send a message (text, image, video, audio, file, location, contact, list, flows, etc.)"
        },
        {
          "name": "Send Template",
          "value": "sendTemplate",
          "action": "Send a template message",
          "description": "Send a pre-approved HSM template message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send",
      "value": "send",
      "action": "Send a message",
      "description": "Send a message (text, image, video, audio, file, location, contact, list, flows, etc.)",
      "resource": "message"
    },
    {
      "name": "Send Template",
      "value": "sendTemplate",
      "action": "Send a template message",
      "description": "Send a pre-approved HSM template message",
      "resource": "message"
    }
  ]

npm_readme:
  # n8n-nodes-hyperflow-whatsapp

  n8n community node for Hyperflow WhatsApp API integration.

  ## Installation

  ### In n8n Desktop App

  1. Go to **Settings** > **Community Nodes**
  2. Select **Install a community node**
  3. Enter `@hyperflow-global/n8n-nodes-hyperflow-whatsapp`
  4. Click **Install**

  ### Manual Installation

  ```bash
  # Navigate to your n8n installation folder
  cd ~/.n8n

  # Install the package
  npm install @hyperflow-global/n8n-nodes-hyperflow-whatsapp
  ```

  ### Development Installation (Local)

  ```bash
  # Build the project
  npm install
  npm run build

  # Link to n8n
  npm link

  # In your n8n installation
  cd ~/.n8n
  npm link @hyperflow-global/n8n-nodes-hyperflow-whatsapp
  ```

  ## Configuration

  ### Credentials: Hyperflow WhatsApp Account

  1. In n8n, go to **Credentials** > **Add Credential**
  2. Search for "Hyperflow WhatsApp Account"
  3. Configure:
    - **API Key**: Your API key for authentication

  ## Available Nodes

  ### Hyperflow WhatsApp Trigger

  Webhook trigger that starts workflows when WhatsApp events occur.

  #### Supported Events


  | Event                     | Description                                                   |
  | ------------------------- | ------------------------------------------------------------- |
  | **Message Received**      | Triggered when a message is received                          |
  | **Message Status Update** | Triggered when message status changes (sent, delivered, read) |
  | **Button Click**          | Triggered when a button is clicked                            |
  | **List Selection**        | Triggered when a list item is selected                        |
  | **Flow Response**         | Triggered when a flow response is received                    |


  #### Options

  - **Filter Numbers**: Only trigger for specific phone numbers
  - **Ignore Own Status**: Ignore status updates for messages sent by this number

  #### Webhook URL

  After activating the workflow, copy the webhook URL provided by n8n and configure it in your Hyperflow API settings.

  ---

  ### Hyperflow WhatsApp

  Send WhatsApp messages through Hyperflow API. Supports multiple message types:

  #### Message Types


  | Type               | Description                                                           |
  | ------------------ | --------------------------------------------------------------------- |
  | **Text**           | Simple text message with optional buttons (postback, URL, voice call) |
  | **Image**          | Send an image with optional caption                                   |
  | **Video**          | Send a video with optional caption                                    |
  | **Audio**          | Send an audio file                                                    |
  | **File**           | Send a document (PDF, etc.)                                           |
  | **Sticker**        | Send a WhatsApp sticker                                               |
  | **Location**       | Send a location with coordinates                                      |
  | **Contact**        | Send a contact card (vCard)                                           |
  | **List**           | Interactive list with sections                                        |
  | **Template (HSM)** | Send approved message templates                                       |
  | **Flows**          | Interactive WhatsApp Flows                                            |
  | **Generic Card**   | Card with image, title, subtitle and buttons                          |
  | **Product**        | Single product from catalog                                           |
  | **Product List**   | Multiple products from catalog                                        |


  ## API Reference

  This node integrates with the Hyperflow WhatsApp API. All requests are made to:

  ```
  POST https://messaging.hyperflowapis.global/whatsapp/send-message
  ```

  With authentication via `api-key` header.

  ## Quick Use Guide - Self-hosted Version

  ### 1. Install the package

  In n8n: **Settings** > **Community Nodes** > **Install a community node** and enter:

  `@hyperflow-global/n8n-nodes-hyperflow-whatsapp`

  Or, from the shell in your n8n data directory (usually `~/.n8n`):

  ```bash
  npm install @hyperflow-global/n8n-nodes-hyperflow-whatsapp
  ```

  Restart n8n if prompted.

  ### 2. Credentials

  **Credentials** > **Add Credential** > **Hyperflow WhatsApp Account** and set the **API Key** from Hyperflow (from the WhatsApp accounts screen in the [Hyperflow integrations portal](https://integracoes.hyperflow.global/whatsapp)).

  ### 3. Available nodes


  | Node                           | Purpose                                                  |
  | ------------------------------ | -------------------------------------------------------- |
  | **Hyperflow WhatsApp**         | Send messages (text, media, templates, lists, and more). |
  | **Hyperflow WhatsApp Trigger** | Start workflows when WhatsApp events occur.              |


  ### 4. Sending a message

  Add **Hyperflow WhatsApp**, choose the credential, enter the **phone number with country code** (digits only, e.g. `5511999999999`), and select the message type.

  ### 5. Inbound events (webhook)

  In **Hyperflow WhatsApp Trigger**, pick the events you need, **activate the workflow**, and copy the **webhook URL** n8n shows. Register that URL in your Hyperflow API settings so events reach your workflow.

  ## Support

  - **Documentation**: [https://help.hyperflow.global/docs/whatsapp-api-hyperflow/whatsapp-api-hyperflow](https://help.hyperflow.global/docs/whatsapp-api-hyperflow/whatsapp-api-hyperflow)
  - **Email**: [faleconosco@hyperflow.global](mailto:faleconosco@hyperflow.global)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Enables sending various types of WhatsApp messages and triggering workflows based on WhatsApp events through the Hyperflow API integration.","capabilities":["Send text messages with interactive buttons","Send media messages (images, videos, audio, files, stickers)","Send location and contact cards","Send interactive lists","Send approved message templates (HSM)","Implement interactive WhatsApp Flows","Send generic cards with images and buttons","Send product catalogs (single or multiple products)","Trigger workflows on message reception","Trigger workflows on message status updates"],"authentication":"API key required","commonUseCases":["Customer support automation via WhatsApp","Marketing campaigns with interactive media","E-commerce product catalogs and order updates","Two-way communication flows for lead generation","Real-time order tracking and notifications"],"limitations":["Requires a paid Hyperflow WhatsApp account and API key","Webhook URL must be registered in Hyperflow settings after activating the trigger","Phone numbers must be entered with country code and digits only (no symbols)"],"relatedNodes":[]}


node_type: @drivelock/n8n-nodes-drivelock.drivelock
package_name: @drivelock/n8n-nodes-drivelock
display_name: DriveLock API
description: Consume DriveLock API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: guidokalter
author_github_url: https://github.com/guidoka/n8n-nodes-drivelock.git
npm_package_name: @drivelock/n8n-nodes-drivelock
npm_version: 0.2.8
community_fetched_at: 2026-07-14T14:40:33.867Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "applicationRules",
      "options": [
        {
          "name": "Application Rule",
          "value": "applicationRules",
          "description": "Manage application rules"
        },
        {
          "name": "Computer",
          "value": "computer",
          "description": "Manage computers"
        },
        {
          "name": "Device Rule",
          "value": "deviceRules",
          "description": "Manage device rules"
        },
        {
          "name": "Drive Rule",
          "value": "driveRules",
          "description": "Manage drive rules"
        },
        {
          "name": "Entity",
          "value": "entity",
          "description": "Manage entities"
        },
        {
          "name": "Group",
          "value": "group",
          "description": "Manage groups"
        },
        {
          "name": "Manage Schema Extension",
          "value": "customproperty",
          "description": "Check and manage schema extensions for entities computer, drives, devices, software and binaries"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRules",
      "options": [
        {
          "name": "Create Behavior Rules",
          "value": "createBehaviorRules",
          "action": "Create application behavior rules",
          "description": "Create application behavior rules"
        },
        {
          "name": "Create Rules",
          "value": "createRules",
          "action": "Create application rules",
          "description": "Create application rules"
        },
        {
          "name": "Delete Behavior Rules",
          "value": "deleteBehaviorRules",
          "action": "Delete application behavior rules",
          "description": "Delete application behavior rules"
        },
        {
          "name": "Delete Rules",
          "value": "deleteRules",
          "action": "Delete application rules",
          "description": "Delete application rules"
        },
        {
          "name": "Get Behavior Rules",
          "value": "getBehaviorRules",
          "action": "Get application behavior rules",
          "description": "Get application behavior rules from a policy"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get application rules",
          "description": "Get application rules from a policy"
        },
        {
          "name": "Update Behavior Rules",
          "value": "updateBehaviorRules",
          "action": "Update application behavior rules",
          "description": "Update application behavior rules"
        },
        {
          "name": "Update Rules",
          "value": "updateRules",
          "action": "Update application rules",
          "description": "Update application rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "applicationRules"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "delete",
      "options": [
        {
          "name": "BitLocker Recovery",
          "value": "bitlockerRecovery",
          "action": "Get bit locker recovery key",
          "description": "Retrieve BitLocker recovery key. Note: Recovery keys are returned as plain text. Ensure execution logs are secured appropriately."
        },
        {
          "name": "BitLocker2Go Recovery",
          "value": "bitlocker2goRecovery",
          "action": "Get bit locker2 go recovery key",
          "description": "Retrieve BitLocker2Go recovery key for removable drives. Note: Recovery keys are returned as plain text. Ensure execution logs are secured appropriately."
        },
        {
          "name": "Clear Agent ID Token",
          "value": "clearAgentIdToken",
          "action": "Clear agent ID token",
          "description": "WARNING: This irreversibly clears the agent ID token. The computer will need to re-register with the DriveLock Enterprise Service. Use with caution."
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete computers",
          "description": "Delete computers"
        },
        {
          "name": "Execute Actions",
          "value": "executeActions",
          "action": "Execute actions on computers",
          "description": "Execute actions on computers"
        },
        {
          "name": "Mark for Rejoin",
          "value": "markForRejoin",
          "action": "Mark computers for rejoin",
          "description": "Mark computers for rejoin"
        },
        {
          "name": "Online Unlock",
          "value": "onlineUnlock",
          "action": "Unlock a computer online",
          "description": "Unlock a computer online"
        },
        {
          "name": "Set Image Flag",
          "value": "setImageFlag",
          "action": "Set image flag on a computer",
          "description": "Set the image flag on a computer (marks it as an image/template)"
        },
        {
          "name": "Stop Online Unlock",
          "value": "stopOnlineUnlock",
          "action": "Stop online unlock",
          "description": "Stop online unlock here"
        },
        {
          "name": "Stop Online Unlocks (Bulk)",
          "value": "stopOnlineUnlocks",
          "action": "Stop online unlocks for multiple computers",
          "description": "Stop online unlocks for multiple computers at once"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "computer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "check",
      "options": [
        {
          "name": "Check Extension Properties",
          "value": "check",
          "action": "Check extension properties and create or update it",
          "description": "Check Custom Property in the Scheme and create or update it"
        },
        {
          "name": "Delete Custom Data",
          "value": "delete",
          "action": "Delete an custom property",
          "description": "Delete Custom Property"
        },
        {
          "name": "Set Custom Data",
          "value": "update",
          "action": "Update custom properties",
          "description": "Update Values Custom Property"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customproperty"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRules",
      "options": [
        {
          "name": "Create Rules",
          "value": "createRules",
          "action": "Create device rules",
          "description": "Create device control rules"
        },
        {
          "name": "Delete Rules",
          "value": "deleteRules",
          "action": "Delete device rules",
          "description": "Delete device control rules"
        },
        {
          "name": "Get Collections",
          "value": "getCollections",
          "action": "Get device collections",
          "description": "Get device collections"
        },
        {
          "name": "Get Rule by ID",
          "value": "getRule",
          "action": "Get device rule by ID",
          "description": "Get a single device control rule by its rule ID"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get device rules",
          "description": "Get device control rules"
        },
        {
          "name": "Update Collections",
          "value": "updateCollections",
          "action": "Update device collections",
          "description": "Update device collections"
        },
        {
          "name": "Update Rules",
          "value": "updateRules",
          "action": "Update device rules",
          "description": "Update device control rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deviceRules"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getRules",
      "options": [
        {
          "name": "Create Rules",
          "value": "createRules",
          "action": "Create drive rules",
          "description": "Create drive control rules"
        },
        {
          "name": "Delete Rules",
          "value": "deleteRules",
          "action": "Delete drive rules",
          "description": "Delete drive control rules"
        },
        {
          "name": "Get Collections",
          "value": "getCollections",
          "action": "Get drive collections",
          "description": "Get drive collections"
        },
        {
          "name": "Get Rule by ID",
          "value": "getRule",
          "action": "Get drive rule by ID",
          "description": "Get a single drive control rule by its rule ID"
        },
        {
          "name": "Get Rules",
          "value": "getRules",
          "action": "Get drive rules",
          "description": "Get drive control rules"
        },
        {
          "name": "Update Collections",
          "value": "updateCollections",
          "action": "Update drive collections",
          "description": "Update drive collections"
        },
        {
          "name": "Update Rules",
          "value": "updateRules",
          "action": "Update drive rules",
          "description": "Update drive control rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "driveRules"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getList",
      "options": [
        {
          "name": "Export",
          "value": "export",
          "action": "Export entities",
          "description": "Export entities to CSV or JSON"
        },
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get entity by ID",
          "description": "Get entity by ID"
        },
        {
          "name": "Get Count",
          "value": "getCount",
          "action": "Get count of entities",
          "description": "Get count of entities"
        },
        {
          "name": "Get List",
          "value": "getList",
          "action": "Get a list of entities",
          "description": "Get a list of entities"
        },
        {
          "name": "Get Permissions",
          "value": "getPermissions",
          "action": "Get entity permissions",
          "description": "Get permissions for an entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addComputerToGroup",
      "options": [
        {
          "name": "Add Computer To Group",
          "value": "addComputerToGroup",
          "action": "Add computer to group",
          "description": "Add a computer to a group by computer name"
        },
        {
          "name": "Remove Computer From Group",
          "value": "removeComputerFromGroup",
          "action": "Remove computer from group",
          "description": "Remove a computer from a group by computer name"
        },
        {
          "name": "Remove Group Memberships",
          "value": "removeGroupMemberships",
          "action": "Remove group memberships",
          "description": "Remove group memberships by membership IDs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Behavior Rules",
      "value": "createBehaviorRules",
      "action": "Create application behavior rules",
      "description": "Create application behavior rules",
      "resource": "applicationRules"
    },
    {
      "name": "Create Rules",
      "value": "createRules",
      "action": "Create application rules",
      "description": "Create application rules",
      "resource": "applicationRules"
    },
    {
      "name": "Delete Behavior Rules",
      "value": "deleteBehaviorRules",
      "action": "Delete application behavior rules",
      "description": "Delete application behavior rules",
      "resource": "applicationRules"
    },
    {
      "name": "Delete Rules",
      "value": "deleteRules",
      "action": "Delete application rules",
      "description": "Delete application rules",
      "resource": "applicationRules"
    },
    {
      "name": "Get Behavior Rules",
      "value": "getBehaviorRules",
      "action": "Get application behavior rules",
      "description": "Get application behavior rules from a policy",
      "resource": "applicationRules"
    },
    {
      "name": "Get Rules",
      "value": "getRules",
      "action": "Get application rules",
      "description": "Get application rules from a policy",
      "resource": "applicationRules"
    },
    {
      "name": "Update Behavior Rules",
      "value": "updateBehaviorRules",
      "action": "Update application behavior rules",
      "description": "Update application behavior rules",
      "resource": "applicationRules"
    },
    {
      "name": "Update Rules",
      "value": "updateRules",
      "action": "Update application rules",
      "description": "Update application rules",
      "resource": "applicationRules"
    },
    {
      "name": "BitLocker Recovery",
      "value": "bitlockerRecovery",
      "action": "Get bit locker recovery key",
      "description": "Retrieve BitLocker recovery key. Note: Recovery keys are returned as plain text. Ensure execution logs are secured appropriately.",
      "resource": "computer"
    },
    {
      "name": "BitLocker2Go Recovery",
      "value": "bitlocker2goRecovery",
      "action": "Get bit locker2 go recovery key",
      "description": "Retrieve BitLocker2Go recovery key for removable drives. Note: Recovery keys are returned as plain text. Ensure execution logs are secured appropriately.",
      "resource": "computer"
    },
    {
      "name": "Clear Agent ID Token",
      "value": "clearAgentIdToken",
      "action": "Clear agent ID token",
      "description": "WARNING: This irreversibly clears the agent ID token. The computer will need to re-register with the DriveLock Enterprise Service. Use with caution.",
      "resource": "computer"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete computers",
      "description": "Delete computers",
      "resource": "computer"
    },
    {
      "name": "Execute Actions",
      "value": "executeActions",
      "action": "Execute actions on computers",
      "description": "Execute actions on computers",
      "resource": "computer"
    },
    {
      "name": "Mark for Rejoin",
      "value": "markForRejoin",
      "action": "Mark computers for rejoin",
      "description": "Mark computers for rejoin",
      "resource": "computer"
    },
    {
      "name": "Online Unlock",
      "value": "onlineUnlock",
      "action": "Unlock a computer online",
      "description": "Unlock a computer online",
      "resource": "computer"
    },
    {
      "name": "Set Image Flag",
      "value": "setImageFlag",
      "action": "Set image flag on a computer",
      "description": "Set the image flag on a computer (marks it as an image/template)",
      "resource": "computer"
    },
    {
      "name": "Stop Online Unlock",
      "value": "stopOnlineUnlock",
      "action": "Stop online unlock",
      "description": "Stop online unlock here",
      "resource": "computer"
    },
    {
      "name": "Stop Online Unlocks (Bulk)",
      "value": "stopOnlineUnlocks",
      "action": "Stop online unlocks for multiple computers",
      "description": "Stop online unlocks for multiple computers at once",
      "resource": "computer"
    },
    {
      "name": "Check Extension Properties",
      "value": "check",
      "action": "Check extension properties and create or update it",
      "description": "Check Custom Property in the Scheme and create or update it",
      "resource": "customproperty"
    },
    {
      "name": "Delete Custom Data",
      "value": "delete",
      "action": "Delete an custom property",
      "description": "Delete Custom Property",
      "resource": "customproperty"
    },
    {
      "name": "Set Custom Data",
      "value": "update",
      "action": "Update custom properties",
      "description": "Update Values Custom Property",
      "resource": "customproperty"
    },
    {
      "name": "Create Rules",
      "value": "createRules",
      "action": "Create device rules",
      "description": "Create device control rules",
      "resource": "deviceRules"
    },
    {
      "name": "Delete Rules",
      "value": "deleteRules",
      "action": "Delete device rules",
      "description": "Delete device control rules",
      "resource": "deviceRules"
    },
    {
      "name": "Get Collections",
      "value": "getCollections",
      "action": "Get device collections",
      "description": "Get device collections",
      "resource": "deviceRules"
    },
    {
      "name": "Get Rule by ID",
      "value": "getRule",
      "action": "Get device rule by ID",
      "description": "Get a single device control rule by its rule ID",
      "resource": "deviceRules"
    },
    {
      "name": "Get Rules",
      "value": "getRules",
      "action": "Get device rules",
      "description": "Get device control rules",
      "resource": "deviceRules"
    },
    {
      "name": "Update Collections",
      "value": "updateCollections",
      "action": "Update device collections",
      "description": "Update device collections",
      "resource": "deviceRules"
    },
    {
      "name": "Update Rules",
      "value": "updateRules",
      "action": "Update device rules",
      "description": "Update device control rules",
      "resource": "deviceRules"
    },
    {
      "name": "Create Rules",
      "value": "createRules",
      "action": "Create drive rules",
      "description": "Create drive control rules",
      "resource": "driveRules"
    },
    {
      "name": "Delete Rules",
      "value": "deleteRules",
      "action": "Delete drive rules",
      "description": "Delete drive control rules",
      "resource": "driveRules"
    },
    {
      "name": "Get Collections",
      "value": "getCollections",
      "action": "Get drive collections",
      "description": "Get drive collections",
      "resource": "driveRules"
    },
    {
      "name": "Get Rule by ID",
      "value": "getRule",
      "action": "Get drive rule by ID",
      "description": "Get a single drive control rule by its rule ID",
      "resource": "driveRules"
    },
    {
      "name": "Get Rules",
      "value": "getRules",
      "action": "Get drive rules",
      "description": "Get drive control rules",
      "resource": "driveRules"
    },
    {
      "name": "Update Collections",
      "value": "updateCollections",
      "action": "Update drive collections",
      "description": "Update drive collections",
      "resource": "driveRules"
    },
    {
      "name": "Update Rules",
      "value": "updateRules",
      "action": "Update drive rules",
      "description": "Update drive control rules",
      "resource": "driveRules"
    },
    {
      "name": "Export",
      "value": "export",
      "action": "Export entities",
      "description": "Export entities to CSV or JSON",
      "resource": "entity"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get entity by ID",
      "description": "Get entity by ID",
      "resource": "entity"
    },
    {
      "name": "Get Count",
      "value": "getCount",
      "action": "Get count of entities",
      "description": "Get count of entities",
      "resource": "entity"
    },
    {
      "name": "Get List",
      "value": "getList",
      "action": "Get a list of entities",
      "description": "Get a list of entities",
      "resource": "entity"
    },
    {
      "name": "Get Permissions",
      "value": "getPermissions",
      "action": "Get entity permissions",
      "description": "Get permissions for an entity",
      "resource": "entity"
    },
    {
      "name": "Add Computer To Group",
      "value": "addComputerToGroup",
      "action": "Add computer to group",
      "description": "Add a computer to a group by computer name",
      "resource": "group"
    },
    {
      "name": "Remove Computer From Group",
      "value": "removeComputerFromGroup",
      "action": "Remove computer from group",
      "description": "Remove a computer from a group by computer name",
      "resource": "group"
    },
    {
      "name": "Remove Group Memberships",
      "value": "removeGroupMemberships",
      "action": "Remove group memberships",
      "description": "Remove group memberships by membership IDs",
      "resource": "group"
    }
  ]

npm_readme:
  # n8n-nodes-drivelock

  This is an n8n community node. It lets you use the DriveLock API in your n8n workflows.

  _App/service name_ is _one or two sentences describing the service this node integrates with_.

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

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

  ## Installation

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

  ## Operations

  _List the operations supported by your node._

  ## Credentials

  _If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._

  ## Compatibility

  _State the minimum n8n version, as well as which versions you test against. You can also include any known version incompatibility issues._

  ## Usage

  _This is an optional section. Use it to help users with any difficult or confusing aspects of the node._

  _By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * _Link to app/service documentation._

  ## Version history

  _This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._

  ### Start on Windows with a tunnel (cloudflared or something to have hooks reachable via network)
  _points to local server on port_
  ```
  npx cross-env WEBHOOK_URL="https://n8n.onlinesrv.org" npm run dev
  ```

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the DriveLock API, allowing users to manage device security and access controls within their n8n workflows.","capabilities":["Device access management","Security policy enforcement","API data retrieval and manipulation"],"authentication":"API key required","commonUseCases":["Automating device security checks","Managing access permissions for IoT devices","Triggering security alerts based on DriveLock status"],"limitations":["Specific API endpoints and operations are not detailed in the provided README","Requires a pre-existing DriveLock account and API credentials"],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:33
author_name: pulsetic.com
author_github_url: https://github.com/designmodo/pulsetic-n8n.git
npm_package_name: @pulsetic/n8n-nodes-pulsetic
npm_version: 1.0.16
community_fetched_at: 2026-07-14T14:40:33.870Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor"
        },
        {
          "name": "Status Page",
          "value": "statusPage"
        },
        {
          "name": "Status Page Incident",
          "value": "statusPageIncident"
        },
        {
          "name": "Status Page Incident Update",
          "value": "statusPageIncidentUpdate"
        },
        {
          "name": "Status Page Maintenance",
          "value": "statusPageMaintenance"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Add Notification Channel",
          "value": "addNotificationChannel",
          "action": "Add a notification channel"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a monitor"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a monitor"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a monitor"
        },
        {
          "name": "Get Checks",
          "value": "getChecks",
          "action": "Get checks for monitor"
        },
        {
          "name": "Get Events",
          "value": "getEvents",
          "action": "Get events for monitor"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many monitors"
        },
        {
          "name": "Get Snapshots",
          "value": "getSnapshots",
          "action": "Get snapshots for monitor"
        },
        {
          "name": "Get Stats",
          "value": "getStats",
          "action": "Get monitor statistics"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a monitor"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "monitor"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a status page"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a status page"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many status pages"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a status page"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statusPage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create maintenance"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete maintenance"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update maintenance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statusPageMaintenance"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create incident"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete incident"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many incidents for a status page"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update incident"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statusPageIncident"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create incident update"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete incident update"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update incident update"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statusPageIncidentUpdate"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Notification Channel",
      "value": "addNotificationChannel",
      "action": "Add a notification channel",
      "resource": "monitor"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a monitor",
      "resource": "monitor"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a monitor",
      "resource": "monitor"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a monitor",
      "resource": "monitor"
    },
    {
      "name": "Get Checks",
      "value": "getChecks",
      "action": "Get checks for monitor",
      "resource": "monitor"
    },
    {
      "name": "Get Events",
      "value": "getEvents",
      "action": "Get events for monitor",
      "resource": "monitor"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many monitors",
      "resource": "monitor"
    },
    {
      "name": "Get Snapshots",
      "value": "getSnapshots",
      "action": "Get snapshots for monitor",
      "resource": "monitor"
    },
    {
      "name": "Get Stats",
      "value": "getStats",
      "action": "Get monitor statistics",
      "resource": "monitor"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a monitor",
      "resource": "monitor"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a status page",
      "resource": "statusPage"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a status page",
      "resource": "statusPage"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many status pages",
      "resource": "statusPage"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a status page",
      "resource": "statusPage"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create maintenance",
      "resource": "statusPageMaintenance"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete maintenance",
      "resource": "statusPageMaintenance"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update maintenance",
      "resource": "statusPageMaintenance"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create incident",
      "resource": "statusPageIncident"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete incident",
      "resource": "statusPageIncident"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many incidents for a status page",
      "resource": "statusPageIncident"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update incident",
      "resource": "statusPageIncident"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create incident update",
      "resource": "statusPageIncidentUpdate"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete incident update",
      "resource": "statusPageIncidentUpdate"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update incident update",
      "resource": "statusPageIncidentUpdate"
    }
  ]

npm_readme:
  # pulsetic-n8n
  Connect Pulsetic with 1000+ apps using n8n automation. Trigger workflows from uptime and incident events, automate alerts, sync incidents across tools, create tickets, and build powerful custom monitoring integrations that fit seamlessly into your existing DevOps workflows.

  The Pulsetic node allows you to connect your Pulsetic account with n8n and automate uptime monitoring workflows.

  ## About Pulsetic

  Pulsetic is a modern website uptime monitoring service.

  Get instant website downtime alerts via phone call, SMS, email, or Slack when your website goes down. Create beautiful public status pages, manage incidents, and generate uptime reports to keep your visitors and customers informed.

  Learn more at: https://pulsetic.com

ai_documentation_summary:
  {"purpose":"Connects n8n workflows with the Pulsetic uptime monitoring API to automate incident management, alerts, and status page updates based on website availability events.","capabilities":["Trigger workflows on uptime and incident events","Automate alert notifications (phone, SMS, email, Slack)","Sync incidents across different tools","Create support tickets","Generate uptime reports","Manage public status pages"],"authentication":"API key required","commonUseCases":["Automated incident response when websites go down","Multi-channel alerting for critical downtime events","Automatic ticket creation in support systems upon detected outages","Real-time status page updates based on monitoring data"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-greenbubble.greenbubble
package_name: n8n-nodes-greenbubble
display_name: GreenBubble
description: Interact with the GreenBubble WhatsApp automation platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: bizdigitaldominationio
author_github_url: https://github.com/digitaldominationio/
npm_package_name: n8n-nodes-greenbubble
npm_version: 0.1.11
community_fetched_at: 2026-07-14T14:40:33.876Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Bot",
          "value": "bot"
        },
        {
          "name": "Catalog",
          "value": "catalog"
        },
        {
          "name": "Label",
          "value": "label"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Subscriber",
          "value": "subscriber"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "Send Text Message",
          "value": "sendText",
          "action": "Send a text message to a WhatsApp number"
        },
        {
          "name": "Send Template Message",
          "value": "sendTemplate",
          "action": "Send a pre-approved template message"
        },
        {
          "name": "Send Broadcast Template",
          "value": "sendBroadcast",
          "action": "Send a broadcast template campaign"
        },
        {
          "name": "Get Conversation",
          "value": "getConversation",
          "action": "Get conversation history for a subscriber"
        },
        {
          "name": "Get Delivery Status",
          "value": "getStatus",
          "action": "Get delivery status of a sent message"
        },
        {
          "name": "Get PostBack List",
          "value": "getPostbacks",
          "action": "Get list of post-back triggers for a phone number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Subscriber",
          "value": "get",
          "action": "Get a subscriber by phone number"
        },
        {
          "name": "List Subscribers",
          "value": "list",
          "action": "List all subscribers"
        },
        {
          "name": "Create Subscriber",
          "value": "create",
          "action": "Create a new subscriber/contact"
        },
        {
          "name": "Update Subscriber",
          "value": "update",
          "action": "Update an existing subscriber"
        },
        {
          "name": "Delete Subscriber",
          "value": "delete",
          "action": "Delete a subscriber"
        },
        {
          "name": "Reset User Input Flow",
          "value": "resetFlow",
          "action": "Reset the user input flow for a subscriber"
        },
        {
          "name": "Assign to Team Member",
          "value": "assignTeam",
          "action": "Assign subscriber's chat to a team member"
        },
        {
          "name": "Assign Custom Fields",
          "value": "assignCustomFields",
          "action": "Assign custom field values to a subscriber"
        },
        {
          "name": "List Custom Fields",
          "value": "listCustomFields",
          "action": "Get all available custom fields"
        },
        {
          "name": "Assign Labels",
          "value": "assignLabels",
          "action": "Assign labels to a subscriber"
        },
        {
          "name": "Remove Labels",
          "value": "removeLabels",
          "action": "Remove labels from a subscriber"
        },
        {
          "name": "Assign Sequences",
          "value": "assignSequences",
          "action": "Assign sequences to a subscriber"
        },
        {
          "name": "Remove Sequences",
          "value": "removeSequences",
          "action": "Remove sequences from a subscriber"
        },
        {
          "name": "Add Note",
          "value": "addNote",
          "action": "Add a note to a subscriber"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subscriber"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Labels",
          "value": "list",
          "action": "Get all labels for a WhatsApp account"
        },
        {
          "name": "Create Label",
          "value": "create",
          "action": "Create a new label"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "label"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Catalogs",
          "value": "list",
          "action": "List all catalogs"
        },
        {
          "name": "Sync Catalog",
          "value": "sync",
          "action": "Sync products for a catalog"
        },
        {
          "name": "List Orders",
          "value": "listOrders",
          "action": "List catalog orders"
        },
        {
          "name": "Update Order Status",
          "value": "updateOrder",
          "action": "Change the status of an order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "catalog"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "triggerFlow",
      "options": [
        {
          "name": "Trigger Bot Flow",
          "value": "triggerFlow",
          "action": "Trigger a bot flow to a phone number"
        },
        {
          "name": "List Bot Templates",
          "value": "listTemplates",
          "action": "Get all bot templates for an account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connect",
      "options": [
        {
          "name": "Connect Account",
          "value": "connect",
          "action": "Connect a WhatsApp Business Account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLoginUrl",
      "options": [
        {
          "name": "Get Direct Login URL",
          "value": "getLoginUrl",
          "action": "Get a one-time direct login URL for a user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Text Message",
      "value": "sendText",
      "action": "Send a text message to a WhatsApp number",
      "resource": "message"
    },
    {
      "name": "Send Template Message",
      "value": "sendTemplate",
      "action": "Send a pre-approved template message",
      "resource": "message"
    },
    {
      "name": "Send Broadcast Template",
      "value": "sendBroadcast",
      "action": "Send a broadcast template campaign",
      "resource": "message"
    },
    {
      "name": "Get Conversation",
      "value": "getConversation",
      "action": "Get conversation history for a subscriber",
      "resource": "message"
    },
    {
      "name": "Get Delivery Status",
      "value": "getStatus",
      "action": "Get delivery status of a sent message",
      "resource": "message"
    },
    {
      "name": "Get PostBack List",
      "value": "getPostbacks",
      "action": "Get list of post-back triggers for a phone number",
      "resource": "message"
    },
    {
      "name": "Get Subscriber",
      "value": "get",
      "action": "Get a subscriber by phone number",
      "resource": "subscriber"
    },
    {
      "name": "List Subscribers",
      "value": "list",
      "action": "List all subscribers",
      "resource": "subscriber"
    },
    {
      "name": "Create Subscriber",
      "value": "create",
      "action": "Create a new subscriber/contact",
      "resource": "subscriber"
    },
    {
      "name": "Update Subscriber",
      "value": "update",
      "action": "Update an existing subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Delete Subscriber",
      "value": "delete",
      "action": "Delete a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Reset User Input Flow",
      "value": "resetFlow",
      "action": "Reset the user input flow for a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Assign to Team Member",
      "value": "assignTeam",
      "action": "Assign subscriber's chat to a team member",
      "resource": "subscriber"
    },
    {
      "name": "Assign Custom Fields",
      "value": "assignCustomFields",
      "action": "Assign custom field values to a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "List Custom Fields",
      "value": "listCustomFields",
      "action": "Get all available custom fields",
      "resource": "subscriber"
    },
    {
      "name": "Assign Labels",
      "value": "assignLabels",
      "action": "Assign labels to a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Remove Labels",
      "value": "removeLabels",
      "action": "Remove labels from a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Assign Sequences",
      "value": "assignSequences",
      "action": "Assign sequences to a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Remove Sequences",
      "value": "removeSequences",
      "action": "Remove sequences from a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "Add Note",
      "value": "addNote",
      "action": "Add a note to a subscriber",
      "resource": "subscriber"
    },
    {
      "name": "List Labels",
      "value": "list",
      "action": "Get all labels for a WhatsApp account",
      "resource": "label"
    },
    {
      "name": "Create Label",
      "value": "create",
      "action": "Create a new label",
      "resource": "label"
    },
    {
      "name": "List Catalogs",
      "value": "list",
      "action": "List all catalogs",
      "resource": "catalog"
    },
    {
      "name": "Sync Catalog",
      "value": "sync",
      "action": "Sync products for a catalog",
      "resource": "catalog"
    },
    {
      "name": "List Orders",
      "value": "listOrders",
      "action": "List catalog orders",
      "resource": "catalog"
    },
    {
      "name": "Update Order Status",
      "value": "updateOrder",
      "action": "Change the status of an order",
      "resource": "catalog"
    },
    {
      "name": "Trigger Bot Flow",
      "value": "triggerFlow",
      "action": "Trigger a bot flow to a phone number",
      "resource": "bot"
    },
    {
      "name": "List Bot Templates",
      "value": "listTemplates",
      "action": "Get all bot templates for an account",
      "resource": "bot"
    },
    {
      "name": "Connect Account",
      "value": "connect",
      "action": "Connect a WhatsApp Business Account",
      "resource": "account"
    },
    {
      "name": "Get Direct Login URL",
      "value": "getLoginUrl",
      "action": "Get a one-time direct login URL for a user",
      "resource": "user"
    }
  ]

npm_readme:
  # n8n-nodes-greenbubble

  An n8n community node for [GreenBubble.io](https://www.greenbubble.io) — a WhatsApp Business automation and chatbot platform.

  ---

  ## Installation

  In your n8n instance:

  ```
  Settings → Community Nodes → Install → n8n-nodes-greenbubble
  ```

  Or via npm in a self-hosted setup:

  ```bash
  npm install n8n-nodes-greenbubble
  ```

  ---

  ## Credentials

  Create a **GreenBubble API** credential with:
  - **API Token** — found in your GreenBubble Developer Dashboard at `app.greenbubble.io/developer`
  - **Base URL** — `https://app.greenbubble.io` (default, change only if self-hosted)

  ---

  ## Supported Resources & Operations

  ### 💬 Message
  | Operation | Description |
  |-----------|-------------|
  | Send Text Message | Send a plain text WhatsApp message |
  | Send Template Message | Send an approved template message with dynamic variables |
  | Send Broadcast Template | Launch a broadcast campaign |
  | Get Conversation | Fetch conversation history for a subscriber |
  | Get Delivery Status | Check delivery/read status by message ID |
  | Get PostBack List | List all post-back triggers for a phone number |

  ### 👤 Subscriber
  | Operation | Description |
  |-----------|-------------|
  | Get Subscriber | Fetch subscriber by phone number |
  | List Subscribers | Paginated list of all subscribers |
  | Create Subscriber | Add a new contact |
  | Update Subscriber | Edit subscriber name, gender, labels |
  | Delete Subscriber | Remove a subscriber |
  | Reset User Input Flow | Reset a bot conversation flow |
  | Assign to Team Member | Route chat to a specific agent |
  | Assign Custom Fields | Set custom field values |
  | List Custom Fields | Get all configured custom fields |
  | Assign Labels | Add labels to a subscriber |
  | Remove Labels | Remove labels from a subscriber |
  | Assign Sequences | Enrol subscriber in sequences |
  | Remove Sequences | Remove subscriber from sequences |
  | Add Note | Attach an internal note to a subscriber |

  ### 🏷️ Label
  | Operation | Description |
  |-----------|-------------|
  | List Labels | Get all labels for a phone number |
  | Create Label | Create a new label |

  ### 🛍️ Catalog
  | Operation | Description |
  |-----------|-------------|
  | List Catalogs | Get all catalogs |
  | Sync Catalog | Sync products from Meta catalog |
  | List Orders | Get all catalog orders |
  | Update Order Status | Change order status (Approved / Shipped / Delivered / etc.) |

  ### 🤖 Bot
  | Operation | Description |
  |-----------|-------------|
  | Trigger Bot Flow | Send a bot flow to any number |
  | List Bot Templates | Get all bot templates for an account |

  ### 🔗 Account
  | Operation | Description |
  |-----------|-------------|
  | Connect Account | Connect a WhatsApp Business Account via API |

  ### 👥 User
  | Operation | Description |
  |-----------|-------------|
  | Get Direct Login URL | Generate a one-time secure login URL for a sub-user |

  ---

  ## Development

  ```bash
  npm install
  npm run build
  npm run dev   # watch mode
  ```

  ---

  ## Author

  **Biswajit Pradhan**
  - Email: [biswajit@greenbubble.io](mailto:biswajit@greenbubble.io)
  - Website: [https://www.greenbubble.io](https://www.greenbubble.io)
  - Company: Digital Domination Services LLC

  ---

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Interact with the GreenBubble WhatsApp automation platform to send messages, manage subscribers, handle catalogs, and configure chatbots.","capabilities":["Send text and template messages","Launch broadcast campaigns","Retrieve conversation history and delivery status","Create, update, and delete subscribers","Manage subscriber labels, custom fields, and notes","Assign subscribers to team members or sequences","Reset user input flows","List and manage labels","Sync and manage product catalogs","Update order statuses"],"authentication":"API Token required","commonUseCases":["Automating customer support responses via WhatsApp","Sending marketing broadcasts and promotional templates","Managing customer contact lists and segmentation","Order status notifications for e-commerce","Integrating chatbot flows for lead qualification"],"limitations":[],"relatedNodes":[]}


node_type: @queng123/n8n-nodes-beeper.beeper
package_name: @queng123/n8n-nodes-beeper
display_name: Beeper
description: Interact with Beeper Desktop API to manage chats and messages
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: queng
author_github_url: https://github.com/Queng123/n8n-nodes-beeper.git
npm_package_name: @queng123/n8n-nodes-beeper
npm_version: 2.0.1
community_fetched_at: 2026-07-14T14:40:33.879Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List all accounts",
          "description": "List all connected accounts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive a chat",
          "description": "Archive or unarchive a chat"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a chat",
          "description": "Create a new chat"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a chat",
          "description": "Get details of a specific chat"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all chats",
          "description": "List all chats"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search chats",
          "description": "Search for chats"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search contacts",
          "description": "Search for contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List messages",
          "description": "List messages in a chat"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search messages",
          "description": "Search for messages"
        },
        {
          "name": "Send",
          "value": "send",
          "action": "Send a message",
          "description": "Send a message to a chat"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List all accounts",
      "description": "List all connected accounts",
      "resource": "account"
    },
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive a chat",
      "description": "Archive or unarchive a chat",
      "resource": "chat"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a chat",
      "description": "Create a new chat",
      "resource": "chat"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a chat",
      "description": "Get details of a specific chat",
      "resource": "chat"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all chats",
      "description": "List all chats",
      "resource": "chat"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search chats",
      "description": "Search for chats",
      "resource": "chat"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search contacts",
      "description": "Search for contacts",
      "resource": "contact"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List messages",
      "description": "List messages in a chat",
      "resource": "message"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search messages",
      "description": "Search for messages",
      "resource": "message"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send a message",
      "description": "Send a message to a chat",
      "resource": "message"
    }
  ]

npm_readme:
  # n8n-nodes-beeper

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

  [Beeper](https://beeper.com) is a unified messaging app that brings all your chat networks (iMessage, WhatsApp, Telegram, Instagram, Slack, Discord, and more) into a single inbox. This node connects to the Beeper Desktop API to automate your messaging workflows.

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

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

  ## Installation

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

  ## Operations

  ### Account
  - **List** - List all connected accounts (WhatsApp, Telegram, iMessage, etc.)

  ### Chat
  - **List** - List all chats with optional limit
  - **Get** - Get details of a specific chat by ID
  - **Create** - Create a new chat with a recipient
  - **Search** - Search for chats by query
  - **Archive** - Archive or unarchive a chat

  ### Message
  - **Send** - Send a message to a chat
  - **List** - List messages in a chat with optional limit
  - **Search** - Search for messages across all chats

  ### Contact
  - **Search** - Search for contacts in a specific account

  ## Credentials

  Before using this node, you need:

  1. **Beeper Desktop** version 4.1.169 or later installed
  2. **Beeper Desktop API** enabled:
     - Open Beeper Desktop
     - Go to **Settings > Developers**
     - Toggle **Beeper Desktop API** to enable it

  To configure credentials in n8n:

  1. Go to **Settings > Credentials**
  2. Click **Add Credential**
  3. Search for **Beeper API**
  4. Configure:
     - **Base URL**: `http://localhost:23373` (default)
     - **API Token**: Use the one configured in Beeper
  5. Click **Test** to verify the connection

  ## Compatibility

  - **n8n**: 1.0.0+
  - **Node.js**: 18.x+
  - **Beeper Desktop**: 4.1.169+

  ## Usage

  ### Sending a message

  1. Use **Chat > List** or **Chat > Search** to find the chat ID
  2. Use **Message > Send** with the chat ID and your message text

  ### Finding a Chat ID

  Chat IDs in Beeper have the format `!roomid:beeper.local`. You can get them by:
  - Using the **Chat > List** operation
  - Using the **Chat > Search** operation with a query

  ### Rate Limiting

  Sending too many messages may result in account suspension by the messaging networks. Add delays between messages and use this node for personal automation only.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Beeper Website](https://beeper.com)
  * [Beeper Desktop API Documentation](https://developers.beeper.com/desktop-api)

  ## Version history

  ### 0.1.0

  Initial release with:
  - Account operations: List
  - Chat operations: List, Get, Create, Search, Archive
  - Message operations: Send, List, Search
  - Contact operations: Search

ai_documentation_summary:
  {"purpose":"Interact with the Beeper Desktop API to automate messaging workflows across unified chat networks like WhatsApp, Telegram, and Slack.","capabilities":["List connected accounts","List, get, create, search, and archive chats","Send messages to chats","List and search messages across chats","Search for contacts within specific accounts"],"authentication":"API Token required","commonUseCases":["Automated customer support responses across multiple messaging platforms","Unified inbox management for personal communication","Cross-platform message archiving and organization","Contact discovery across different chat networks"],"limitations":["Requires Beeper Desktop version 4.1.169 or later installed locally","Sending too many messages may result in account suspension by messaging networks","Limited to personal automation use only","Requires Beeper Desktop API to be explicitly enabled in settings"],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:33
author_name: stefanvdlugt.dongit
author_github_url: https://github.com/dongit-org/n8n-nodes-reporter.git
npm_package_name: @dongit/n8n-nodes-reporter
npm_version: 2026.6.30
community_fetched_at: 2026-07-14T14:40:33.882Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "activity",
      "options": [
        {
          "name": "Activity",
          "value": "activity"
        },
        {
          "name": "API Token",
          "value": "aPIToken"
        },
        {
          "name": "Assessment",
          "value": "assessment"
        },
        {
          "name": "Assessment Comment",
          "value": "assessmentComment"
        },
        {
          "name": "Assessment Phase",
          "value": "assessmentPhase"
        },
        {
          "name": "Assessment Section",
          "value": "assessmentSection"
        },
        {
          "name": "Assessment Section Comment",
          "value": "assessmentSectionComment"
        },
        {
          "name": "Assessment Section Template",
          "value": "assessmentSectionTemplate"
        },
        {
          "name": "Assessment Task Set",
          "value": "assessmentTaskSet"
        },
        {
          "name": "Assessment Template",
          "value": "assessmentTemplate"
        },
        {
          "name": "Assessment User",
          "value": "assessmentUser"
        },
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Custom Field",
          "value": "customField"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Finding",
          "value": "finding"
        },
        {
          "name": "Finding Event",
          "value": "findingEvent"
        },
        {
          "name": "Finding Layout",
          "value": "findingLayout"
        },
        {
          "name": "Finding Template",
          "value": "findingTemplate"
        },
        {
          "name": "Language",
          "value": "language"
        },
        {
          "name": "Output File",
          "value": "outputFile"
        },
        {
          "name": "Reaction",
          "value": "reaction"
        },
        {
          "name": "Role",
          "value": "role"
        },
        {
          "name": "Target",
          "value": "target"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Task Set",
          "value": "taskSet"
        },
        {
          "name": "Team",
          "value": "team"
        },
        {
          "name": "Team User",
          "value": "teamUser"
        },
        {
          "name": "Test Case",
          "value": "testCase"
        },
        {
          "name": "Theme",
          "value": "theme"
        },
        {
          "name": "Tool Finding",
          "value": "toolFinding"
        },
        {
          "name": "Tool Target",
          "value": "toolTarget"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listActivities",
      "options": [
        {
          "name": "List activities",
          "value": "listActivities",
          "action": "List activities",
          "description": "Retrieve a list of all accessible activities. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "activity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "retrieveCurrentAPIToken",
      "options": [
        {
          "name": "Retrieve current API token",
          "value": "retrieveCurrentAPIToken",
          "action": "Retrieve current API token",
          "description": "Retrieve details of the API token used to authenticate the current request. No token permissions are required for this request. Object information."
        },
        {
          "name": "List API tokens",
          "value": "listAPITokens",
          "action": "List API tokens",
          "description": "Retrieve a list of API tokens for the authenticated user. Object information."
        },
        {
          "name": "Create an API token",
          "value": "createAnAPIToken",
          "action": "Create an API token",
          "description": "Create a new API token. The created token's abilities must be a subset of the creating token's abilities and cannot include `api_token:read` or `api_token:write`. The expiration date must be before..."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aPIToken"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAssessments",
      "options": [
        {
          "name": "List assessments",
          "value": "listAssessments",
          "action": "List assessments",
          "description": "Retrieve a list of all accessible assessments. Object information."
        },
        {
          "name": "Create an assessment",
          "value": "createAnAssessment",
          "action": "Create an assessment",
          "description": "Create a new assessment. Object information."
        },
        {
          "name": "Retrieve an assessment",
          "value": "retrieveAnAssessment",
          "action": "Retrieve an assessment",
          "description": "Retrieve all details of the given assessment. Object information."
        },
        {
          "name": "Update an assessment",
          "value": "updateAnAssessment",
          "action": "Update an assessment",
          "description": "Update the posted assessment. Object information."
        },
        {
          "name": "Retrieve the full PDF report",
          "value": "retrieveTheFullPDFReport",
          "action": "Retrieve the full PDF report",
          "description": "This route supports both GET and POST requests. The POST request supports passing a password that will be used to encrypt the resulting PDF report. If an admin has enabled the \"Password-protect PDF..."
        },
        {
          "name": "Retrieve the management PDF report",
          "value": "retrieveTheManagementPDFReport",
          "action": "Retrieve the management PDF report",
          "description": "This route supports both GET and POST requests. The POST request supports passing a password that will be used to encrypt the resulting PDF report. If an admin has enabled the \"Password-protect PDF..."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAnAssessmentComment",
      "options": [
        {
          "name": "Create an assessment comment",
          "value": "createAnAssessmentComment",
          "action": "Create an assessment comment",
          "description": "Create a new assessment comment. Object information."
        },
        {
          "name": "Update an assessment comment",
          "value": "updateAnAssessmentComment",
          "action": "Update an assessment comment",
          "description": "Update an existing assessment comment. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentComment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateAnAssessmentPhase",
      "options": [
        {
          "name": "Update an assessment phase",
          "value": "updateAnAssessmentPhase",
          "action": "Update an assessment phase",
          "description": "Update an existing assessment phase. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentPhase"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAssessmentSections",
      "options": [
        {
          "name": "List assessment sections",
          "value": "listAssessmentSections",
          "action": "List assessment sections",
          "description": "Retrieve a list of all accessible assessment sections. Filter by `assessment_id` to scope to a specific assessment."
        },
        {
          "name": "Retrieve an assessment section",
          "value": "retrieveAnAssessmentSection",
          "action": "Retrieve an assessment section",
          "description": "Retrieve all details of the given assessment section. Object information."
        },
        {
          "name": "Update an assessment section",
          "value": "updateAnAssessmentSection",
          "action": "Update an assessment section",
          "description": "Update an existing assessment section. Object information."
        },
        {
          "name": "Create an assessment section",
          "value": "createAnAssessmentSection",
          "action": "Create an assessment section",
          "description": "Create a new assessment section within the given assessment. Use `anchor_section_id` and `place` to control where the section is inserted relative to an existing section. When omitted, the section ..."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentSection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAnAssessmentSectionComment",
      "options": [
        {
          "name": "Create an assessment section comment",
          "value": "createAnAssessmentSectionComment",
          "action": "Create an assessment section comment",
          "description": "Create a new assessment section comment. Object information."
        },
        {
          "name": "Update an assessment section comment",
          "value": "updateAnAssessmentSectionComment",
          "action": "Update an assessment section comment",
          "description": "Update an existing assessment section comment. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentSectionComment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAssessmentSectionTemplates",
      "options": [
        {
          "name": "List assessment section templates",
          "value": "listAssessmentSectionTemplates",
          "action": "List assessment section templates",
          "description": "Retrieve a list of all accessible assessment section templates. Filter by `assessment_template_id` to scope to a specific template."
        },
        {
          "name": "Retrieve an assessment section template",
          "value": "retrieveAnAssessmentSectionTemplate",
          "action": "Retrieve an assessment section template",
          "description": "Retrieve all details of the given assessment section template."
        },
        {
          "name": "Update an assessment section template",
          "value": "updateAnAssessmentSectionTemplate",
          "action": "Update an assessment section template",
          "description": "Update an existing assessment section template."
        },
        {
          "name": "Create an assessment section template",
          "value": "createAnAssessmentSectionTemplate",
          "action": "Create an assessment section template",
          "description": "Create a new section template within the given assessment template. Use `anchor_section_id` and `place` to control where the section is inserted relative to an existing section. When omitted, the s..."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentSectionTemplate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addATaskSetToAnAssessment",
      "options": [
        {
          "name": "Add a task set to an assessment",
          "value": "addATaskSetToAnAssessment",
          "action": "Add a task set to an assessment",
          "description": "Assign an existing task set's tasks to an assessment."
        },
        {
          "name": "Remove a task set from an assessment",
          "value": "removeATaskSetFromAnAssessment",
          "action": "Remove a task set from an assessment",
          "description": "Remove a task set's tasks from an assessment. This does **not** delete the task set. It just removes its tasks from the assessment."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentTaskSet"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listAssessmentTemplates",
      "options": [
        {
          "name": "List assessment templates",
          "value": "listAssessmentTemplates",
          "action": "List assessment templates",
          "description": "Retrieve a list of all accessible assessment templates. Object information."
        },
        {
          "name": "Create an assessment template",
          "value": "createAnAssessmentTemplate",
          "action": "Create an assessment template",
          "description": "Create a new, empty assessment template. Section templates can be added using the assessment section template endpoints."
        },
        {
          "name": "Retrieve an assessment template",
          "value": "retrieveAnAssessmentTemplate",
          "action": "Retrieve an assessment template",
          "description": "Retrieve all details of the given assessment template. Object information."
        },
        {
          "name": "Update an assessment template",
          "value": "updateAnAssessmentTemplate",
          "action": "Update an assessment template",
          "description": "Update an existing assessment template. Supply `language_id` to target a specific translation when updating the `name`. Supply `primary_language_id` to switch the primary language (the template mus..."
        },
        {
          "name": "Add a translation to an assessment template",
          "value": "addATranslationToAnAssessmentTemplate",
          "action": "Add a translation to an assessment template",
          "description": "Add a new language translation to the template. Translatable fields are copied from `source_language_id` (or the primary language when omitted). Sections and checklists of the template also gain th..."
        },
        {
          "name": "Remove a translation from an assessment template",
          "value": "removeATranslationFromAnAssessmentTemplate",
          "action": "Remove a translation from an assessment template",
          "description": "Remove a language translation from the template. The translation is also removed from sections and checklists. The primary language cannot be removed."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentTemplate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAnAssessmentUser",
      "options": [
        {
          "name": "Create an assessment user",
          "value": "createAnAssessmentUser",
          "action": "Create an assessment user",
          "description": "Assign an existing user to an assessment. Object information."
        },
        {
          "name": "Update an assessment user",
          "value": "updateAnAssessmentUser",
          "action": "Update an assessment user",
          "description": "Update assessment-specific values for a user assigned to the assessment. Object information. To update the user's data, such as name and email address, see the User endpoints."
        },
        {
          "name": "Remove an assessment user",
          "value": "removeAnAssessmentUser",
          "action": "Remove an assessment user",
          "description": "Remove a user from an assessment. Object information. A user can not be removed this way if they are assigned to the assessment through a team. This does **not** delete the user, it just revokes th..."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assessmentUser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listClients",
      "options": [
        {
          "name": "List clients",
          "value": "listClients",
          "action": "List clients",
          "description": "Retrieve a list of all accessible clients. Object information. To also retrieve the logos of the clients, specify the \"documents\" relation in the request. See Including Related Data."
        },
        {
          "name": "Create a client",
          "value": "createAClient",
          "action": "Create a client",
          "description": "Create a new client. Object information. To add a logo to a client, attach a document representing the logo to it in a separate request. See Documents."
        },
        {
          "name": "Retrieve a client",
          "value": "retrieveAClient",
          "action": "Retrieve a client",
          "description": "Retrieve all details of the given client. Object information. To also retrieve the logo of the client, specify the \"documents\" relation in the request. See Including Related Data."
        },
        {
          "name": "Update a client",
          "value": "updateAClient",
          "action": "Update a client",
          "description": "Update an existing client. Object information. To add or replace a logo for a client, create a document for it in a separate request. This will overwrite the existing avatar. See Documents."
        },
        {
          "name": "Update client managers",
          "value": "updateClientManagers",
          "action": "Update client managers",
          "description": "Update the list of client managers for a client. Client managers can manage this list but cannot remove themselves."
        },
        {
          "name": "Remove account manager",
          "value": "removeAccountManager",
          "action": "Remove account manager",
          "description": "Remove an account manager from the client. Optionally, specify assessments to unassign the manager from."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listCustomFields",
      "options": [
        {
          "name": "List custom fields",
          "value": "listCustomFields",
          "action": "List custom fields",
          "description": "Retrieve a list of all accessible custom fields Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customField"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "retrieveADocument",
      "options": [
        {
          "name": "Retrieve a document",
          "value": "retrieveADocument",
          "action": "Retrieve a document",
          "description": "Retrieve the stored file contents of the given document. Object information."
        },
        {
          "name": "Upload a document",
          "value": "uploadADocument",
          "action": "Upload a document",
          "description": "Upload a new (draft) document. Object information. Use `Content-Type: multipart/form-data` for this request."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFindings",
      "options": [
        {
          "name": "List findings",
          "value": "listFindings",
          "action": "List findings",
          "description": "Retrieve a list of all accessible findings. Object information."
        },
        {
          "name": "Create a finding",
          "value": "createAFinding",
          "action": "Create a finding",
          "description": "Create a new finding. Object information."
        },
        {
          "name": "Retrieve a finding",
          "value": "retrieveAFinding",
          "action": "Retrieve a finding",
          "description": "Retrieve all details of the given finding. Object information."
        },
        {
          "name": "Update a finding",
          "value": "updateAFinding",
          "action": "Update a finding",
          "description": "Update an existing finding. Object information."
        },
        {
          "name": "Create a finding from a template",
          "value": "createAFindingFromATemplate",
          "action": "Create a finding from a template",
          "description": "Create a new finding from a finding template. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "finding"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFindingEvents",
      "options": [
        {
          "name": "List finding events",
          "value": "listFindingEvents",
          "action": "List finding events",
          "description": "Retrieve a list of all accessible finding events. Object information."
        },
        {
          "name": "Create a finding comment",
          "value": "createAFindingComment",
          "action": "Create a finding comment",
          "description": "Create a new finding comment. Object information. Note that comments added before the publication of the finding are displayed as child comments of the 'created event' of the finding."
        },
        {
          "name": "Update a finding comment",
          "value": "updateAFindingComment",
          "action": "Update a finding comment",
          "description": "Update an existing finding comment. Object information."
        },
        {
          "name": "Create a finding retest",
          "value": "createAFindingRetest",
          "action": "Create a finding retest",
          "description": "Perform a retest. Object information. You can only create a retest if the finding has a retest inquiry that doesn't already have a retest."
        },
        {
          "name": "Update a finding retest",
          "value": "updateAFindingRetest",
          "action": "Update a finding retest",
          "description": "Update an existing finding retest. Object information."
        },
        {
          "name": "Create a finding retest inquiry",
          "value": "createAFindingRetestInquiry",
          "action": "Create a finding retest inquiry",
          "description": "Request a retest. Object information. Creating a new retest inquiry for a finding is not allowed if the status of the finding is set to 'Retest Pending.' The finding status is set to 'Retest Pendin..."
        },
        {
          "name": "Update a retest inquiry",
          "value": "updateARetestInquiry",
          "action": "Update a retest inquiry",
          "description": "Update an existing finding retest inquiry. Object information."
        },
        {
          "name": "Create a finding retest cancelled event",
          "value": "createAFindingRetestCancelledEvent",
          "action": "Create a finding retest cancelled event",
          "description": "Cancel a retest request. Object information. You can only cancel a retest if the finding has a retest inquiry that doesn't already have a retest."
        },
        {
          "name": "Update a retest cancelled event",
          "value": "updateARetestCancelledEvent",
          "action": "Update a retest cancelled event",
          "description": "Update an existing finding retest cancelled event. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "findingEvent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFindingLayouts",
      "options": [
        {
          "name": "List finding layouts",
          "value": "listFindingLayouts",
          "action": "List finding layouts",
          "description": "Retrieve a list of all finding layouts. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "findingLayout"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchFindingTemplates",
      "options": [
        {
          "name": "Search finding templates",
          "value": "searchFindingTemplates",
          "action": "Search finding templates",
          "description": "Search for finding templates. It is not possible to include relations. Object information. If a search term is submitted and neither \"prefer_language\" nor \"language_id\" are, this will return the te..."
        },
        {
          "name": "List finding templates",
          "value": "listFindingTemplates",
          "action": "List finding templates",
          "description": "Retrieve a list of all accessible finding templates. Object information."
        },
        {
          "name": "Create a finding template",
          "value": "createAFindingTemplate",
          "action": "Create a finding template",
          "description": "Create a new finding template. Object information."
        },
        {
          "name": "Retrieve a finding template",
          "value": "retrieveAFindingTemplate",
          "action": "Retrieve a finding template",
          "description": "Retrieve all details of the given finding. Object information."
        },
        {
          "name": "Update a finding template",
          "value": "updateAFindingTemplate",
          "action": "Update a finding template",
          "description": "Update an existing finding template. Object information. Only custom finding templates (`source`: 0) can be updated."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "findingTemplate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listLanguages",
      "options": [
        {
          "name": "List languages",
          "value": "listLanguages",
          "action": "List languages",
          "description": "Retrieve a list of all languages. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "language"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadAnOutputFileToParse",
      "options": [
        {
          "name": "Upload an output file to parse",
          "value": "uploadAnOutputFileToParse",
          "action": "Upload an output file to parse",
          "description": "Create a new output file. Object information. Once created, the file will be parsed in the background."
        },
        {
          "name": "List output files",
          "value": "listOutputFiles",
          "action": "List output files",
          "description": "Retrieve a list of all output files. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "outputFile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAReaction",
      "options": [
        {
          "name": "Create a reaction",
          "value": "createAReaction",
          "action": "Create a reaction",
          "description": "Adds a reaction to the provided model, if that reaction does not exist for the current user. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reaction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listGlobalRoles",
      "options": [
        {
          "name": "List global roles",
          "value": "listGlobalRoles",
          "action": "List global roles",
          "description": "Retrieve a list of global roles. Object information."
        },
        {
          "name": "List assessment roles",
          "value": "listAssessmentRoles",
          "action": "List assessment roles",
          "description": "Retrieve a list of assessment roles. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "role"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listTargets",
      "options": [
        {
          "name": "List targets",
          "value": "listTargets",
          "action": "List targets",
          "description": "Retrieve a list of all accessible targets. Object information."
        },
        {
          "name": "Create a target",
          "value": "createATarget",
          "action": "Create a target",
          "description": "Create a new target. Object information."
        },
        {
          "name": "Retrieve a target",
          "value": "retrieveATarget",
          "action": "Retrieve a target",
          "description": "Retrieve all details of the given target. Object information."
        },
        {
          "name": "Update a target",
          "value": "updateATarget",
          "action": "Update a target",
          "description": "Update an existing target. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "target"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listTasks",
      "options": [
        {
          "name": "List tasks",
          "value": "listTasks",
          "action": "List tasks",
          "description": "Retrieve a list of all tasks. Object information."
        },
        {
          "name": "Retrieve a task",
          "value": "retrieveATask",
          "action": "Retrieve a task",
          "description": "Retrieve all details of the given task. Object information."
        },
        {
          "name": "Update a task",
          "value": "updateATask",
          "action": "Update a task",
          "description": "Update an existing task. Object information."
        },
        {
          "name": "Create a task",
          "value": "createATask",
          "action": "Create a task",
          "description": "Create a new task. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listTaskSets",
      "options": [
        {
          "name": "List task sets",
          "value": "listTaskSets",
          "action": "List task sets",
          "description": "Retrieve a list of all task sets. Object information."
        },
        {
          "name": "Create a task set",
          "value": "createATaskSet",
          "action": "Create a task set",
          "description": "Create a new task set. Object information."
        },
        {
          "name": "Retrieve a task set",
          "value": "retrieveATaskSet",
          "action": "Retrieve a task set",
          "description": "Retrieve all details of the given task set. Object information."
        },
        {
          "name": "Update a task set",
          "value": "updateATaskSet",
          "action": "Update a task set",
          "description": "Update an existing task set. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "taskSet"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createATeam",
      "options": [
        {
          "name": "Create a team",
          "value": "createATeam",
          "action": "Create a team",
          "description": "Create a new team. Object information."
        },
        {
          "name": "Update a team",
          "value": "updateATeam",
          "action": "Update a team",
          "description": "Update an existing team. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addAUserToATeam",
      "options": [
        {
          "name": "Add a user to a team",
          "value": "addAUserToATeam",
          "action": "Add a user to a team",
          "description": "Assign an existing user to a team. Object information."
        },
        {
          "name": "Update a team user",
          "value": "updateATeamUser",
          "action": "Update a team user",
          "description": "Update team-specific values for a user assigned to the team. Object information. To update the user's data, such as name and email address, see the User endpoints."
        },
        {
          "name": "Remove a user from a team",
          "value": "removeAUserFromATeam",
          "action": "Remove a user from a team",
          "description": "Remove a user from a team. Object information. This does **not** delete the user, it just removes them from the team."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "teamUser"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listTestCases",
      "options": [
        {
          "name": "List test cases",
          "value": "listTestCases",
          "action": "List test cases",
          "description": "Retrieve a list of all accessible test cases. Object information."
        },
        {
          "name": "Retrieve a test case",
          "value": "retrieveATestCase",
          "action": "Retrieve a test case",
          "description": "Retrieve all details of the given test case. Object information."
        },
        {
          "name": "Update a test case",
          "value": "updateATestCase",
          "action": "Update a test case",
          "description": "Update an existing test case. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "testCase"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listThemes",
      "options": [
        {
          "name": "List themes",
          "value": "listThemes",
          "action": "List themes",
          "description": "Retrieve a list of all themes. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "theme"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listToolFindings",
      "options": [
        {
          "name": "List tool findings",
          "value": "listToolFindings",
          "action": "List tool findings",
          "description": "Retrieve a list of all tool findings. Object information."
        },
        {
          "name": "Retrieve a tool finding",
          "value": "retrieveAToolFinding",
          "action": "Retrieve a tool finding",
          "description": "Retrieve all details of the given tool finding. Object information."
        },
        {
          "name": "Update a tool finding",
          "value": "updateAToolFinding",
          "action": "Update a tool finding",
          "description": "Update an existing tool finding. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "toolFinding"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listToolTargets",
      "options": [
        {
          "name": "List tool targets",
          "value": "listToolTargets",
          "action": "List tool targets",
          "description": "Retrieve a list of all tool targets. Object information."
        },
        {
          "name": "Update a tool target",
          "value": "updateAToolTarget",
          "action": "Update a tool target",
          "description": "Update the given tool target. Object information."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "toolTarget"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "retrieveTokenUser",
      "options": [
        {
          "name": "Retrieve token user",
          "value": "retrieveTokenUser",
          "action": "Retrieve token user",
          "description": "Retrieve all details of the user who created the API token. No token permissions are required for this request. Object information. To also retrieve the avatars of the users, specify the \"documents..."
        },
        {
          "name": "List users",
          "value": "listUsers",
          "action": "List users",
          "description": "Retrieve a list of all accessible users. Object information. To also retrieve the avatars of the users, specify the \"documents\" relation in the request. See Including Related Data."
        },
        {
          "name": "Create a user",
          "value": "createAUser",
          "action": "Create a user",
          "description": "Create a new user. Object information. To add an avatar to a user, create a document for it in a separate request. See Documents."
        },
        {
          "name": "Retrieve a user",
          "value": "retrieveAUser",
          "action": "Retrieve a user",
          "description": "Retrieve all details of the given user. Object information. To also retrieve the avatars of the users, specify the \"documents\" relation in the request. See Including Related Data."
        },
        {
          "name": "Update a user",
          "value": "updateAUser",
          "action": "Update a user",
          "description": "Update an existing user. Object information. To add or replace an avatar for a user, create a document for it in a separate request. This will overwrite the existing avatar. See Documents."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List activities",
      "value": "listActivities",
      "action": "List activities",
      "description": "Retrieve a list of all accessible activities. Object information.",
      "resource": "activity"
    },
    {
      "name": "Retrieve current API token",
      "value": "retrieveCurrentAPIToken",
      "action": "Retrieve current API token",
      "description": "Retrieve details of the API token used to authenticate the current request. No token permissions are required for this request. Object information.",
      "resource": "aPIToken"
    },
    {
      "name": "List API tokens",
      "value": "listAPITokens",
      "action": "List API tokens",
      "description": "Retrieve a list of API tokens for the authenticated user. Object information.",
      "resource": "aPIToken"
    },
    {
      "name": "Create an API token",
      "value": "createAnAPIToken",
      "action": "Create an API token",
      "description": "Create a new API token. The created token's abilities must be a subset of the creating token's abilities and cannot include `api_token:read` or `api_token:write`. The expiration date must be before...",
      "resource": "aPIToken"
    },
    {
      "name": "List assessments",
      "value": "listAssessments",
      "action": "List assessments",
      "description": "Retrieve a list of all accessible assessments. Object information.",
      "resource": "assessment"
    },
    {
      "name": "Create an assessment",
      "value": "createAnAssessment",
      "action": "Create an assessment",
      "description": "Create a new assessment. Object information.",
      "resource": "assessment"
    },
    {
      "name": "Retrieve an assessment",
      "value": "retrieveAnAssessment",
      "action": "Retrieve an assessment",
      "description": "Retrieve all details of the given assessment. Object information.",
      "resource": "assessment"
    },
    {
      "name": "Update an assessment",
      "value": "updateAnAssessment",
      "action": "Update an assessment",
      "description": "Update the posted assessment. Object information.",
      "resource": "assessment"
    },
    {
      "name": "Retrieve the full PDF report",
      "value": "retrieveTheFullPDFReport",
      "action": "Retrieve the full PDF report",
      "description": "This route supports both GET and POST requests. The POST request supports passing a password that will be used to encrypt the resulting PDF report. If an admin has enabled the \"Password-protect PDF...",
      "resource": "assessment"
    },
    {
      "name": "Retrieve the management PDF report",
      "value": "retrieveTheManagementPDFReport",
      "action": "Retrieve the management PDF report",
      "description": "This route supports both GET and POST requests. The POST request supports passing a password that will be used to encrypt the resulting PDF report. If an admin has enabled the \"Password-protect PDF...",
      "resource": "assessment"
    },
    {
      "name": "Create an assessment comment",
      "value": "createAnAssessmentComment",
      "action": "Create an assessment comment",
      "description": "Create a new assessment comment. Object information.",
      "resource": "assessmentComment"
    },
    {
      "name": "Update an assessment comment",
      "value": "updateAnAssessmentComment",
      "action": "Update an assessment comment",
      "description": "Update an existing assessment comment. Object information.",
      "resource": "assessmentComment"
    },
    {
      "name": "Update an assessment phase",
      "value": "updateAnAssessmentPhase",
      "action": "Update an assessment phase",
      "description": "Update an existing assessment phase. Object information.",
      "resource": "assessmentPhase"
    },
    {
      "name": "List assessment sections",
      "value": "listAssessmentSections",
      "action": "List assessment sections",
      "description": "Retrieve a list of all accessible assessment sections. Filter by `assessment_id` to scope to a specific assessment.",
      "resource": "assessmentSection"
    },
    {
      "name": "Retrieve an assessment section",
      "value": "retrieveAnAssessmentSection",
      "action": "Retrieve an assessment section",
      "description": "Retrieve all details of the given assessment section. Object information.",
      "resource": "assessmentSection"
    },
    {
      "name": "Update an assessment section",
      "value": "updateAnAssessmentSection",
      "action": "Update an assessment section",
      "description": "Update an existing assessment section. Object information.",
      "resource": "assessmentSection"
    },
    {
      "name": "Create an assessment section",
      "value": "createAnAssessmentSection",
      "action": "Create an assessment section",
      "description": "Create a new assessment section within the given assessment. Use `anchor_section_id` and `place` to control where the section is inserted relative to an existing section. When omitted, the section ...",
      "resource": "assessmentSection"
    },
    {
      "name": "Create an assessment section comment",
      "value": "createAnAssessmentSectionComment",
      "action": "Create an assessment section comment",
      "description": "Create a new assessment section comment. Object information.",
      "resource": "assessmentSectionComment"
    },
    {
      "name": "Update an assessment section comment",
      "value": "updateAnAssessmentSectionComment",
      "action": "Update an assessment section comment",
      "description": "Update an existing assessment section comment. Object information.",
      "resource": "assessmentSectionComment"
    },
    {
      "name": "List assessment section templates",
      "value": "listAssessmentSectionTemplates",
      "action": "List assessment section templates",
      "description": "Retrieve a list of all accessible assessment section templates. Filter by `assessment_template_id` to scope to a specific template.",
      "resource": "assessmentSectionTemplate"
    },
    {
      "name": "Retrieve an assessment section template",
      "value": "retrieveAnAssessmentSectionTemplate",
      "action": "Retrieve an assessment section template",
      "description": "Retrieve all details of the given assessment section template.",
      "resource": "assessmentSectionTemplate"
    },
    {
      "name": "Update an assessment section template",
      "value": "updateAnAssessmentSectionTemplate",
      "action": "Update an assessment section template",
      "description": "Update an existing assessment section template.",
      "resource": "assessmentSectionTemplate"
    },
    {
      "name": "Create an assessment section template",
      "value": "createAnAssessmentSectionTemplate",
      "action": "Create an assessment section template",
      "description": "Create a new section template within the given assessment template. Use `anchor_section_id` and `place` to control where the section is inserted relative to an existing section. When omitted, the s...",
      "resource": "assessmentSectionTemplate"
    },
    {
      "name": "Add a task set to an assessment",
      "value": "addATaskSetToAnAssessment",
      "action": "Add a task set to an assessment",
      "description": "Assign an existing task set's tasks to an assessment.",
      "resource": "assessmentTaskSet"
    },
    {
      "name": "Remove a task set from an assessment",
      "value": "removeATaskSetFromAnAssessment",
      "action": "Remove a task set from an assessment",
      "description": "Remove a task set's tasks from an assessment. This does **not** delete the task set. It just removes its tasks from the assessment.",
      "resource": "assessmentTaskSet"
    },
    {
      "name": "List assessment templates",
      "value": "listAssessmentTemplates",
      "action": "List assessment templates",
      "description": "Retrieve a list of all accessible assessment templates. Object information.",
      "resource": "assessmentTemplate"
    },
    {
      "name": "Create an assessment template",
      "value": "createAnAssessmentTemplate",
      "action": "Create an assessment template",
      "description": "Create a new, empty assessment template. Section templates can be added using the assessment section template endpoints.",
      "resource": "assessmentTemplate"
    },
    {
      "name": "Retrieve an assessment template",
      "value": "retrieveAnAssessmentTemplate",
      "action": "Retrieve an assessment template",
      "description": "Retrieve all details of the given assessment template. Object information.",
      "resource": "assessmentTemplate"
    },
    {
      "name": "Update an assessment template",
      "value": "updateAnAssessmentTemplate",
      "action": "Update an assessment template",
      "description": "Update an existing assessment template. Supply `language_id` to target a specific translation when updating the `name`. Supply `primary_language_id` to switch the primary language (the template mus...",
      "resource": "assessmentTemplate"
    },
    {
      "name": "Add a translation to an assessment template",
      "value": "addATranslationToAnAssessmentTemplate",
      "action": "Add a translation to an assessment template",
      "description": "Add a new language translation to the template. Translatable fields are copied from `source_language_id` (or the primary language when omitted). Sections and checklists of the template also gain th...",
      "resource": "assessmentTemplate"
    },
    {
      "name": "Remove a translation from an assessment template",
      "value": "removeATranslationFromAnAssessmentTemplate",
      "action": "Remove a translation from an assessment template",
      "description": "Remove a language translation from the template. The translation is also removed from sections and checklists. The primary language cannot be removed.",
      "resource": "assessmentTemplate"
    },
    {
      "name": "Create an assessment user",
      "value": "createAnAssessmentUser",
      "action": "Create an assessment user",
      "description": "Assign an existing user to an assessment. Object information.",
      "resource": "assessmentUser"
    },
    {
      "name": "Update an assessment user",
      "value": "updateAnAssessmentUser",
      "action": "Update an assessment user",
      "description": "Update assessment-specific values for a user assigned to the assessment. Object information. To update the user's data, such as name and email address, see the User endpoints.",
      "resource": "assessmentUser"
    },
    {
      "name": "Remove an assessment user",
      "value": "removeAnAssessmentUser",
      "action": "Remove an assessment user",
      "description": "Remove a user from an assessment. Object information. A user can not be removed this way if they are assigned to the assessment through a team. This does **not** delete the user, it just revokes th...",
      "resource": "assessmentUser"
    },
    {
      "name": "List clients",
      "value": "listClients",
      "action": "List clients",
      "description": "Retrieve a list of all accessible clients. Object information. To also retrieve the logos of the clients, specify the \"documents\" relation in the request. See Including Related Data.",
      "resource": "client"
    },
    {
      "name": "Create a client",
      "value": "createAClient",
      "action": "Create a client",
      "description": "Create a new client. Object information. To add a logo to a client, attach a document representing the logo to it in a separate request. See Documents.",
      "resource": "client"
    },
    {
      "name": "Retrieve a client",
      "value": "retrieveAClient",
      "action": "Retrieve a client",
      "description": "Retrieve all details of the given client. Object information. To also retrieve the logo of the client, specify the \"documents\" relation in the request. See Including Related Data.",
      "resource": "client"
    },
    {
      "name": "Update a client",
      "value": "updateAClient",
      "action": "Update a client",
      "description": "Update an existing client. Object information. To add or replace a logo for a client, create a document for it in a separate request. This will overwrite the existing avatar. See Documents.",
      "resource": "client"
    },
    {
      "name": "Update client managers",
      "value": "updateClientManagers",
      "action": "Update client managers",
      "description": "Update the list of client managers for a client. Client managers can manage this list but cannot remove themselves.",
      "resource": "client"
    },
    {
      "name": "Remove account manager",
      "value": "removeAccountManager",
      "action": "Remove account manager",
      "description": "Remove an account manager from the client. Optionally, specify assessments to unassign the manager from.",
      "resource": "client"
    },
    {
      "name": "List custom fields",
      "value": "listCustomFields",
      "action": "List custom fields",
      "description": "Retrieve a list of all accessible custom fields Object information.",
      "resource": "customField"
    },
    {
      "name": "Retrieve a document",
      "value": "retrieveADocument",
      "action": "Retrieve a document",
      "description": "Retrieve the stored file contents of the given document. Object information.",
      "resource": "document"
    },
    {
      "name": "Upload a document",
      "value": "uploadADocument",
      "action": "Upload a document",
      "description": "Upload a new (draft) document. Object information. Use `Content-Type: multipart/form-data` for this request.",
      "resource": "document"
    },
    {
      "name": "List findings",
      "value": "listFindings",
      "action": "List findings",
      "description": "Retrieve a list of all accessible findings. Object information.",
      "resource": "finding"
    },
    {
      "name": "Create a finding",
      "value": "createAFinding",
      "action": "Create a finding",
      "description": "Create a new finding. Object information.",
      "resource": "finding"
    },
    {
      "name": "Retrieve a finding",
      "value": "retrieveAFinding",
      "action": "Retrieve a finding",
      "description": "Retrieve all details of the given finding. Object information.",
      "resource": "finding"
    },
    {
      "name": "Update a finding",
      "value": "updateAFinding",
      "action": "Update a finding",
      "description": "Update an existing finding. Object information.",
      "resource": "finding"
    },
    {
      "name": "Create a finding from a template",
      "value": "createAFindingFromATemplate",
      "action": "Create a finding from a template",
      "description": "Create a new finding from a finding template. Object information.",
      "resource": "finding"
    },
    {
      "name": "List finding events",
      "value": "listFindingEvents",
      "action": "List finding events",
      "description": "Retrieve a list of all accessible finding events. Object information.",
      "resource": "findingEvent"
    },
    {
      "name": "Create a finding comment",
      "value": "createAFindingComment",
      "action": "Create a finding comment",
      "description": "Create a new finding comment. Object information. Note that comments added before the publication of the finding are displayed as child comments of the 'created event' of the finding.",
      "resource": "findingEvent"
    },
    {
      "name": "Update a finding comment",
      "value": "updateAFindingComment",
      "action": "Update a finding comment",
      "description": "Update an existing finding comment. Object information.",
      "resource": "findingEvent"
    },
    {
      "name": "Create a finding retest",
      "value": "createAFindingRetest",
      "action": "Create a finding retest",
      "description": "Perform a retest. Object information. You can only create a retest if the finding has a retest inquiry that doesn't already have a retest.",
      "resource": "findingEvent"
    },
    {
      "name": "Update a finding retest",
      "value": "updateAFindingRetest",
      "action": "Update a finding retest",
      "description": "Update an existing finding retest. Object information.",
      "resource": "findingEvent"
    },
    {
      "name": "Create a finding retest inquiry",
      "value": "createAFindingRetestInquiry",
      "action": "Create a finding retest inquiry",
      "description": "Request a retest. Object information. Creating a new retest inquiry for a finding is not allowed if the status of the finding is set to 'Retest Pending.' The finding status is set to 'Retest Pendin...",
      "resource": "findingEvent"
    },
    {
      "name": "Update a retest inquiry",
      "value": "updateARetestInquiry",
      "action": "Update a retest inquiry",
      "description": "Update an existing finding retest inquiry. Object information.",
      "resource": "findingEvent"
    },
    {
      "name": "Create a finding retest cancelled event",
      "value": "createAFindingRetestCancelledEvent",
      "action": "Create a finding retest cancelled event",
      "description": "Cancel a retest request. Object information. You can only cancel a retest if the finding has a retest inquiry that doesn't already have a retest.",
      "resource": "findingEvent"
    },
    {
      "name": "Update a retest cancelled event",
      "value": "updateARetestCancelledEvent",
      "action": "Update a retest cancelled event",
      "description": "Update an existing finding retest cancelled event. Object information.",
      "resource": "findingEvent"
    },
    {
      "name": "List finding layouts",
      "value": "listFindingLayouts",
      "action": "List finding layouts",
      "description": "Retrieve a list of all finding layouts. Object information.",
      "resource": "findingLayout"
    },
    {
      "name": "Search finding templates",
      "value": "searchFindingTemplates",
      "action": "Search finding templates",
      "description": "Search for finding templates. It is not possible to include relations. Object information. If a search term is submitted and neither \"prefer_language\" nor \"language_id\" are, this will return the te...",
      "resource": "findingTemplate"
    },
    {
      "name": "List finding templates",
      "value": "listFindingTemplates",
      "action": "List finding templates",
      "description": "Retrieve a list of all accessible finding templates. Object information.",
      "resource": "findingTemplate"
    },
    {
      "name": "Create a finding template",
      "value": "createAFindingTemplate",
      "action": "Create a finding template",
      "description": "Create a new finding template. Object information.",
      "resource": "findingTemplate"
    },
    {
      "name": "Retrieve a finding template",
      "value": "retrieveAFindingTemplate",
      "action": "Retrieve a finding template",
      "description": "Retrieve all details of the given finding. Object information.",
      "resource": "findingTemplate"
    },
    {
      "name": "Update a finding template",
      "value": "updateAFindingTemplate",
      "action": "Update a finding template",
      "description": "Update an existing finding template. Object information. Only custom finding templates (`source`: 0) can be updated.",
      "resource": "findingTemplate"
    },
    {
      "name": "List languages",
      "value": "listLanguages",
      "action": "List languages",
      "description": "Retrieve a list of all languages. Object information.",
      "resource": "language"
    },
    {
      "name": "Upload an output file to parse",
      "value": "uploadAnOutputFileToParse",
      "action": "Upload an output file to parse",
      "description": "Create a new output file. Object information. Once created, the file will be parsed in the background.",
      "resource": "outputFile"
    },
    {
      "name": "List output files",
      "value": "listOutputFiles",
      "action": "List output files",
      "description": "Retrieve a list of all output files. Object information.",
      "resource": "outputFile"
    },
    {
      "name": "Create a reaction",
      "value": "createAReaction",
      "action": "Create a reaction",
      "description": "Adds a reaction to the provided model, if that reaction does not exist for the current user. Object information.",
      "resource": "reaction"
    },
    {
      "name": "List global roles",
      "value": "listGlobalRoles",
      "action": "List global roles",
      "description": "Retrieve a list of global roles. Object information.",
      "resource": "role"
    },
    {
      "name": "List assessment roles",
      "value": "listAssessmentRoles",
      "action": "List assessment roles",
      "description": "Retrieve a list of assessment roles. Object information.",
      "resource": "role"
    },
    {
      "name": "List targets",
      "value": "listTargets",
      "action": "List targets",
      "description": "Retrieve a list of all accessible targets. Object information.",
      "resource": "target"
    },
    {
      "name": "Create a target",
      "value": "createATarget",
      "action": "Create a target",
      "description": "Create a new target. Object information.",
      "resource": "target"
    },
    {
      "name": "Retrieve a target",
      "value": "retrieveATarget",
      "action": "Retrieve a target",
      "description": "Retrieve all details of the given target. Object information.",
      "resource": "target"
    },
    {
      "name": "Update a target",
      "value": "updateATarget",
      "action": "Update a target",
      "description": "Update an existing target. Object information.",
      "resource": "target"
    },
    {
      "name": "List tasks",
      "value": "listTasks",
      "action": "List tasks",
      "description": "Retrieve a list of all tasks. Object information.",
      "resource": "task"
    },
    {
      "name": "Retrieve a task",
      "value": "retrieveATask",
      "action": "Retrieve a task",
      "description": "Retrieve all details of the given task. Object information.",
      "resource": "task"
    },
    {
      "name": "Update a task",
      "value": "updateATask",
      "action": "Update a task",
      "description": "Update an existing task. Object information.",
      "resource": "task"
    },
    {
      "name": "Create a task",
      "value": "createATask",
      "action": "Create a task",
      "description": "Create a new task. Object information.",
      "resource": "task"
    },
    {
      "name": "List task sets",
      "value": "listTaskSets",
      "action": "List task sets",
      "description": "Retrieve a list of all task sets. Object information.",
      "resource": "taskSet"
    },
    {
      "name": "Create a task set",
      "value": "createATaskSet",
      "action": "Create a task set",
      "description": "Create a new task set. Object information.",
      "resource": "taskSet"
    },
    {
      "name": "Retrieve a task set",
      "value": "retrieveATaskSet",
      "action": "Retrieve a task set",
      "description": "Retrieve all details of the given task set. Object information.",
      "resource": "taskSet"
    },
    {
      "name": "Update a task set",
      "value": "updateATaskSet",
      "action": "Update a task set",
      "description": "Update an existing task set. Object information.",
      "resource": "taskSet"
    },
    {
      "name": "Create a team",
      "value": "createATeam",
      "action": "Create a team",
      "description": "Create a new team. Object information.",
      "resource": "team"
    },
    {
      "name": "Update a team",
      "value": "updateATeam",
      "action": "Update a team",
      "description": "Update an existing team. Object information.",
      "resource": "team"
    },
    {
      "name": "Add a user to a team",
      "value": "addAUserToATeam",
      "action": "Add a user to a team",
      "description": "Assign an existing user to a team. Object information.",
      "resource": "teamUser"
    },
    {
      "name": "Update a team user",
      "value": "updateATeamUser",
      "action": "Update a team user",
      "description": "Update team-specific values for a user assigned to the team. Object information. To update the user's data, such as name and email address, see the User endpoints.",
      "resource": "teamUser"
    },
    {
      "name": "Remove a user from a team",
      "value": "removeAUserFromATeam",
      "action": "Remove a user from a team",
      "description": "Remove a user from a team. Object information. This does **not** delete the user, it just removes them from the team.",
      "resource": "teamUser"
    },
    {
      "name": "List test cases",
      "value": "listTestCases",
      "action": "List test cases",
      "description": "Retrieve a list of all accessible test cases. Object information.",
      "resource": "testCase"
    },
    {
      "name": "Retrieve a test case",
      "value": "retrieveATestCase",
      "action": "Retrieve a test case",
      "description": "Retrieve all details of the given test case. Object information.",
      "resource": "testCase"
    },
    {
      "name": "Update a test case",
      "value": "updateATestCase",
      "action": "Update a test case",
      "description": "Update an existing test case. Object information.",
      "resource": "testCase"
    },
    {
      "name": "List themes",
      "value": "listThemes",
      "action": "List themes",
      "description": "Retrieve a list of all themes. Object information.",
      "resource": "theme"
    },
    {
      "name": "List tool findings",
      "value": "listToolFindings",
      "action": "List tool findings",
      "description": "Retrieve a list of all tool findings. Object information.",
      "resource": "toolFinding"
    },
    {
      "name": "Retrieve a tool finding",
      "value": "retrieveAToolFinding",
      "action": "Retrieve a tool finding",
      "description": "Retrieve all details of the given tool finding. Object information.",
      "resource": "toolFinding"
    },
    {
      "name": "Update a tool finding",
      "value": "updateAToolFinding",
      "action": "Update a tool finding",
      "description": "Update an existing tool finding. Object information.",
      "resource": "toolFinding"
    },
    {
      "name": "List tool targets",
      "value": "listToolTargets",
      "action": "List tool targets",
      "description": "Retrieve a list of all tool targets. Object information.",
      "resource": "toolTarget"
    },
    {
      "name": "Update a tool target",
      "value": "updateAToolTarget",
      "action": "Update a tool target",
      "description": "Update the given tool target. Object information.",
      "resource": "toolTarget"
    },
    {
      "name": "Retrieve token user",
      "value": "retrieveTokenUser",
      "action": "Retrieve token user",
      "description": "Retrieve all details of the user who created the API token. No token permissions are required for this request. Object information. To also retrieve the avatars of the users, specify the \"documents...",
      "resource": "user"
    },
    {
      "name": "List users",
      "value": "listUsers",
      "action": "List users",
      "description": "Retrieve a list of all accessible users. Object information. To also retrieve the avatars of the users, specify the \"documents\" relation in the request. See Including Related Data.",
      "resource": "user"
    },
    {
      "name": "Create a user",
      "value": "createAUser",
      "action": "Create a user",
      "description": "Create a new user. Object information. To add an avatar to a user, create a document for it in a separate request. See Documents.",
      "resource": "user"
    },
    {
      "name": "Retrieve a user",
      "value": "retrieveAUser",
      "action": "Retrieve a user",
      "description": "Retrieve all details of the given user. Object information. To also retrieve the avatars of the users, specify the \"documents\" relation in the request. See Including Related Data.",
      "resource": "user"
    },
    {
      "name": "Update a user",
      "value": "updateAUser",
      "action": "Update a user",
      "description": "Update an existing user. Object information. To add or replace an avatar for a user, create a document for it in a separate request. This will overwrite the existing avatar. See Documents.",
      "resource": "user"
    }
  ]

npm_readme:
  # @dongit/n8n-nodes-reporter

  This is an n8n community node that lets you use [Security Reporter](https://securityreporter.app/) in your n8n workflows.

  Security Reporter is a comprehensive security assessment and vulnerability management platform. This integration allows you to automate security workflows, manage findings, assessments, clients, and more.

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

  ## Installation

  The Reporter integration is available as a community node package.
  If the reporter integration is not already installed,
  you can install it directly from the n8n interface or via npm.
  You can find more information [here](https://docs.n8n.io/integrations/community-nodes/installation/]

  ### Community Nodes (Recommended)

  For production use, install via n8n's Community Nodes:

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install**
  3. Enter `@dongit/n8n-nodes-reporter` in **Enter npm package name**
  4. Agree to the risks and click **Install**

  After installation, the Reporter nodes will be available in your workflow editor.

  ### Manual Installation

  For development or self-hosted instances:

  ```bash
  # Navigate to your n8n installation directory
  cd ~/.n8n

  # Install the package
  npm install @dongit/n8n-nodes-reporter
  ```

  ### Docker

  If you're using n8n with Docker, you can mount the package:

  ```bash
  docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -v ~/.n8n:/home/node/.n8n \
    n8nio/n8n
  ```

  Then install the package inside the container or mount it as a custom node.

  ## Credentials

  This node requires Security Reporter API credentials. To set up:

  1. In your Security Reporter instance, go to **Settings > API Tokens**
  2. Click **Create New Token**
  3. Copy the generated token
  4. In n8n, create new **Reporter API** credentials:
     - **Base URL**: Your Reporter instance URL (e.g., `https://reporter.yourcompany.com`)
     - **API Token**: The token you generated

  ## Operations

  ### Resources

  The Reporter node supports the following resources:

  - **Assessments** - Manage security assessments
  - **Findings** - Create and manage security findings
  - **Clients** - Manage client organizations
  - **Projects** - Manage projects within clients
  - **Users** - Manage user accounts
  - **Documents** - Upload and manage documents
  - **Tasks** - Manage assessment tasks
  - **Finding Templates** - Work with finding templates
  - **Assessment Templates** - Work with assessment templates
  - And many more...

  ### Triggers

  #### Webhook Trigger (Reporter Trigger)

  Trigger workflows when events occur in Reporter:

  - Assessment Created/Updated/Deleted
  - Finding Created/Updated/Deleted
  - Client Created/Updated/Deleted
  - Project Created/Updated/Deleted
  - And more...

  #### Polling Trigger (Reporter Polling Trigger)

  Poll Reporter for new items at regular intervals:

  - New Assessments
  - New Findings
  - New Clients
  - New Projects
  - And more...

  ## Example Workflows

  ### Create a Finding

  1. Add a **Reporter** node
  2. Select **Finding** resource
  3. Choose **Create** operation
  4. Fill in required fields:
     - Title
     - Description
     - Severity
     - Assessment ID

  ### Trigger on New Assessment

  1. Add a **Reporter Polling Trigger** node
  2. Select **Assessment** resource
  3. Set polling interval (e.g., every 5 minutes)
  4. Connect to downstream nodes to process new assessments

  ### Sync Findings to External System

  1. Add a **Reporter Polling Trigger** for new findings
  2. Add transformation nodes to format data
  3. Add nodes to send data to your external system (Jira, Slack, etc.)

  ## Compatibility

  - Requires n8n version 2.0.0 and above
  - Requires Security Reporter API v1

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Security Reporter Documentation](https://docs.securityreporter.app/)
  - [Security Reporter API Documentation](https://docs.securityreporter.app/api/)

  ## Version History

  See [CHANGELOG.md](CHANGELOG.md) for version history and changes.

  ## License

  [MIT](LICENSE.md)

  ## Support

  For issues and questions:

  - **n8n node issues**: [GitHub Issues](https://github.com/dongit-org/reporter/issues)
  - **Security Reporter issues**: [Security Reporter Support](https://securityreporter.app/support)
  - **n8n general help**: [n8n Community Forum](https://community.n8n.io/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Security Reporter to automate security workflows, manage vulnerability findings, assessments, clients, and projects, and trigger actions based on security events.","capabilities":["Manage security assessments (create, update, delete)","Create and manage security findings","Manage client organizations","Manage projects within clients","Manage user accounts","Upload and manage documents","Manage assessment tasks","Work with finding templates","Work with assessment templates","Trigger workflows on security events (webhook)"],"authentication":"API key required (Base URL and API Token)","commonUseCases":["Automate security assessment creation and updates","Receive real-time notifications for new security findings","Sync security findings to external ticketing systems (e.g., Jira)","Manage client and project security data centrally","Automate document uploads for security reports"],"limitations":["Requires n8n version 2.0.0 or above","Requires Security Reporter API v1","Community node may have different support levels compared to official nodes"],"relatedNodes":["n8n-jira","n8n-slack","n8n-email"]}


node_type: @dongit/n8n-nodes-reporter.reporterPollingTrigger
package_name: @dongit/n8n-nodes-reporter
display_name: Reporter Polling Trigger
description: Polls Security Reporter API for new or updated items
category: Community
development_style: declarative
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: stefanvdlugt.dongit
author_github_url: https://github.com/dongit-org/n8n-nodes-reporter.git
npm_package_name: @dongit/n8n-nodes-reporter
npm_version: 2026.6.30
community_fetched_at: 2026-07-14T14:40:33.899Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "activity_created",
      "options": [
        {
          "name": "New Activity",
          "value": "activity_created",
          "description": "Triggers when a new activity is created"
        },
        {
          "name": "Updated Activity",
          "value": "activity_updated",
          "description": "Triggers when an existing activity is updated"
        },
        {
          "name": "New API Token",
          "value": "aPIToken_created",
          "description": "Triggers when a new api token is created"
        },
        {
          "name": "Updated API Token",
          "value": "aPIToken_updated",
          "description": "Triggers when an existing api token is updated"
        },
        {
          "name": "New Assessment",
          "value": "assessment_created",
          "description": "Triggers when a new assessment is created"
        },
        {
          "name": "Updated Assessment",
          "value": "assessment_updated",
          "description": "Triggers when an existing assessment is updated"
        },
        {
          "name": "New Assessment Section",
          "value": "assessmentSection_created",
          "description": "Triggers when a new assessment section is created"
        },
        {
          "name": "Updated Assessment Section",
          "value": "assessmentSection_updated",
          "description": "Triggers when an existing assessment section is updated"
        },
        {
          "name": "New Assessment Section Template",
          "value": "assessmentSectionTemplate_created",
          "description": "Triggers when a new assessment section template is created"
        },
        {
          "name": "Updated Assessment Section Template",
          "value": "assessmentSectionTemplate_updated",
          "description": "Triggers when an existing assessment section template is updated"
        },
        {
          "name": "New Assessment Template",
          "value": "assessmentTemplate_created",
          "description": "Triggers when a new assessment template is created"
        },
        {
          "name": "Updated Assessment Template",
          "value": "assessmentTemplate_updated",
          "description": "Triggers when an existing assessment template is updated"
        },
        {
          "name": "New Client",
          "value": "client_created",
          "description": "Triggers when a new client is created"
        },
        {
          "name": "Updated Client",
          "value": "client_updated",
          "description": "Triggers when an existing client is updated"
        },
        {
          "name": "New Custom Field",
          "value": "customField_created",
          "description": "Triggers when a new custom field is created"
        },
        {
          "name": "Updated Custom Field",
          "value": "customField_updated",
          "description": "Triggers when an existing custom field is updated"
        },
        {
          "name": "New Finding",
          "value": "finding_created",
          "description": "Triggers when a new finding is created"
        },
        {
          "name": "Updated Finding",
          "value": "finding_updated",
          "description": "Triggers when an existing finding is updated"
        },
        {
          "name": "New Finding Layout",
          "value": "findingLayout_created",
          "description": "Triggers when a new finding layout is created"
        },
        {
          "name": "Updated Finding Layout",
          "value": "findingLayout_updated",
          "description": "Triggers when an existing finding layout is updated"
        },
        {
          "name": "New Finding Event",
          "value": "findingEvent_created",
          "description": "Triggers when a new finding event is created"
        },
        {
          "name": "Updated Finding Event",
          "value": "findingEvent_updated",
          "description": "Triggers when an existing finding event is updated"
        },
        {
          "name": "New Finding Template",
          "value": "findingTemplate_created",
          "description": "Triggers when a new finding template is created"
        },
        {
          "name": "Updated Finding Template",
          "value": "findingTemplate_updated",
          "description": "Triggers when an existing finding template is updated"
        },
        {
          "name": "New Language",
          "value": "language_created",
          "description": "Triggers when a new language is created"
        },
        {
          "name": "Updated Language",
          "value": "language_updated",
          "description": "Triggers when an existing language is updated"
        },
        {
          "name": "New Output File",
          "value": "outputFile_created",
          "description": "Triggers when a new output file is created"
        },
        {
          "name": "Updated Output File",
          "value": "outputFile_updated",
          "description": "Triggers when an existing output file is updated"
        },
        {
          "name": "New Tool Finding",
          "value": "toolFinding_created",
          "description": "Triggers when a new tool finding is created"
        },
        {
          "name": "Updated Tool Finding",
          "value": "toolFinding_updated",
          "description": "Triggers when an existing tool finding is updated"
        },
        {
          "name": "New Tool Target",
          "value": "toolTarget_created",
          "description": "Triggers when a new tool target is created"
        },
        {
          "name": "Updated Tool Target",
          "value": "toolTarget_updated",
          "description": "Triggers when an existing tool target is updated"
        },
        {
          "name": "New Role",
          "value": "role_created",
          "description": "Triggers when a new role is created"
        },
        {
          "name": "Updated Role",
          "value": "role_updated",
          "description": "Triggers when an existing role is updated"
        },
        {
          "name": "New Target",
          "value": "target_created",
          "description": "Triggers when a new target is created"
        },
        {
          "name": "Updated Target",
          "value": "target_updated",
          "description": "Triggers when an existing target is updated"
        },
        {
          "name": "New Task",
          "value": "task_created",
          "description": "Triggers when a new task is created"
        },
        {
          "name": "Updated Task",
          "value": "task_updated",
          "description": "Triggers when an existing task is updated"
        },
        {
          "name": "New Task Set",
          "value": "taskSet_created",
          "description": "Triggers when a new task set is created"
        },
        {
          "name": "Updated Task Set",
          "value": "taskSet_updated",
          "description": "Triggers when an existing task set is updated"
        },
        {
          "name": "New Test Case",
          "value": "testCase_created",
          "description": "Triggers when a new test case is created"
        },
        {
          "name": "Updated Test Case",
          "value": "testCase_updated",
          "description": "Triggers when an existing test case is updated"
        },
        {
          "name": "New Theme",
          "value": "theme_created",
          "description": "Triggers when a new theme is created"
        },
        {
          "name": "Updated Theme",
          "value": "theme_updated",
          "description": "Triggers when an existing theme is updated"
        },
        {
          "name": "New User",
          "value": "user_created",
          "description": "Triggers when a new user is created"
        },
        {
          "name": "Updated User",
          "value": "user_updated",
          "description": "Triggers when an existing user is updated"
        }
      ],
      "required": true,
      "description": "The resource and event to poll for",
      "displayName": "Resource"
    }
  ]

npm_readme:
  # @dongit/n8n-nodes-reporter

  This is an n8n community node that lets you use [Security Reporter](https://securityreporter.app/) in your n8n workflows.

  Security Reporter is a comprehensive security assessment and vulnerability management platform. This integration allows you to automate security workflows, manage findings, assessments, clients, and more.

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

  ## Installation

  The Reporter integration is available as a community node package.
  If the reporter integration is not already installed,
  you can install it directly from the n8n interface or via npm.
  You can find more information [here](https://docs.n8n.io/integrations/community-nodes/installation/]

  ### Community Nodes (Recommended)

  For production use, install via n8n's Community Nodes:

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install**
  3. Enter `@dongit/n8n-nodes-reporter` in **Enter npm package name**
  4. Agree to the risks and click **Install**

  After installation, the Reporter nodes will be available in your workflow editor.

  ### Manual Installation

  For development or self-hosted instances:

  ```bash
  # Navigate to your n8n installation directory
  cd ~/.n8n

  # Install the package
  npm install @dongit/n8n-nodes-reporter
  ```

  ### Docker

  If you're using n8n with Docker, you can mount the package:

  ```bash
  docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -v ~/.n8n:/home/node/.n8n \
    n8nio/n8n
  ```

  Then install the package inside the container or mount it as a custom node.

  ## Credentials

  This node requires Security Reporter API credentials. To set up:

  1. In your Security Reporter instance, go to **Settings > API Tokens**
  2. Click **Create New Token**
  3. Copy the generated token
  4. In n8n, create new **Reporter API** credentials:
     - **Base URL**: Your Reporter instance URL (e.g., `https://reporter.yourcompany.com`)
     - **API Token**: The token you generated

  ## Operations

  ### Resources

  The Reporter node supports the following resources:

  - **Assessments** - Manage security assessments
  - **Findings** - Create and manage security findings
  - **Clients** - Manage client organizations
  - **Projects** - Manage projects within clients
  - **Users** - Manage user accounts
  - **Documents** - Upload and manage documents
  - **Tasks** - Manage assessment tasks
  - **Finding Templates** - Work with finding templates
  - **Assessment Templates** - Work with assessment templates
  - And many more...

  ### Triggers

  #### Webhook Trigger (Reporter Trigger)

  Trigger workflows when events occur in Reporter:

  - Assessment Created/Updated/Deleted
  - Finding Created/Updated/Deleted
  - Client Created/Updated/Deleted
  - Project Created/Updated/Deleted
  - And more...

  #### Polling Trigger (Reporter Polling Trigger)

  Poll Reporter for new items at regular intervals:

  - New Assessments
  - New Findings
  - New Clients
  - New Projects
  - And more...

  ## Example Workflows

  ### Create a Finding

  1. Add a **Reporter** node
  2. Select **Finding** resource
  3. Choose **Create** operation
  4. Fill in required fields:
     - Title
     - Description
     - Severity
     - Assessment ID

  ### Trigger on New Assessment

  1. Add a **Reporter Polling Trigger** node
  2. Select **Assessment** resource
  3. Set polling interval (e.g., every 5 minutes)
  4. Connect to downstream nodes to process new assessments

  ### Sync Findings to External System

  1. Add a **Reporter Polling Trigger** for new findings
  2. Add transformation nodes to format data
  3. Add nodes to send data to your external system (Jira, Slack, etc.)

  ## Compatibility

  - Requires n8n version 2.0.0 and above
  - Requires Security Reporter API v1

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Security Reporter Documentation](https://docs.securityreporter.app/)
  - [Security Reporter API Documentation](https://docs.securityreporter.app/api/)

  ## Version History

  See [CHANGELOG.md](CHANGELOG.md) for version history and changes.

  ## License

  [MIT](LICENSE.md)

  ## Support

  For issues and questions:

  - **n8n node issues**: [GitHub Issues](https://github.com/dongit-org/reporter/issues)
  - **Security Reporter issues**: [Security Reporter Support](https://securityreporter.app/support)
  - **n8n general help**: [n8n Community Forum](https://community.n8n.io/)

ai_documentation_summary:
  {"purpose":"Polls the Security Reporter API at regular intervals to detect new or updated security items such as assessments, findings, clients, and projects, enabling automated security workflow responses.","capabilities":["Poll for new assessments","Poll for new findings","Poll for new clients","Poll for new projects","Poll for new users","Poll for new tasks","Poll for new documents","Poll for new finding templates","Poll for new assessment templates","Configurable polling intervals"],"authentication":"API key required (Base URL and API Token credentials)","commonUseCases":["Automated alerting when new security findings are detected","Triggering ticket creation in external systems (e.g., Jira) for new vulnerabilities","Monitoring client and project status changes","Synchronizing security assessment data to other platforms"],"limitations":["Requires n8n version 2.0.0 or above","Requires Security Reporter API v1","Relies on polling intervals rather than real-time event pushing"],"relatedNodes":["Reporter Trigger (Webhook)","Reporter (CRUD operations)","Jira","Slack"]}


node_type: @dongit/n8n-nodes-reporter.reporterTrigger
package_name: @dongit/n8n-nodes-reporter
display_name: Reporter Trigger
description: Starts the workflow when Security Reporter events occur
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: stefanvdlugt.dongit
author_github_url: https://github.com/dongit-org/n8n-nodes-reporter.git
npm_package_name: @dongit/n8n-nodes-reporter
npm_version: 2026.6.30
community_fetched_at: 2026-07-14T14:40:33.913Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # @dongit/n8n-nodes-reporter

  This is an n8n community node that lets you use [Security Reporter](https://securityreporter.app/) in your n8n workflows.

  Security Reporter is a comprehensive security assessment and vulnerability management platform. This integration allows you to automate security workflows, manage findings, assessments, clients, and more.

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

  ## Installation

  The Reporter integration is available as a community node package.
  If the reporter integration is not already installed,
  you can install it directly from the n8n interface or via npm.
  You can find more information [here](https://docs.n8n.io/integrations/community-nodes/installation/]

  ### Community Nodes (Recommended)

  For production use, install via n8n's Community Nodes:

  1. Go to **Settings > Community Nodes** in your n8n instance
  2. Select **Install**
  3. Enter `@dongit/n8n-nodes-reporter` in **Enter npm package name**
  4. Agree to the risks and click **Install**

  After installation, the Reporter nodes will be available in your workflow editor.

  ### Manual Installation

  For development or self-hosted instances:

  ```bash
  # Navigate to your n8n installation directory
  cd ~/.n8n

  # Install the package
  npm install @dongit/n8n-nodes-reporter
  ```

  ### Docker

  If you're using n8n with Docker, you can mount the package:

  ```bash
  docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -v ~/.n8n:/home/node/.n8n \
    n8nio/n8n
  ```

  Then install the package inside the container or mount it as a custom node.

  ## Credentials

  This node requires Security Reporter API credentials. To set up:

  1. In your Security Reporter instance, go to **Settings > API Tokens**
  2. Click **Create New Token**
  3. Copy the generated token
  4. In n8n, create new **Reporter API** credentials:
     - **Base URL**: Your Reporter instance URL (e.g., `https://reporter.yourcompany.com`)
     - **API Token**: The token you generated

  ## Operations

  ### Resources

  The Reporter node supports the following resources:

  - **Assessments** - Manage security assessments
  - **Findings** - Create and manage security findings
  - **Clients** - Manage client organizations
  - **Projects** - Manage projects within clients
  - **Users** - Manage user accounts
  - **Documents** - Upload and manage documents
  - **Tasks** - Manage assessment tasks
  - **Finding Templates** - Work with finding templates
  - **Assessment Templates** - Work with assessment templates
  - And many more...

  ### Triggers

  #### Webhook Trigger (Reporter Trigger)

  Trigger workflows when events occur in Reporter:

  - Assessment Created/Updated/Deleted
  - Finding Created/Updated/Deleted
  - Client Created/Updated/Deleted
  - Project Created/Updated/Deleted
  - And more...

  #### Polling Trigger (Reporter Polling Trigger)

  Poll Reporter for new items at regular intervals:

  - New Assessments
  - New Findings
  - New Clients
  - New Projects
  - And more...

  ## Example Workflows

  ### Create a Finding

  1. Add a **Reporter** node
  2. Select **Finding** resource
  3. Choose **Create** operation
  4. Fill in required fields:
     - Title
     - Description
     - Severity
     - Assessment ID

  ### Trigger on New Assessment

  1. Add a **Reporter Polling Trigger** node
  2. Select **Assessment** resource
  3. Set polling interval (e.g., every 5 minutes)
  4. Connect to downstream nodes to process new assessments

  ### Sync Findings to External System

  1. Add a **Reporter Polling Trigger** for new findings
  2. Add transformation nodes to format data
  3. Add nodes to send data to your external system (Jira, Slack, etc.)

  ## Compatibility

  - Requires n8n version 2.0.0 and above
  - Requires Security Reporter API v1

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Security Reporter Documentation](https://docs.securityreporter.app/)
  - [Security Reporter API Documentation](https://docs.securityreporter.app/api/)

  ## Version History

  See [CHANGELOG.md](CHANGELOG.md) for version history and changes.

  ## License

  [MIT](LICENSE.md)

  ## Support

  For issues and questions:

  - **n8n node issues**: [GitHub Issues](https://github.com/dongit-org/reporter/issues)
  - **Security Reporter issues**: [Security Reporter Support](https://securityreporter.app/support)
  - **n8n general help**: [n8n Community Forum](https://community.n8n.io/)

ai_documentation_summary:
  {"purpose":"Starts n8n workflows automatically when specific events occur within the Security Reporter platform, such as new assessments, findings, or client updates.","capabilities":["Trigger workflows on Assessment Created/Updated/Deleted events","Trigger workflows on Finding Created/Updated/Deleted events","Trigger workflows on Client Created/Updated/Deleted events","Trigger workflows on Project Created/Updated/Deleted events","Poll for new items at regular intervals (Assessments, Findings, Clients, Projects)","Integrate with Security Reporter resources including Users, Documents, Tasks, and Templates"],"authentication":"API key required (Base URL and API Token)","commonUseCases":["Automate security workflows when new vulnerabilities are detected","Sync security findings to external ticketing systems like Jira","Notify teams via Slack or email when critical assessments are created","Automate client onboarding processes when new clients are added"],"limitations":["Requires n8n version 2.0.0 or above","Requires Security Reporter API v1","Dependent on external Security Reporter platform availability and API stability"],"relatedNodes":["n8n-nodes-slack","n8n-nodes-jira","n8n-nodes-email"]}


node_type: @brontoio/n8n-nodes-bronto.bronto
package_name: @brontoio/n8n-nodes-bronto
display_name: Bronto
description: Search logs via the Bronto.io API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: seamus_brontoio
author_github_url: https://github.com/seamusc/n8n-nodes-bronto.git
npm_package_name: @brontoio/n8n-nodes-bronto
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:33.916Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "executeSearch",
      "options": [
        {
          "name": "Search",
          "value": "executeSearch",
          "action": "Search log data",
          "description": "Search log data"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "executeSearch",
      "action": "Search log data",
      "description": "Search log data"
    }
  ]

npm_readme:
  # @brontoio/n8n-nodes-bronto

  An [n8n](https://n8n.io/) community node for the [Bronto.io](https://bronto.io) log management platform.

  Search and query your Bronto log data directly from n8n workflows.

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

  ## Installation

  ### In n8n (Community Nodes)

  1. Open **Settings > Community Nodes**
  2. Enter `@brontoio/n8n-nodes-bronto`
  3. Click **Install**

  ### Manual

  ```bash
  cd ~/.n8n
  npm install @brontoio/n8n-nodes-bronto
  ```

  Restart n8n after installation.

  ## Operations

  - **Search logs** — query log datasets using Bronto's Search API
  - **Dynamic log selection** — pick logs from a dropdown populated from your account
  - **Tag-based search** — search by tags instead of specific datasets
  - **Aggregations** — use `count()`, `sum()`, `avg()`, `min()`, `max()` with optional group-by
  - **Pagination** — optionally follow `next_page_url` to retrieve all results
  - **Multi-region** — supports both EU and US Bronto regions

  ## Credentials

  1. In n8n, go to **Credentials > New Credential > Bronto API**
  2. Select your **Region** (EU or US)
  3. Enter your **API Key**
  4. Click **Test** to verify the connection

  API keys can be generated from the [Bronto.io dashboard](https://bronto.io).

  ## Usage

  ### Node Parameters

  | Parameter | Description |
  |-----------|-------------|
  | **Source Type** | Search by log datasets or tags |
  | **Logs** | Multi-select dropdown of available log datasets (fetched from your account) |
  | **Time Range** | Relative time range, e.g. `Last 1 hour`, `Last 2 days` |
  | **Where** | SQL-like filter expression, e.g. `level:error AND duration_ms>2000` |
  | **Select** | Comma-separated columns or aggregates, e.g. `*, @raw` or `count()` |
  | **Groups** | Key to group aggregate results by |
  | **Limit** | Max results to return (1–6666, default 100) |

  ### Additional Options

  | Option | Description |
  |--------|-------------|
  | **Most Recent First** | Return newest results first (default: true) |
  | **Number of Slices** | Time series buckets for aggregate queries |
  | **From/To Timestamp** | Absolute time range in Unix milliseconds |
  | **Paginate** | Automatically fetch all pages of results |

  ### Example

  1. Add a **Bronto** node to your workflow
  2. Select one or more logs from the dropdown
  3. Set a time range and optional filters
  4. Execute the node to retrieve matching log events

  Results are returned as individual items — one per log event (or per aggregate group) — ready to be processed by downstream nodes.

  ## Resources

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

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build
  npm run build

  # Run locally with Docker
  docker compose up --build -d
  # Open http://localhost:5678
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Enables n8n workflows to search, query, and aggregate log data directly from the Bronto.io log management platform using its Search API.","capabilities":["Search logs via Bronto's Search API","Dynamic log selection from account dropdown","Tag-based search for log datasets","SQL-like filtering with WHERE expressions","Aggregations (count, sum, avg, min, max) with group-by","Pagination support for retrieving all results","Multi-region support (EU and US)","Time-based filtering (relative or absolute timestamps)","Column selection including raw data"],"authentication":"API key required","commonUseCases":["Monitoring application performance logs","Error tracking and alerting workflows","Auditing user activity logs","Generating aggregate log reports","Filtering logs by severity or custom attributes"],"limitations":["Maximum result limit of 6666 per request (default 100)","Requires manual region selection (EU or US) during credential setup","SQL-like filter syntax requires knowledge of Bronto's log schema"],"relatedNodes":[]}


node_type: n8n-nodes-scrapesense.scrapeSense
package_name: n8n-nodes-scrapesense
display_name: ScrapeSense
description: Use the ScrapeSense API without manual HTTP Request nodes
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:33
author_name: axelschmitz74
author_github_url: https://github.com/axelschmitz74/
npm_package_name: n8n-nodes-scrapesense
npm_version: 1.0.2
community_fetched_at: 2026-07-14T14:40:33.917Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "scan",
      "options": [
        {
          "name": "Billing",
          "value": "billing"
        },
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Email Cleaning",
          "value": "emailCleaning"
        },
        {
          "name": "Place",
          "value": "place"
        },
        {
          "name": "Scan",
          "value": "scan"
        },
        {
          "name": "Utility",
          "value": "utility"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "status",
      "options": [
        {
          "name": "Get Status",
          "value": "status",
          "action": "Get API status",
          "description": "Check API status and credential access"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "utility"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "campaignCreate",
      "options": [
        {
          "name": "Approve All",
          "value": "campaignApproveAll",
          "action": "Approve all campaign emails",
          "description": "Approve all emails pending review"
        },
        {
          "name": "Approve and Send All",
          "value": "campaignApproveAndSendAll",
          "action": "Approve and send all campaign emails",
          "description": "Approve all pending review emails and send approved emails"
        },
        {
          "name": "Approve Email",
          "value": "campaignApproveEmail",
          "action": "Approve a campaign email",
          "description": "Approve a single email"
        },
        {
          "name": "Cancel",
          "value": "campaignCancel",
          "action": "Cancel a campaign",
          "description": "Cancel an active campaign"
        },
        {
          "name": "Create",
          "value": "campaignCreate",
          "action": "Create a campaign",
          "description": "Create a campaign from a scan or place IDs"
        },
        {
          "name": "Delete",
          "value": "campaignDelete",
          "action": "Delete a campaign",
          "description": "Delete a campaign"
        },
        {
          "name": "Get",
          "value": "campaignGet",
          "action": "Get a campaign",
          "description": "Get campaign details"
        },
        {
          "name": "List",
          "value": "campaignList",
          "action": "List campaigns",
          "description": "List campaigns"
        },
        {
          "name": "List Emails",
          "value": "campaignListEmails",
          "action": "List campaign emails",
          "description": "List emails in a campaign"
        },
        {
          "name": "Pause",
          "value": "campaignPause",
          "action": "Pause a campaign",
          "description": "Pause a campaign"
        },
        {
          "name": "Resume",
          "value": "campaignResume",
          "action": "Resume a campaign",
          "description": "Resume a campaign"
        },
        {
          "name": "Retry Failed",
          "value": "campaignRetryFailed",
          "action": "Retry failed campaign emails",
          "description": "Retry failed campaign emails"
        },
        {
          "name": "Send All Approved",
          "value": "campaignSendAllApproved",
          "action": "Send all approved campaign emails",
          "description": "Send all approved emails"
        },
        {
          "name": "Send Email",
          "value": "campaignSendEmail",
          "action": "Send a campaign email",
          "description": "Send a single approved email"
        },
        {
          "name": "Start",
          "value": "campaignStart",
          "action": "Start a campaign",
          "description": "Start generation or sending flow"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scanCreate",
      "options": [
        {
          "name": "Cancel",
          "value": "scanCancel",
          "action": "Cancel a scan",
          "description": "Cancel an active scan"
        },
        {
          "name": "Create",
          "value": "scanCreate",
          "action": "Create a scan",
          "description": "Create a scan job"
        },
        {
          "name": "Delete",
          "value": "scanDelete",
          "action": "Delete a scan",
          "description": "Delete a scan"
        },
        {
          "name": "Get",
          "value": "scanGet",
          "action": "Get a scan",
          "description": "Get scan details"
        },
        {
          "name": "List",
          "value": "scanList",
          "action": "List scans",
          "description": "List scans"
        },
        {
          "name": "Pause",
          "value": "scanPause",
          "action": "Pause a scan",
          "description": "Pause a running scan"
        },
        {
          "name": "Resume",
          "value": "scanResume",
          "action": "Resume a scan",
          "description": "Resume a paused scan"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "placeList",
      "options": [
        {
          "name": "Get",
          "value": "placeGet",
          "action": "Get a place",
          "description": "Get one place by ID"
        },
        {
          "name": "List From Scan",
          "value": "placeList",
          "action": "List places from a scan",
          "description": "List places from a scan"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "place"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "emailPreview",
      "options": [
        {
          "name": "Apply",
          "value": "emailApply",
          "action": "Apply email cleaning changes",
          "description": "Apply email cleaning changes"
        },
        {
          "name": "Preview",
          "value": "emailPreview",
          "action": "Preview email cleaning changes",
          "description": "Preview email cleaning changes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "emailCleaning"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "billingCredits",
      "options": [
        {
          "name": "Get Credits",
          "value": "billingCredits",
          "action": "Get billing credits",
          "description": "Get credit balance and pricing"
        },
        {
          "name": "Get Settings",
          "value": "billingSettingsGet",
          "action": "Get billing settings",
          "description": "Get billing guardrail settings"
        },
        {
          "name": "Get Spend",
          "value": "billingSpend",
          "action": "Get billing spend",
          "description": "Get monthly spend snapshot"
        },
        {
          "name": "List Transactions",
          "value": "billingTransactions",
          "action": "List billing transactions",
          "description": "List billing transactions"
        },
        {
          "name": "Update Settings",
          "value": "billingSettingsUpdate",
          "action": "Update billing settings",
          "description": "Update billing guardrail settings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "billing"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Status",
      "value": "status",
      "action": "Get API status",
      "description": "Check API status and credential access",
      "resource": "utility"
    },
    {
      "name": "Approve All",
      "value": "campaignApproveAll",
      "action": "Approve all campaign emails",
      "description": "Approve all emails pending review",
      "resource": "campaign"
    },
    {
      "name": "Approve and Send All",
      "value": "campaignApproveAndSendAll",
      "action": "Approve and send all campaign emails",
      "description": "Approve all pending review emails and send approved emails",
      "resource": "campaign"
    },
    {
      "name": "Approve Email",
      "value": "campaignApproveEmail",
      "action": "Approve a campaign email",
      "description": "Approve a single email",
      "resource": "campaign"
    },
    {
      "name": "Cancel",
      "value": "campaignCancel",
      "action": "Cancel a campaign",
      "description": "Cancel an active campaign",
      "resource": "campaign"
    },
    {
      "name": "Create",
      "value": "campaignCreate",
      "action": "Create a campaign",
      "description": "Create a campaign from a scan or place IDs",
      "resource": "campaign"
    },
    {
      "name": "Delete",
      "value": "campaignDelete",
      "action": "Delete a campaign",
      "description": "Delete a campaign",
      "resource": "campaign"
    },
    {
      "name": "Get",
      "value": "campaignGet",
      "action": "Get a campaign",
      "description": "Get campaign details",
      "resource": "campaign"
    },
    {
      "name": "List",
      "value": "campaignList",
      "action": "List campaigns",
      "description": "List campaigns",
      "resource": "campaign"
    },
    {
      "name": "List Emails",
      "value": "campaignListEmails",
      "action": "List campaign emails",
      "description": "List emails in a campaign",
      "resource": "campaign"
    },
    {
      "name": "Pause",
      "value": "campaignPause",
      "action": "Pause a campaign",
      "description": "Pause a campaign",
      "resource": "campaign"
    },
    {
      "name": "Resume",
      "value": "campaignResume",
      "action": "Resume a campaign",
      "description": "Resume a campaign",
      "resource": "campaign"
    },
    {
      "name": "Retry Failed",
      "value": "campaignRetryFailed",
      "action": "Retry failed campaign emails",
      "description": "Retry failed campaign emails",
      "resource": "campaign"
    },
    {
      "name": "Send All Approved",
      "value": "campaignSendAllApproved",
      "action": "Send all approved campaign emails",
      "description": "Send all approved emails",
      "resource": "campaign"
    },
    {
      "name": "Send Email",
      "value": "campaignSendEmail",
      "action": "Send a campaign email",
      "description": "Send a single approved email",
      "resource": "campaign"
    },
    {
      "name": "Start",
      "value": "campaignStart",
      "action": "Start a campaign",
      "description": "Start generation or sending flow",
      "resource": "campaign"
    },
    {
      "name": "Cancel",
      "value": "scanCancel",
      "action": "Cancel a scan",
      "description": "Cancel an active scan",
      "resource": "scan"
    },
    {
      "name": "Create",
      "value": "scanCreate",
      "action": "Create a scan",
      "description": "Create a scan job",
      "resource": "scan"
    },
    {
      "name": "Delete",
      "value": "scanDelete",
      "action": "Delete a scan",
      "description": "Delete a scan",
      "resource": "scan"
    },
    {
      "name": "Get",
      "value": "scanGet",
      "action": "Get a scan",
      "description": "Get scan details",
      "resource": "scan"
    },
    {
      "name": "List",
      "value": "scanList",
      "action": "List scans",
      "description": "List scans",
      "resource": "scan"
    },
    {
      "name": "Pause",
      "value": "scanPause",
      "action": "Pause a scan",
      "description": "Pause a running scan",
      "resource": "scan"
    },
    {
      "name": "Resume",
      "value": "scanResume",
      "action": "Resume a scan",
      "description": "Resume a paused scan",
      "resource": "scan"
    },
    {
      "name": "Get",
      "value": "placeGet",
      "action": "Get a place",
      "description": "Get one place by ID",
      "resource": "place"
    },
    {
      "name": "List From Scan",
      "value": "placeList",
      "action": "List places from a scan",
      "description": "List places from a scan",
      "resource": "place"
    },
    {
      "name": "Apply",
      "value": "emailApply",
      "action": "Apply email cleaning changes",
      "description": "Apply email cleaning changes",
      "resource": "emailCleaning"
    },
    {
      "name": "Preview",
      "value": "emailPreview",
      "action": "Preview email cleaning changes",
      "description": "Preview email cleaning changes",
      "resource": "emailCleaning"
    },
    {
      "name": "Get Credits",
      "value": "billingCredits",
      "action": "Get billing credits",
      "description": "Get credit balance and pricing",
      "resource": "billing"
    },
    {
      "name": "Get Settings",
      "value": "billingSettingsGet",
      "action": "Get billing settings",
      "description": "Get billing guardrail settings",
      "resource": "billing"
    },
    {
      "name": "Get Spend",
      "value": "billingSpend",
      "action": "Get billing spend",
      "description": "Get monthly spend snapshot",
      "resource": "billing"
    },
    {
      "name": "List Transactions",
      "value": "billingTransactions",
      "action": "List billing transactions",
      "description": "List billing transactions",
      "resource": "billing"
    },
    {
      "name": "Update Settings",
      "value": "billingSettingsUpdate",
      "action": "Update billing settings",
      "description": "Update billing guardrail settings",
      "resource": "billing"
    }
  ]

npm_readme:
  # n8n-nodes-scrapesense

  n8n community node for the ScrapeSense public API.

  This package lets you run ScrapeSense scans, read places, clean emails, and work with campaign and billing data without custom HTTP nodes.

  ## Installation

  ### In n8n UI (self-hosted)

  1. Open **Settings** > **Community Nodes**.
  2. Click **Install**.
  3. Enter package name: `n8n-nodes-scrapesense`.
  4. Install and restart n8n.

  ### Manual install (self-hosted)

  ```bash
  cd ~/.n8n/nodes
  npm install n8n-nodes-scrapesense
  ```

  ## Operations

  The `ScrapeSense` node supports:

  - Utility: `Get Status`
  - Campaigns: `Create`, `List`, `Get`, `List Emails`, `Start`, `Pause`, `Resume`, `Cancel`, `Approve Email`, `Approve All`, `Send Email`, `Send All Approved`, `Approve and Send All`, `Retry Failed`, `Delete`
  - Scan: `Create`, `Get`, `List`, `Pause`, `Resume`, `Cancel`, `Delete`
  - Place: `List from Scan`, `Get`
  - Email Cleaning: `Preview`, `Apply`
  - Billing: `Get Credits`, `List Transactions`, `Get Spend`, `Get Settings`, `Update Settings`

  ## Credentials

  Use the `ScrapeSense API` credential:

  - `Base URL`
    - Cloud: `https://api.scrapesense.com/v1`
    - Local/self-hosted backend: `http://localhost:3005/api/v1`
  - `API Key` (Bearer token from ScrapeSense developer settings)

  Credential test calls `GET /status`.

  ## Example workflow

  1. Add `ScrapeSense` node with resource `Scan` and operation `Create`.
  2. Store returned `scanId`.
  3. Add a loop with `Wait` + `ScrapeSense` (`Scan` -> `Get`) until status is `completed`.
  4. Add `ScrapeSense` (`Campaign` -> `Create`) after scan completion.

  ## Local development

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

  ## Publishing

  This repo includes `.github/workflows/publish-n8n-node.yml` for npm publish with provenance.

  1. Add repository secret `NPM_TOKEN`.
  2. Bump `version` in `package.json`.
  3. Run the GitHub Action manually, or publish a release tag matching `n8n-node-v*`.

  ## Community submission

  After publishing to npm, submit in the n8n Creator Portal:

  - <https://creators.n8n.io/nodes>

  ## References

  - <https://docs.n8n.io/integrations/community-nodes/installation/>
  - <https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/>

ai_documentation_summary:
  {"purpose":"Provides direct integration with the ScrapeSense public API to automate email scraping, campaign management, and data cleaning without requiring manual HTTP Request nodes.","capabilities":["Run and manage ScrapeSense scans (Create, Get, List, Pause, Resume, Cancel, Delete)","Manage email campaigns (Create, List, Get, Start, Pause, Resume, Cancel)","Handle email approval and sending (Approve Email, Approve All, Send Email, Send All Approved, Approve and Send All, Retry Failed)","List and retrieve places from scans","Clean emails (Preview, Apply)","Monitor billing (Get Credits, List Transactions, Get Spend)","Manage account settings (Get Settings, Update Settings)","Check API status"],"authentication":"API key required (Bearer token)","commonUseCases":["Automated lead generation via email scraping","Bulk email campaign management and sending","Data enrichment by cleaning scraped emails","Monitoring scraping costs and usage via billing data"],"limitations":[],"relatedNodes":[]}


