# nodes

node_type: n8n-nodes-kipps.kippsAi
package_name: n8n-nodes-kipps
display_name: Kipps.AI
description: Interact with Kipps.AI — Chatbot, Voice Agent, or WhatsApp
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: kipps.ai
author_github_url: https://github.com/KIPPS-AI/
npm_package_name: n8n-nodes-kipps
npm_version: 1.0.1
community_fetched_at: 2026-07-14T14:40:34.291Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n Nodes for Kipps.AI

  This package provides production-ready custom n8n nodes for integrating with the Kipps.AI platform.

  It supports:

  * **Chatbot Agents** — conversational AI workflows
  * **Voice Agents** — outbound/inbound AI voice calls
  * **WhatsApp Agents** — template messaging via WhatsApp Business

  ---

  # Features

  ## Supported Nodes

  ### 1. Kipps.AI Chatbot

  Send messages to Kipps chatbot agents and receive contextual responses.

  ### 2. Kipps.AI Voice Agent

  Initiate voice calls using Kipps voice agents.

  ### 3. Kipps.AI WhatsApp Agent

  Send approved WhatsApp templates through agent-linked WhatsApp integrations.

  ### 4. Dynamic Agent Discovery

  Agents are automatically loaded from the authenticated organization.

  No manual UUID lookup is required.

  Agents are loaded using:

  ```http
  GET /kipps/agents/
  ```

  and automatically filtered into:

  * Chatbots
  * Voice Agents
  * WhatsApp Agents

  ---

  # Installation

  ---

  ## Docker (Recommended for Local Testing)

  ### Step 1: Clone Repository

  ```bash
  git clone https://github.com/KIPPS-AI/n8n-nodes-kipps.git
  cd n8n-nodes-kipps
  ```

  ---

  ### Step 2: Install Dependencies

  ```bash
  npm install
  ```

  ---

  ### Step 3: Build Node

  ```bash
  npm run build
  ```

  ---

  ### Step 4: Verify Build Output

  ```bash
  ls dist/nodes/KippsAi/
  ```

  Expected:

  ```bash
  KippsAi.node.js
  kipps-light.png
  kipps-dark.png
  ```

  ---

  ### Step 5: Run n8n with Docker

  ## Windows PowerShell

  ```powershell
  docker run -it --rm -p 5678:5678 `
    -v "${PWD}:/home/node/.n8n/custom" `
    -e N8N_CUSTOM_EXTENSIONS_MODE=paths `
    -e N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom `
    n8nio/n8n
  ```

  ---

  ## Windows CMD

  ```cmd
  docker run -it --rm -p 5678:5678 -v "%cd%:/home/node/.n8n/custom" -e N8N_CUSTOM_EXTENSIONS_MODE=paths -e N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom n8nio/n8n
  ```

  ---

  ## Linux/macOS

  ```bash
  docker run -it --rm -p 5678:5678 \
    -v "$(pwd):/home/node/.n8n/custom" \
    -e N8N_CUSTOM_EXTENSIONS_MODE=paths \
    -e N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom \
    n8nio/n8n
  ```

  ---

  ### Step 6: Open n8n

  ```txt
  http://localhost:5678
  ```

  ---

  # Production Installation (npm)

  ```bash
  npm install n8n-nodes-kipps
  ```

  Restart n8n after installation.

  ---

  # Docker Compose Mount

  ```yaml
  volumes:
    - ./n8n-nodes-kipps:/home/node/.n8n/custom
  ```

  ---

  # Authentication Setup

  Kipps.AI nodes use API Key authentication.

  ## Credential Fields

  ### Required

  * API Key

  ### Optional

  * Base URL

  Production:

  ```txt
  https://backend.kipps.ai
  ```

  Local Development:

  ```txt
  http://host.docker.internal:8000
  ```

  If Base URL is left empty, the node automatically uses:

  ```txt
  https://backend.kipps.ai
  ```

  ---

  # Credential Verification

  Credential validation uses:

  ```http
  GET /kipps/agents/
  ```

  A successful response confirms:

  * API key is valid
  * Organization access is available
  * Agent discovery is working

  ---

  # Node Types and Parameters

  ---

  # Kipps.AI Chatbot

  ### Parameters

  * **Agent Name or ID** — Automatically loaded from your organization
  * **Message** — User input
  * **Session ID** — Optional conversation continuity

  ### APIs Used

  ```http
  POST /v2/kipps/conversation/
  POST /v2/kipps/reply/
  ```

  ---

  # Kipps.AI Voice Agent

  ### Parameters

  * **Voicebot Name or ID** — Automatically loaded from your organization
  * **Phone Number**
  * **Room Name**

  ### API Used

  ```http
  POST /speech/phone-call/
  ```

  ---

  # Kipps.AI WhatsApp Agent

  ### Parameters

  * **WhatsApp Agent Name or ID** — Automatically loaded from your organization
  * **Recipient Number**
  * **Template Name**
  * **Template Parameters**

  ---

  # WhatsApp Template Architecture

  ## Template Fetch Endpoint

  ```http
  GET /integrations/get-whatsapp-templates/
  ```

  ### Requirements

  * Authenticated organization
  * Valid API key

  ---

  ## Send Template Endpoint

  ```http
  POST /integrations/whatsapp-agent/send-template/
  ```

  ### Required Payload

  ```json
  {
    "to": "+1234567890",
    "template_name": "hello_world",
    "parameters": {}
  }
  ```

  ---

  # Local Development Notes

  If testing against a local Django backend:

  ### Base URL

  ```txt
  http://host.docker.internal:8000
  ```

  ---

  ### Django Run Command

  ```bash
  python manage.py runserver 0.0.0.0:8000
  ```

  ---

  ### Local Authentication

  Use a valid local API Key and configure:

  ```txt
  Base URL = http://host.docker.internal:8000
  ```

  ---

  # Common Issues

  ---

  ## Node Not Appearing

  ### Causes

  * Build failure
  * Wrong mount path
  * Missing package.json configuration

  ### Fix

  ```bash
  npm run build
  ```

  ---

  ## Broken Icon

  ### Causes

  * Missing icon files
  * Wrong filenames

  ### Required

  ```txt
  kipps-light.png
  kipps-dark.png
  ```

  ---

  ## Agent Dropdown Not Loading

  ### Causes

  * Invalid API key
  * Wrong backend URL
  * Missing organization access
  * Stale Docker build

  ### Fix

  * Verify credentials
  * Verify API key permissions
  * Rebuild node
  * Restart n8n container

  ---

  ## Template Dropdown Not Loading

  ### Causes

  * Invalid WhatsApp agent
  * Missing approved templates
  * Wrong backend URL
  * Stale Docker build

  ### Fix

  * Verify credentials
  * Verify WhatsApp agent configuration
  * Rebuild
  * Restart container

  ---

  ## Docker Errors

  ### Port already allocated

  ```bash
  docker ps
  docker stop <container_id>
  ```

  ---

  ### Permission denied scanning host

  Mount the correct project directory only.

  ---

  # Build Commands

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

  ---

  # Publishing to npm

  ### First time setup

  ```bash
  # Login to npm
  npm login

  # Generate a Granular Access Token on npmjs.com:
  # Avatar → Access Tokens → Generate New Token → Granular Access Token
  # Permissions: Read and write | Packages: All packages

  # Set the token
  npm set //registry.npmjs.org/:_authToken YOUR_TOKEN_HERE
  ```

  ### Publish manually

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

  ### Version bumping rules

  Every publish needs a new version in `package.json`:

  | Change type | Example           | When to use               |
  | ----------- | ----------------- | ------------------------- |
  | Patch       | `1.0.0` → `1.0.1` | Bug fix, lint fix         |
  | Minor       | `1.0.0` → `1.1.0` | New agent type, new field |
  | Major       | `1.0.0` → `2.0.0` | Breaking change           |

  ---

  ## GitHub Actions — Automated Publish

  After the initial setup, **never publish manually**. All publishes go through GitHub Actions for npm provenance (required for n8n verification).

  ### How it works

  ```
  You push code changes
        ↓
  Update version in package.json
        ↓
  git push to master
        ↓
  GitHub → Releases → Create new release
  Tag: v1.0.2 (must match package.json version,always new version)
        ↓
  GitHub Actions automatically runs:
    - npm install
    - npm run build
    - npm publish --provenance
        ↓
  npm email confirmation received ✅
  ```

  ### Setup (one time only)

  **1. Add NPM_TOKEN to GitHub secrets:**

  - Repo → Settings → Secrets and variables → Actions
  - New repository secret
      - Name: `NPM_TOKEN`
      - Value: your npmjs.com Granular Access Token

  **2. Workflow file is already in repo:**
  `.github/workflows/publish.yml`

  ### Creating a release

  1. Update `version` in `package.json` (e.g. `1.0.2`)
  2. Commit and push
  3. GitHub repo → **Releases** → **Create a new release**
  4. Tag: `v1.0.2` (create new tag)
  5. Title: `v1.0.2`
  6. Click **Publish release**
  7. Watch **Actions** tab — should go green in ~2 minutes

  ---

  # Recommended Testing Flow

  ## Before Production

  Verify:

  * Credential authentication
  * Chatbot dropdown
  * Voicebot dropdown
  * WhatsApp dropdown
  * Template dropdown
  * Template parameter mapper
  * Chatbot execution
  * Voice call execution
  * WhatsApp template execution
  * Docker loading
  * Icon rendering

  ---

  # Support

  ## Kipps Platform

  ```txt
  https://app.kipps.ai
  ```

  ## Backend API

  ```txt
  https://backend.kipps.ai
  ```

  ---

  # Final Notes

  This package is designed for:

  * Workflow automation
  * Lead generation
  * WhatsApp campaigns
  * AI voice automation
  * Enterprise chatbot integrations

  For production deployment, always validate:

  * API credentials
  * Organization permissions
  * WhatsApp integrations
  * Template approval status

  ---

  # License

  MIT

ai_documentation_summary:
  {"purpose":"This n8n node package enables integration with Kipps.AI for conversational chatbots, AI voice calls, and WhatsApp Business messaging.","capabilities":["Send messages to chatbot agents and receive contextual responses","Initiate outbound and inbound AI voice calls","Send approved WhatsApp templates via WhatsApp Business","Manage conversation continuity with session IDs","Fetch and map WhatsApp template parameters"],"authentication":"API Key / Bearer Token required; requires configuration of allowed HTTP request domains (default: backend.kipps.ai)","commonUseCases":["Customer support chatbot automation","AI-powered outbound calling campaigns","WhatsApp marketing and notification campaigns","Lead generation workflows"],"limitations":["Requires manual Docker build or npm installation for local use","WhatsApp templates must be pre-approved by the platform","Local testing requires specific backend URL configuration (host.docker.internal)","Some features like template dropdowns may fail if API credentials are invalid or backend is unreachable"],"relatedNodes":["n8n-nodes-whatsapp","n8n-nodes-http-request","n8n-nodes-ai-chatbot"]}


node_type: n8n-nodes-viral-app.viralApp
package_name: n8n-nodes-viral-app
display_name: ViralApp
description: Interact with ViralApp API for video analytics on TikTok, Instagram, and YouTube
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: felixvemmer
author_github_url: https://github.com/fmd-labs/
npm_package_name: n8n-nodes-viral-app
npm_version: 0.2.12
community_fetched_at: 2026-07-14T14:40:34.292Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "trackedAccounts",
      "options": [
        {
          "name": "Account Data",
          "value": "accountAnalytics",
          "description": "Analytics for tracked accounts"
        },
        {
          "name": "General Data",
          "value": "generalAnalytics",
          "description": "General analytics and overview"
        },
        {
          "name": "Integration",
          "value": "integrations",
          "description": "Third-party integrations"
        },
        {
          "name": "Project",
          "value": "projects",
          "description": "Project management"
        },
        {
          "name": "Tracked Account",
          "value": "trackedAccounts",
          "description": "Manage and monitor tracked accounts"
        },
        {
          "name": "Tracked Individual Video",
          "value": "trackedIndividualVideos",
          "description": "Manage and monitor individual tracked videos"
        },
        {
          "name": "Video Data",
          "value": "videoAnalytics",
          "description": "Analytics for tracked videos"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add tracked accounts",
          "description": "Add new tracked accounts"
        },
        {
          "name": "Get Count",
          "value": "getCount",
          "action": "Get tracked accounts count",
          "description": "Get count of tracked accounts"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List all tracked accounts",
          "description": "List many tracked accounts"
        },
        {
          "name": "Refresh",
          "value": "refresh",
          "action": "Refresh tracked accounts",
          "description": "Refresh tracked accounts data"
        },
        {
          "name": "Update Hashtags",
          "value": "updateHashtags",
          "action": "Update hashtags for tracked account",
          "description": "Update hashtag filters for an account"
        },
        {
          "name": "Update Max Videos",
          "value": "updateMaxVideos",
          "action": "Update max videos for tracked account",
          "description": "Update maximum videos to track for an account"
        },
        {
          "name": "Update Project Hashtags",
          "value": "updateProjectHashtags",
          "action": "Update project hashtags for tracked account",
          "description": "Update project-specific hashtag filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trackedAccounts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List all individually tracked videos",
          "description": "List many individually tracked videos"
        },
        {
          "name": "Add",
          "value": "add",
          "action": "Add individually tracked videos",
          "description": "Add new videos to track individually"
        },
        {
          "name": "Refresh",
          "value": "refresh",
          "action": "Refresh individually tracked videos",
          "description": "Refresh tracked video data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trackedIndividualVideos"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List all accounts with analytics",
          "description": "List many accounts with analytics"
        },
        {
          "name": "Export",
          "value": "export",
          "action": "Export accounts to CSV",
          "description": "Export accounts to CSV"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accountAnalytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Download",
          "value": "download",
          "action": "Download video",
          "description": "Download the video file"
        },
        {
          "name": "Exclude",
          "value": "exclude",
          "action": "Exclude videos from analytics",
          "description": "Exclude videos from analytics"
        },
        {
          "name": "Export",
          "value": "export",
          "action": "Export videos to CSV",
          "description": "Export videos to CSV"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get specific video metrics",
          "description": "Get specific video metrics"
        },
        {
          "name": "Get Activity",
          "value": "getActivity",
          "action": "Get video activity timeline",
          "description": "Get video activity timeline"
        },
        {
          "name": "Get Excluded",
          "value": "getExcluded",
          "action": "List excluded videos",
          "description": "List excluded videos"
        },
        {
          "name": "Get History",
          "value": "getHistory",
          "action": "Get video history metrics",
          "description": "Get video history metrics"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List tracked videos with analytics",
          "description": "List tracked videos with analytics"
        },
        {
          "name": "Restore Excluded",
          "value": "restoreExcluded",
          "action": "Restore excluded videos",
          "description": "Restore previously excluded videos"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "videoAnalytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getKpis",
      "options": [
        {
          "name": "Export Daily Gains",
          "value": "exportDailyGains",
          "action": "Export video daily gains",
          "description": "Export video daily gains to CSV"
        },
        {
          "name": "Get Interaction Metrics",
          "value": "getInteractionMetrics",
          "action": "Get interaction metrics",
          "description": "Get interaction metrics over time"
        },
        {
          "name": "Get KPIs",
          "value": "getKpis",
          "action": "Get key performance indicators",
          "description": "Get key performance indicators"
        },
        {
          "name": "Get Top Accounts",
          "value": "getTopAccounts",
          "action": "Get top performing accounts",
          "description": "Get top performing accounts"
        },
        {
          "name": "Get Top Videos",
          "value": "getTopVideos",
          "action": "Get top performing videos",
          "description": "Get top performing videos"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "generalAnalytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Account",
          "value": "addAccount",
          "action": "Add account to project",
          "description": "Add an account to a project"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project",
          "description": "Create a new project"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project",
          "description": "Delete a project"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "List all projects",
          "description": "List many projects"
        },
        {
          "name": "Remove Account",
          "value": "removeAccount",
          "action": "Remove account from project",
          "description": "Remove an account from a project"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project",
          "description": "Update an existing project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projects"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getApps",
      "options": [
        {
          "name": "Get Apps",
          "value": "getApps",
          "action": "Get connected apps",
          "description": "Get list of connected apps and integrations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "integrations"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add",
      "value": "add",
      "action": "Add tracked accounts",
      "description": "Add new tracked accounts",
      "resource": "trackedAccounts"
    },
    {
      "name": "Get Count",
      "value": "getCount",
      "action": "Get tracked accounts count",
      "description": "Get count of tracked accounts",
      "resource": "trackedAccounts"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List all tracked accounts",
      "description": "List many tracked accounts",
      "resource": "trackedAccounts"
    },
    {
      "name": "Refresh",
      "value": "refresh",
      "action": "Refresh tracked accounts",
      "description": "Refresh tracked accounts data",
      "resource": "trackedAccounts"
    },
    {
      "name": "Update Hashtags",
      "value": "updateHashtags",
      "action": "Update hashtags for tracked account",
      "description": "Update hashtag filters for an account",
      "resource": "trackedAccounts"
    },
    {
      "name": "Update Max Videos",
      "value": "updateMaxVideos",
      "action": "Update max videos for tracked account",
      "description": "Update maximum videos to track for an account",
      "resource": "trackedAccounts"
    },
    {
      "name": "Update Project Hashtags",
      "value": "updateProjectHashtags",
      "action": "Update project hashtags for tracked account",
      "description": "Update project-specific hashtag filters",
      "resource": "trackedAccounts"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List all individually tracked videos",
      "description": "List many individually tracked videos",
      "resource": "trackedIndividualVideos"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add individually tracked videos",
      "description": "Add new videos to track individually",
      "resource": "trackedIndividualVideos"
    },
    {
      "name": "Refresh",
      "value": "refresh",
      "action": "Refresh individually tracked videos",
      "description": "Refresh tracked video data",
      "resource": "trackedIndividualVideos"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List all accounts with analytics",
      "description": "List many accounts with analytics",
      "resource": "accountAnalytics"
    },
    {
      "name": "Export",
      "value": "export",
      "action": "Export accounts to CSV",
      "description": "Export accounts to CSV",
      "resource": "accountAnalytics"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download video",
      "description": "Download the video file",
      "resource": "videoAnalytics"
    },
    {
      "name": "Exclude",
      "value": "exclude",
      "action": "Exclude videos from analytics",
      "description": "Exclude videos from analytics",
      "resource": "videoAnalytics"
    },
    {
      "name": "Export",
      "value": "export",
      "action": "Export videos to CSV",
      "description": "Export videos to CSV",
      "resource": "videoAnalytics"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get specific video metrics",
      "description": "Get specific video metrics",
      "resource": "videoAnalytics"
    },
    {
      "name": "Get Activity",
      "value": "getActivity",
      "action": "Get video activity timeline",
      "description": "Get video activity timeline",
      "resource": "videoAnalytics"
    },
    {
      "name": "Get Excluded",
      "value": "getExcluded",
      "action": "List excluded videos",
      "description": "List excluded videos",
      "resource": "videoAnalytics"
    },
    {
      "name": "Get History",
      "value": "getHistory",
      "action": "Get video history metrics",
      "description": "Get video history metrics",
      "resource": "videoAnalytics"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List tracked videos with analytics",
      "description": "List tracked videos with analytics",
      "resource": "videoAnalytics"
    },
    {
      "name": "Restore Excluded",
      "value": "restoreExcluded",
      "action": "Restore excluded videos",
      "description": "Restore previously excluded videos",
      "resource": "videoAnalytics"
    },
    {
      "name": "Export Daily Gains",
      "value": "exportDailyGains",
      "action": "Export video daily gains",
      "description": "Export video daily gains to CSV",
      "resource": "generalAnalytics"
    },
    {
      "name": "Get Interaction Metrics",
      "value": "getInteractionMetrics",
      "action": "Get interaction metrics",
      "description": "Get interaction metrics over time",
      "resource": "generalAnalytics"
    },
    {
      "name": "Get KPIs",
      "value": "getKpis",
      "action": "Get key performance indicators",
      "description": "Get key performance indicators",
      "resource": "generalAnalytics"
    },
    {
      "name": "Get Top Accounts",
      "value": "getTopAccounts",
      "action": "Get top performing accounts",
      "description": "Get top performing accounts",
      "resource": "generalAnalytics"
    },
    {
      "name": "Get Top Videos",
      "value": "getTopVideos",
      "action": "Get top performing videos",
      "description": "Get top performing videos",
      "resource": "generalAnalytics"
    },
    {
      "name": "Add Account",
      "value": "addAccount",
      "action": "Add account to project",
      "description": "Add an account to a project",
      "resource": "projects"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project",
      "description": "Create a new project",
      "resource": "projects"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project",
      "description": "Delete a project",
      "resource": "projects"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "List all projects",
      "description": "List many projects",
      "resource": "projects"
    },
    {
      "name": "Remove Account",
      "value": "removeAccount",
      "action": "Remove account from project",
      "description": "Remove an account from a project",
      "resource": "projects"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project",
      "description": "Update an existing project",
      "resource": "projects"
    },
    {
      "name": "Get Apps",
      "value": "getApps",
      "action": "Get connected apps",
      "description": "Get list of connected apps and integrations",
      "resource": "integrations"
    }
  ]

npm_readme:
  # n8n-nodes-viral-app

  This is an n8n community node that lets you use ViralApp in your n8n workflows.

  ViralApp is a comprehensive video analytics platform that provides insights and tracking for content across TikTok, Instagram, and YouTube. It helps creators and businesses monitor their social media performance, track competitors, and discover trending content.

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

  ## Table of Contents
  - [Installation](#installation)  
  - [Operations](#operations)  
  - [Credentials](#credentials)  
  - [Compatibility](#compatibility)  
  - [Resources](#resources)  
  - [Development](#development)
  - [Publishing](#publishing)
  - [Version History](#version-history)

  ## Installation

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

  ### npm Installation
  ```bash
  npm install n8n-nodes-viral-app
  ```

  ### GUI Installation
  1. Go to **Settings** > **Community Nodes**
  2. Click **Install**
  3. Enter `n8n-nodes-viral-app`
  4. Click **Install**

  ## Operations

  The ViralApp node supports the following resources and operations:

  ### Notes on dropdown search
  - Account and project pickers are searchable and accept direct IDs.
  - Video picker is client-filtered over the first 100 items (platform + optional account filter); type to narrow results.

  ### Account Data
  - **Get Top Videos** - Retrieve top performing videos for tracked accounts
  - **Get Top Accounts** - Get top performing accounts from your tracked list
  - **Get KPIs** - Fetch key performance indicators for accounts
  - **Get Interaction Metrics** - Retrieve interaction metrics for accounts
  - **Export Daily Gains** - Export daily gains data for accounts

  ### Video Data  
  - **Get Top Videos** - Retrieve top performing videos
  - **Get Top Accounts** - Get accounts with top performing videos
  - **Get KPIs** - Fetch video performance KPIs
  - **Get Interaction Metrics** - Retrieve video interaction metrics
  - **Export Daily Gains** - Export daily video gains data

  ### Tracked Accounts
  - **Create** - Add a new tracked account
  - **Delete** - Remove a tracked account
  - **Get** - Retrieve details of a specific tracked account
  - **Get Many** - List multiple tracked accounts with filtering
  - **Update** - Modify tracked account settings
  - **Export Daily Gains** - Export daily gains for tracked accounts

  ### Tracked Individual Videos
  - **Create** - Add a new tracked video
  - **Delete** - Remove a tracked video
  - **Get** - Retrieve details of a specific tracked video
  - **Get Many** - List multiple tracked videos
  - **Update** - Modify tracked video settings

  ### Projects
  - **Create** - Create a new project
  - **Delete** - Remove a project
  - **Get** - Retrieve project details
  - **Get Many** - List multiple projects
  - **Update** - Modify project settings

  ### Integrations
  - **Create** - Set up a new integration
  - **Delete** - Remove an integration
  - **Get** - Retrieve integration details
  - **Get Many** - List integrations
  - **Update** - Modify integration settings

  ### General Data
  - **Get Categories** - Retrieve available content categories
  - **Get Countries** - Get list of supported countries
  - **Get Performance KPIs** - Fetch performance KPIs
  - **Get Top Videos** - Retrieve overall top performing videos

  ## Credentials

  To use this node, you need to authenticate with the ViralApp API.

  ### Prerequisites
  1. Sign up for a ViralApp account at [viral.app](https://viral.app)
  2. Navigate to your account settings
  3. Generate an API key

  ### Setting up credentials in n8n
  1. In n8n, go to **Credentials** > **New**
  2. Select **ViralApp API** from the list
  3. Enter your API key
  4. Click **Save**

  ## Compatibility

  - **Minimum n8n version:** 1.0.0
  - **Tested with:** n8n 1.0.0 and above
  - **Node.js:** 18.10.0 or higher

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [ViralApp API documentation](https://viral.app/api-docs)
  * [ViralApp website](https://viral.app)
  * [Support](mailto:support@viral.app)

  ## Development

  To contribute to this node or run it locally for development:

  ```bash
  # Install dependencies
  pnpm install

  # Build the node
  pnpm build

  # Run n8n with the node loaded
  pnpm dev

  # Rebuild TypeScript on changes without starting n8n
  pnpm build:watch

  # Run linter
  pnpm lint

  # Run linter and auto-fix
  pnpm lint:fix
  ```

  ## Publishing

  Verified n8n community nodes must be published from GitHub Actions with npm provenance.

  1. Configure npm Trusted Publishing for `.github/workflows/publish.yml`, or add an `NPM_TOKEN` repository secret.
  2. Run the release flow locally:

  ```bash
  pnpm release
  ```

  The release command lints, builds, bumps the version, creates the Git tag, and pushes it. The tag triggers GitHub Actions, which publishes the package to npm with provenance. Direct local `npm publish` is blocked by `prepublishOnly`.

  ## License

  [MIT](LICENSE.md)

  ## Version History

  ### 0.2.8
  - Make all analytics account/project filters searchable via dropdown or direct ID.
  - Centralize list searches with pagination and perPage=100; video picker still client-filters due to API limitations.
  - Restore baseURL defaults for safer relative requests.

  ### 0.2.4
  - Align all ViralApp node sort options with the ViralApp dashboard by adding the latest sortable columns for tracked videos, accounts, integrations, and analytics exports
  - Verified the release with `pnpm build` and `pnpm lint`

  ### 0.2.3
  - Add an `Expand Related` option to **Video Analytics → Get Many**, enabling Stripe-style `expand=projects` responses for richer project data
  - Ensure Video Analytics requests pass `expand` arrays using standard query encoding

  ### 0.2.2
  - Remove package installation hooks to meet n8n Cloud security guidelines
  - Move internal tooling dependency to `devDependencies` to keep runtime footprint empty
  - Link node outputs to their originating inputs using `pairedItem` for improved workflow debugging

  ### 0.2.1
  - **Simplified parameter handling for tracked accounts and videos**
  - Replace resourceLocator with simple string fields:
    * Tracked Accounts refresh: Now uses simple account ID input instead of complex resourceLocator
    * Tracked Individual Videos add/refresh: Now uses simple video ID input instead of resourceLocator
  - Fix validation errors: "expected string, received object" issues resolved
  - Improve user experience with clearer field descriptions:
    * Account ID: "Native platform account id"
    * Video ID: "Platform-specific video ID"
    * Platform: "Social media platform (tiktok, instagram, youtube)"
  - Streamline node usage by removing unnecessary UI complexity

  ### 0.2.0
  - **Major improvements to API parameter coverage and data simplification**
  - Add complete parameter coverage for all API endpoints:
    * Projects: Add name filter for searching projects
    * GeneralAnalytics: Add contentTypes filter to interaction-metrics and KPIs operations
    * Integrations: Add provider, search, sortCol, and sortDir parameters for comprehensive filtering
    * TrackedIndividualVideos: Add search parameter for finding specific videos
  - Implement Simplify option across all data operations:
    * GeneralAnalytics: All 4 operations now support simplified output
    * Projects: getAll operation returns essential fields only when simplified
    * Integrations: getApps operation provides streamlined app information
  - Fix critical date handling issues in General Analytics:
    * Properly format dates to YYYY-MM-DD for API compatibility
    * Remove conflicting routing configurations
    * Ensure consistent date processing across all operations
  - Fix data structure issues in simplify operations:
    * Correct field mapping for getKpis (videoCount, viewCount, etc.)
    * Fix getInteractionMetrics to properly access nested dailyMetrics array
    * Remove non-existent fields and add missing ones (bookmarks)
  - Improve overall node reliability and user experience

  ### 0.1.2
  - Move @typescript-eslint/utils from devDependencies to dependencies to fix n8n package scanner compatibility

  ### 0.1.1
  - Fix ESLint compatibility by adding @typescript-eslint/utils dependency
  - Improve API request handling for POST requests
  - Enhance VideoAnalytics functionality with regex extraction for video IDs
  - Update parameter naming for better clarity (filters → activityFilters)
  - Remove outdated API documentation and routing information
  - Add @types/node dependency for better TypeScript support

  ### 0.1.0
  - Initial release
  - Support for all major ViralApp API endpoints
  - Account Data operations
  - Video Data operations  
  - Tracked Accounts management
  - Tracked Individual Videos management
  - Projects management
  - Integrations management
  - General Data operations

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation workflows to interact with the ViralApp API for video analytics across TikTok, Instagram, and YouTube, allowing users to track performance, monitor competitors, and analyze content trends.","capabilities":["Retrieve top performing videos for accounts","Get top performing accounts","Fetch key performance indicators (KPIs)","Retrieve interaction metrics","Export daily gains data","Create, update, delete, and list tracked accounts","Create, update, delete, and list tracked individual videos","Manage projects and integrations","Retrieve content categories and supported countries","Searchable dropdown filters for accounts, projects, and videos"],"authentication":"API key required","commonUseCases":["Monitor social media video performance across multiple platforms","Track competitor content strategies","Automate reporting of daily video analytics","Identify trending content and top-performing accounts"],"limitations":["Video picker is client-filtered over the first 100 items due to API limitations","Minimum n8n version required is 1.0.0","Node.js version 18.10.0 or higher is required"],"relatedNodes":["n8n-nodes-viral-app.viralApp"]}


node_type: n8n-nodes-paystack.paystackTrigger
package_name: n8n-nodes-paystack
display_name: Paystack Trigger
description: Handle Paystack webhooks
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: mr-taiwo
author_github_url: https://github.com/tjava/
npm_package_name: n8n-nodes-paystack
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.293Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-paystack

  This is an n8n community node to interact with [Paystack](https://paystack.com/), a leading payment gateway in Africa.

  [Paystack](https://paystack.com/) allows businesses to accept payments via various channels including cards, bank transfers, USSD, and mobile money.

  ## Features

  - **Transactions**: Initialize, verify, fetch, and list transactions.
  - **Customers**: Create, update, fetch, and list customers.
  - **Plans & Subscriptions**: Manage recurring billing.
  - **Refunds**: Process and track refunds.
  - **Transfers**: Create recipients and initiate transfers.
  - **Balance & Banks**: Check your balance and resolve bank accounts.
  - **Webhook Trigger**: Listen for real-time events from Paystack.

  ## Installation

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

  ```bash
  npm install n8n-nodes-paystack
  ```

  ## Credentials

  To use this node, you need a Paystack account.

  1. Go to your [Paystack Dashboard](https://dashboard.paystack.com/).
  2. Navigate to **Settings** > **API Keys & Webhooks**.
  3. Copy your **Secret Key** (use the `sk_test_...` key for testing and `sk_live_...` for production).
  4. In n8n, create a new **Paystack API** credential and paste your Secret Key.

  ## Operations

  ### Transaction
  - **Initialize**: Start a new transaction.
  - **Verify**: Confirm the status of a transaction using its reference.
  - **Fetch**: Get details of a single transaction.
  - **List**: Retrieve a list of your transactions.

  ### Customer
  - **Create**: Add a new customer to your integration.
  - **Update**: Modify an existing customer's details.
  - **Fetch**: Get a customer's profile.
  - **List**: Retrieve your customer list.

  ### Refund
  - **Create**: Initiate a refund for a transaction.
  - **List**: View previous refunds.

  ### Plan
  - **Create**: Set up a new recurring billing plan.
  - **List**: View all your plans.

  ### Subscription
  - **Create**: Enroll a customer in a plan.
  - **Disable**: Cancel a subscription.
  - **List**: View all subscriptions.

  ### Transfer
  - **Create Recipient**: Set up a destination for transfers.
  - **Initiate**: Send money to a recipient.
  - **Finalize**: Complete a transfer requiring OTP.
  - **List**: View transfer history.

  ### Balance
  - **Fetch Balance**: See your current Paystack account balance.
  - **List Banks**: Get a list of supported banks and their codes.
  - **Resolve Account**: Verify a bank account number.

  ## Usage

  ### Webhook Trigger
  Use the **Paystack Trigger** node to receive notifications for events like `charge.success`, `transfer.success`, and `subscription.create`. Ensure you copy the Webhook URL from the node and paste it into your Paystack Dashboard settings.

  ## Development

  1. Clone the repository:
  ```bash
  git clone https://github.com/tjava/n8n-nodes-paystack.git
  ```
  2. Install dependencies:
  ```bash
  npm install
  ```
  3. Build the node:
  ```bash
  npm run build
  ```
  4. Link for local development:
  ```bash
  npm link
  ```
  5. In your local n8n directory:
  ```bash
  npm link n8n-nodes-paystack
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community n8n node that handles Paystack API interactions including transactions, customers, subscriptions, refunds, and real-time webhook triggers.","capabilities":["Initialize transactions","Verify transaction status","Fetch transaction details","List transactions","Create customers","Update customers","Fetch customer profiles","List customers","Manage recurring billing plans","Create subscriptions"],"authentication":"API key required (Paystack Secret Key)","commonUseCases":["Automate payment processing workflows","Handle subscription management and recurring billing","Process refunds automatically","Manage customer data and profiles","Set up real-time payment notifications via webhooks"],"limitations":["Community node (not official n8n node)","Requires separate Paystack account setup","Webhook configuration requires manual setup in Paystack Dashboard"],"relatedNodes":["Paystack API","Webhook Trigger","HTTP Request"]}


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

updated_at: 2026-07-14 14:40:34
author_name: mr-taiwo
author_github_url: https://github.com/tjava/
npm_package_name: n8n-nodes-paystack
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.295Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "transaction",
      "options": [
        {
          "name": "Balance",
          "value": "balance"
        },
        {
          "name": "Customer",
          "value": "customer"
        },
        {
          "name": "Plan",
          "value": "plan"
        },
        {
          "name": "Refund",
          "value": "refund"
        },
        {
          "name": "Subscription",
          "value": "subscription"
        },
        {
          "name": "Transaction",
          "value": "transaction"
        },
        {
          "name": "Transfer",
          "value": "transfer"
        }
      ],
      "description": "The resource to perform operations on",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "initialize",
      "options": [
        {
          "name": "Fetch",
          "value": "fetch",
          "action": "Fetch a transaction",
          "description": "Get a transaction"
        },
        {
          "name": "Initialize",
          "value": "initialize",
          "action": "Initialize a transaction",
          "description": "Initialize a transaction"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List transactions",
          "description": "List transactions"
        },
        {
          "name": "Verify",
          "value": "verify",
          "action": "Verify a transaction",
          "description": "Verify a transaction"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transaction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a customer",
          "description": "Create a customer"
        },
        {
          "name": "Fetch",
          "value": "fetch",
          "action": "Fetch a customer",
          "description": "Get a customer"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List customers",
          "description": "List customers"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a customer",
          "description": "Update a customer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a refund",
          "description": "Create a refund"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List refunds",
          "description": "List refunds"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "refund"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a plan",
          "description": "Create a plan"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List plans",
          "description": "List plans"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "plan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a subscription",
          "description": "Create a subscription"
        },
        {
          "name": "Disable",
          "value": "disable",
          "action": "Disable a subscription",
          "description": "Disable a subscription"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List subscriptions",
          "description": "List subscriptions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subscription"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "initiate",
      "options": [
        {
          "name": "Create Recipient",
          "value": "createRecipient",
          "action": "Create a transfer recipient"
        },
        {
          "name": "Finalize",
          "value": "finalize",
          "action": "Finalize a transfer"
        },
        {
          "name": "Initiate",
          "value": "initiate",
          "action": "Initiate a transfer"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List transfers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transfer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchBalance",
      "options": [
        {
          "name": "Fetch Balance",
          "value": "fetchBalance",
          "action": "Fetch account balance"
        },
        {
          "name": "List Banks",
          "value": "listBanks",
          "action": "List banks"
        },
        {
          "name": "Resolve Account",
          "value": "resolveAccount",
          "action": "Resolve bank account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "balance"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch",
      "value": "fetch",
      "action": "Fetch a transaction",
      "description": "Get a transaction",
      "resource": "transaction"
    },
    {
      "name": "Initialize",
      "value": "initialize",
      "action": "Initialize a transaction",
      "description": "Initialize a transaction",
      "resource": "transaction"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List transactions",
      "description": "List transactions",
      "resource": "transaction"
    },
    {
      "name": "Verify",
      "value": "verify",
      "action": "Verify a transaction",
      "description": "Verify a transaction",
      "resource": "transaction"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a customer",
      "description": "Create a customer",
      "resource": "customer"
    },
    {
      "name": "Fetch",
      "value": "fetch",
      "action": "Fetch a customer",
      "description": "Get a customer",
      "resource": "customer"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List customers",
      "description": "List customers",
      "resource": "customer"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a customer",
      "description": "Update a customer",
      "resource": "customer"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a refund",
      "description": "Create a refund",
      "resource": "refund"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List refunds",
      "description": "List refunds",
      "resource": "refund"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a plan",
      "description": "Create a plan",
      "resource": "plan"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List plans",
      "description": "List plans",
      "resource": "plan"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a subscription",
      "description": "Create a subscription",
      "resource": "subscription"
    },
    {
      "name": "Disable",
      "value": "disable",
      "action": "Disable a subscription",
      "description": "Disable a subscription",
      "resource": "subscription"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List subscriptions",
      "description": "List subscriptions",
      "resource": "subscription"
    },
    {
      "name": "Create Recipient",
      "value": "createRecipient",
      "action": "Create a transfer recipient",
      "resource": "transfer"
    },
    {
      "name": "Finalize",
      "value": "finalize",
      "action": "Finalize a transfer",
      "resource": "transfer"
    },
    {
      "name": "Initiate",
      "value": "initiate",
      "action": "Initiate a transfer",
      "resource": "transfer"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List transfers",
      "resource": "transfer"
    },
    {
      "name": "Fetch Balance",
      "value": "fetchBalance",
      "action": "Fetch account balance",
      "resource": "balance"
    },
    {
      "name": "List Banks",
      "value": "listBanks",
      "action": "List banks",
      "resource": "balance"
    },
    {
      "name": "Resolve Account",
      "value": "resolveAccount",
      "action": "Resolve bank account",
      "resource": "balance"
    }
  ]

npm_readme:
  # n8n-nodes-paystack

  This is an n8n community node to interact with [Paystack](https://paystack.com/), a leading payment gateway in Africa.

  [Paystack](https://paystack.com/) allows businesses to accept payments via various channels including cards, bank transfers, USSD, and mobile money.

  ## Features

  - **Transactions**: Initialize, verify, fetch, and list transactions.
  - **Customers**: Create, update, fetch, and list customers.
  - **Plans & Subscriptions**: Manage recurring billing.
  - **Refunds**: Process and track refunds.
  - **Transfers**: Create recipients and initiate transfers.
  - **Balance & Banks**: Check your balance and resolve bank accounts.
  - **Webhook Trigger**: Listen for real-time events from Paystack.

  ## Installation

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

  ```bash
  npm install n8n-nodes-paystack
  ```

  ## Credentials

  To use this node, you need a Paystack account.

  1. Go to your [Paystack Dashboard](https://dashboard.paystack.com/).
  2. Navigate to **Settings** > **API Keys & Webhooks**.
  3. Copy your **Secret Key** (use the `sk_test_...` key for testing and `sk_live_...` for production).
  4. In n8n, create a new **Paystack API** credential and paste your Secret Key.

  ## Operations

  ### Transaction
  - **Initialize**: Start a new transaction.
  - **Verify**: Confirm the status of a transaction using its reference.
  - **Fetch**: Get details of a single transaction.
  - **List**: Retrieve a list of your transactions.

  ### Customer
  - **Create**: Add a new customer to your integration.
  - **Update**: Modify an existing customer's details.
  - **Fetch**: Get a customer's profile.
  - **List**: Retrieve your customer list.

  ### Refund
  - **Create**: Initiate a refund for a transaction.
  - **List**: View previous refunds.

  ### Plan
  - **Create**: Set up a new recurring billing plan.
  - **List**: View all your plans.

  ### Subscription
  - **Create**: Enroll a customer in a plan.
  - **Disable**: Cancel a subscription.
  - **List**: View all subscriptions.

  ### Transfer
  - **Create Recipient**: Set up a destination for transfers.
  - **Initiate**: Send money to a recipient.
  - **Finalize**: Complete a transfer requiring OTP.
  - **List**: View transfer history.

  ### Balance
  - **Fetch Balance**: See your current Paystack account balance.
  - **List Banks**: Get a list of supported banks and their codes.
  - **Resolve Account**: Verify a bank account number.

  ## Usage

  ### Webhook Trigger
  Use the **Paystack Trigger** node to receive notifications for events like `charge.success`, `transfer.success`, and `subscription.create`. Ensure you copy the Webhook URL from the node and paste it into your Paystack Dashboard settings.

  ## Development

  1. Clone the repository:
  ```bash
  git clone https://github.com/tjava/n8n-nodes-paystack.git
  ```
  2. Install dependencies:
  ```bash
  npm install
  ```
  3. Build the node:
  ```bash
  npm run build
  ```
  4. Link for local development:
  ```bash
  npm link
  ```
  5. In your local n8n directory:
  ```bash
  npm link n8n-nodes-paystack
  ```

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A community node that enables interaction with the Paystack payment gateway API to handle transactions, customers, subscriptions, refunds, and transfers.","capabilities":["Initialize, verify, fetch, and list transactions","Create, update, fetch, and list customers","Manage recurring billing plans and subscriptions","Process and track refunds","Create recipients and initiate transfers","Check account balance and resolve bank accounts","Listen for real-time webhook events"],"authentication":"API Secret Key (sk_test_ or sk_live_) required in Paystack API credential","commonUseCases":["Accepting online payments via cards and mobile money","Managing customer payment history","Setting up recurring billing and subscriptions","Processing refunds for failed or returned transactions","Sending money via Paystack transfers"],"limitations":["Community node (not official n8n node)","Requires separate Paystack account setup","Webhook configuration requires manual setup in Paystack dashboard"],"relatedNodes":["Paystack Trigger","Paystack API"]}


node_type: n8n-nodes-emailbison-official.emailBison
package_name: n8n-nodes-emailbison-official
display_name: EmailBison
description: Interact with EmailBison API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bcharleson
author_github_url: https://github.com/emailbison-public/
npm_package_name: n8n-nodes-emailbison-official
npm_version: 1.1.13
community_fetched_at: 2026-07-14T14:40:34.296Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "lead",
      "options": [
        {
          "name": "Blacklisted Domain",
          "value": "blacklistedDomain"
        },
        {
          "name": "Blacklisted Email",
          "value": "blacklistedEmail"
        },
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Email Account",
          "value": "emailAccount"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "Reply",
          "value": "reply"
        },
        {
          "name": "Sequence Step",
          "value": "sequenceStep"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Blacklist a domain",
          "description": "Add a domain to the blacklist"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Remove domain from blacklist",
          "description": "Remove a domain from the blacklist"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get blacklisted domains",
          "description": "Get all blacklisted domains"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "blacklistedDomain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Blacklist an email",
          "description": "Add an email to the blacklist"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Remove email from blacklist",
          "description": "Remove an email from the blacklist"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get blacklisted emails",
          "description": "Get all blacklisted emails"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "blacklistedEmail"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Add Leads",
          "value": "addLeads",
          "action": "Add leads to campaign",
          "description": "Add leads to a campaign"
        },
        {
          "name": "Add Sequence Step",
          "value": "addSequenceStep",
          "action": "Add sequence step to campaign",
          "description": "Add a follow-up email step to a campaign sequence"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a campaign",
          "description": "Create a new campaign"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a campaign",
          "description": "Delete a campaign"
        },
        {
          "name": "Delete Many",
          "value": "deleteMany",
          "action": "Delete many campaigns",
          "description": "Delete multiple campaigns"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a campaign",
          "description": "Get a campaign by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many campaigns",
          "description": "Get multiple campaigns"
        },
        {
          "name": "Start/Resume",
          "value": "resume",
          "action": "Start/Resume a campaign",
          "description": "Start or resume a campaign"
        },
        {
          "name": "Stop/Pause",
          "value": "pause",
          "action": "Stop/Pause a campaign",
          "description": "Stop or pause a campaign"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a campaign",
          "description": "Update a campaign"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an email account",
          "description": "Create a new email account"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an email account",
          "description": "Delete an email account"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an email account",
          "description": "Get an email account by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many email accounts",
          "description": "Get multiple email accounts"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an email account",
          "description": "Update an email account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "emailAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a lead",
          "description": "Create a new lead"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a lead",
          "description": "Delete a lead"
        },
        {
          "name": "Delete Many",
          "value": "deleteMany",
          "action": "Delete many leads",
          "description": "Delete multiple leads"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a lead",
          "description": "Get a lead by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many leads",
          "description": "Get multiple leads"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a lead",
          "description": "Update a lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "compose",
      "options": [
        {
          "name": "Compose New Email",
          "value": "compose",
          "action": "Compose new email",
          "description": "Send a one-off email in a new email thread"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many replies",
          "description": "Get multiple replies"
        },
        {
          "name": "Mark as Interested",
          "value": "markInterested",
          "action": "Mark reply as interested",
          "description": "Mark a reply as interested"
        },
        {
          "name": "Push to Follow-up Campaign",
          "value": "pushToFollowup",
          "action": "Push to follow-up campaign",
          "description": "Push reply to a follow-up campaign"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reply"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendTest",
      "options": [
        {
          "name": "Send Test Email",
          "value": "sendTest",
          "action": "Send test email",
          "description": "Send a test email from a sequence step"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a sequence step",
          "description": "Delete a sequence step"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sequenceStep"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tag",
          "description": "Create a new tag"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a tag",
          "description": "Delete a tag"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many tags",
          "description": "Get multiple tags"
        },
        {
          "name": "Attach Tags to Lead",
          "value": "attachToLeads",
          "action": "Attach tags to a lead",
          "description": "Attach tags to a lead (executes once per input item when using dynamic expressions)"
        },
        {
          "name": "Remove Tags from Leads",
          "value": "removeFromLeads",
          "action": "Remove tags from leads",
          "description": "Remove multiple tags from leads"
        },
        {
          "name": "Attach Tags to Campaigns",
          "value": "attachToCampaigns",
          "action": "Attach tags to campaigns",
          "description": "Attach multiple tags to campaigns"
        },
        {
          "name": "Remove Tags from Campaigns",
          "value": "removeFromCampaigns",
          "action": "Remove tags from campaigns",
          "description": "Remove multiple tags from campaigns"
        },
        {
          "name": "Attach Tags to Email Accounts",
          "value": "attachToEmailAccounts",
          "action": "Attach tags to email accounts",
          "description": "Attach multiple tags to email accounts"
        },
        {
          "name": "Remove Tags from Email Accounts",
          "value": "removeFromEmailAccounts",
          "action": "Remove tags from email accounts",
          "description": "Remove multiple tags from email accounts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webhook",
          "description": "Create a new webhook"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a webhook",
          "description": "Delete a webhook"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a webhook",
          "description": "Get a webhook by ID"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a webhook",
          "description": "Update a webhook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Accept Invitation",
          "value": "acceptInvitation",
          "action": "Accept invitation",
          "description": "Accept a workspace invitation"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create workspace",
          "description": "Create a new workspace"
        },
        {
          "name": "Create API Token",
          "value": "createApiToken",
          "action": "Create API token",
          "description": "Create an API token for a workspace"
        },
        {
          "name": "Create User",
          "value": "createUser",
          "action": "Create user",
          "description": "Create a new user in the workspace"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete workspace",
          "description": "Delete a workspace"
        },
        {
          "name": "Delete Member",
          "value": "deleteMember",
          "action": "Delete member",
          "description": "Delete a member from the workspace"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get workspace",
          "description": "Get workspace information"
        },
        {
          "name": "Get Line Area Chart Stats",
          "value": "getLineAreaChartStats",
          "action": "Get line area chart stats",
          "description": "Get line/area chart statistics"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many workspaces",
          "description": "Get multiple workspaces"
        },
        {
          "name": "Get Master Inbox Settings",
          "value": "getMasterInboxSettings",
          "action": "Get master inbox settings",
          "description": "Get master inbox settings"
        },
        {
          "name": "Get Stats",
          "value": "getStats",
          "action": "Get stats",
          "description": "Get workspace statistics"
        },
        {
          "name": "Invite Members",
          "value": "inviteMembers",
          "action": "Invite members",
          "description": "Invite members to the workspace"
        },
        {
          "name": "Switch Workspace",
          "value": "switchWorkspace",
          "action": "Switch workspace",
          "description": "Switch to a different workspace"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update workspace",
          "description": "Update workspace settings"
        },
        {
          "name": "Update Master Inbox Settings",
          "value": "updateMasterInboxSettings",
          "action": "Update master inbox settings",
          "description": "Update master inbox settings"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Blacklist a domain",
      "description": "Add a domain to the blacklist",
      "resource": "blacklistedDomain"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Remove domain from blacklist",
      "description": "Remove a domain from the blacklist",
      "resource": "blacklistedDomain"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get blacklisted domains",
      "description": "Get all blacklisted domains",
      "resource": "blacklistedDomain"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Blacklist an email",
      "description": "Add an email to the blacklist",
      "resource": "blacklistedEmail"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Remove email from blacklist",
      "description": "Remove an email from the blacklist",
      "resource": "blacklistedEmail"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get blacklisted emails",
      "description": "Get all blacklisted emails",
      "resource": "blacklistedEmail"
    },
    {
      "name": "Add Leads",
      "value": "addLeads",
      "action": "Add leads to campaign",
      "description": "Add leads to a campaign",
      "resource": "campaign"
    },
    {
      "name": "Add Sequence Step",
      "value": "addSequenceStep",
      "action": "Add sequence step to campaign",
      "description": "Add a follow-up email step to a campaign sequence",
      "resource": "campaign"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a campaign",
      "description": "Create a new campaign",
      "resource": "campaign"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a campaign",
      "description": "Delete a campaign",
      "resource": "campaign"
    },
    {
      "name": "Delete Many",
      "value": "deleteMany",
      "action": "Delete many campaigns",
      "description": "Delete multiple campaigns",
      "resource": "campaign"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a campaign",
      "description": "Get a campaign by ID",
      "resource": "campaign"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many campaigns",
      "description": "Get multiple campaigns",
      "resource": "campaign"
    },
    {
      "name": "Start/Resume",
      "value": "resume",
      "action": "Start/Resume a campaign",
      "description": "Start or resume a campaign",
      "resource": "campaign"
    },
    {
      "name": "Stop/Pause",
      "value": "pause",
      "action": "Stop/Pause a campaign",
      "description": "Stop or pause a campaign",
      "resource": "campaign"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a campaign",
      "description": "Update a campaign",
      "resource": "campaign"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an email account",
      "description": "Create a new email account",
      "resource": "emailAccount"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an email account",
      "description": "Delete an email account",
      "resource": "emailAccount"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an email account",
      "description": "Get an email account by ID",
      "resource": "emailAccount"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many email accounts",
      "description": "Get multiple email accounts",
      "resource": "emailAccount"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an email account",
      "description": "Update an email account",
      "resource": "emailAccount"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a lead",
      "description": "Create a new lead",
      "resource": "lead"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a lead",
      "description": "Delete a lead",
      "resource": "lead"
    },
    {
      "name": "Delete Many",
      "value": "deleteMany",
      "action": "Delete many leads",
      "description": "Delete multiple leads",
      "resource": "lead"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a lead",
      "description": "Get a lead by ID",
      "resource": "lead"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many leads",
      "description": "Get multiple leads",
      "resource": "lead"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a lead",
      "description": "Update a lead",
      "resource": "lead"
    },
    {
      "name": "Compose New Email",
      "value": "compose",
      "action": "Compose new email",
      "description": "Send a one-off email in a new email thread",
      "resource": "reply"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many replies",
      "description": "Get multiple replies",
      "resource": "reply"
    },
    {
      "name": "Mark as Interested",
      "value": "markInterested",
      "action": "Mark reply as interested",
      "description": "Mark a reply as interested",
      "resource": "reply"
    },
    {
      "name": "Push to Follow-up Campaign",
      "value": "pushToFollowup",
      "action": "Push to follow-up campaign",
      "description": "Push reply to a follow-up campaign",
      "resource": "reply"
    },
    {
      "name": "Send Test Email",
      "value": "sendTest",
      "action": "Send test email",
      "description": "Send a test email from a sequence step",
      "resource": "sequenceStep"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a sequence step",
      "description": "Delete a sequence step",
      "resource": "sequenceStep"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tag",
      "description": "Create a new tag",
      "resource": "tag"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a tag",
      "description": "Delete a tag",
      "resource": "tag"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many tags",
      "description": "Get multiple tags",
      "resource": "tag"
    },
    {
      "name": "Attach Tags to Lead",
      "value": "attachToLeads",
      "action": "Attach tags to a lead",
      "description": "Attach tags to a lead (executes once per input item when using dynamic expressions)",
      "resource": "tag"
    },
    {
      "name": "Remove Tags from Leads",
      "value": "removeFromLeads",
      "action": "Remove tags from leads",
      "description": "Remove multiple tags from leads",
      "resource": "tag"
    },
    {
      "name": "Attach Tags to Campaigns",
      "value": "attachToCampaigns",
      "action": "Attach tags to campaigns",
      "description": "Attach multiple tags to campaigns",
      "resource": "tag"
    },
    {
      "name": "Remove Tags from Campaigns",
      "value": "removeFromCampaigns",
      "action": "Remove tags from campaigns",
      "description": "Remove multiple tags from campaigns",
      "resource": "tag"
    },
    {
      "name": "Attach Tags to Email Accounts",
      "value": "attachToEmailAccounts",
      "action": "Attach tags to email accounts",
      "description": "Attach multiple tags to email accounts",
      "resource": "tag"
    },
    {
      "name": "Remove Tags from Email Accounts",
      "value": "removeFromEmailAccounts",
      "action": "Remove tags from email accounts",
      "description": "Remove multiple tags from email accounts",
      "resource": "tag"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a webhook",
      "description": "Create a new webhook",
      "resource": "webhook"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a webhook",
      "description": "Delete a webhook",
      "resource": "webhook"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a webhook",
      "description": "Get a webhook by ID",
      "resource": "webhook"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a webhook",
      "description": "Update a webhook",
      "resource": "webhook"
    },
    {
      "name": "Accept Invitation",
      "value": "acceptInvitation",
      "action": "Accept invitation",
      "description": "Accept a workspace invitation",
      "resource": "workspace"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create workspace",
      "description": "Create a new workspace",
      "resource": "workspace"
    },
    {
      "name": "Create API Token",
      "value": "createApiToken",
      "action": "Create API token",
      "description": "Create an API token for a workspace",
      "resource": "workspace"
    },
    {
      "name": "Create User",
      "value": "createUser",
      "action": "Create user",
      "description": "Create a new user in the workspace",
      "resource": "workspace"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete workspace",
      "description": "Delete a workspace",
      "resource": "workspace"
    },
    {
      "name": "Delete Member",
      "value": "deleteMember",
      "action": "Delete member",
      "description": "Delete a member from the workspace",
      "resource": "workspace"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get workspace",
      "description": "Get workspace information",
      "resource": "workspace"
    },
    {
      "name": "Get Line Area Chart Stats",
      "value": "getLineAreaChartStats",
      "action": "Get line area chart stats",
      "description": "Get line/area chart statistics",
      "resource": "workspace"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many workspaces",
      "description": "Get multiple workspaces",
      "resource": "workspace"
    },
    {
      "name": "Get Master Inbox Settings",
      "value": "getMasterInboxSettings",
      "action": "Get master inbox settings",
      "description": "Get master inbox settings",
      "resource": "workspace"
    },
    {
      "name": "Get Stats",
      "value": "getStats",
      "action": "Get stats",
      "description": "Get workspace statistics",
      "resource": "workspace"
    },
    {
      "name": "Invite Members",
      "value": "inviteMembers",
      "action": "Invite members",
      "description": "Invite members to the workspace",
      "resource": "workspace"
    },
    {
      "name": "Switch Workspace",
      "value": "switchWorkspace",
      "action": "Switch workspace",
      "description": "Switch to a different workspace",
      "resource": "workspace"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update workspace",
      "description": "Update workspace settings",
      "resource": "workspace"
    },
    {
      "name": "Update Master Inbox Settings",
      "value": "updateMasterInboxSettings",
      "action": "Update master inbox settings",
      "description": "Update master inbox settings",
      "resource": "workspace"
    }
  ]

npm_readme:
  # n8n-nodes-emailbison-official

  This is an n8n community node for EmailBison, a white-labeled email marketing platform. It allows you to integrate EmailBison's email marketing capabilities into your n8n workflows.

  ![n8n.io - Workflow Automation](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png)

  ## Features

  - **Dynamic Server URL Support**: Works with any EmailBison white-label instance by allowing custom server URL configuration
  - **Comprehensive API Coverage**: Supports all major EmailBison resources including:
    - **Leads**: Create, read, update, and manage email contacts with custom fields and tags
    - **Campaigns**: Create and manage email campaigns, start/stop campaigns, add leads
    - **Email Accounts**: Configure and manage SMTP sender accounts
    - **Tags**: Organize leads with tags
    - **Replies**: Send one-off emails and track email replies with advanced filtering
    - **Sequence Steps**: Manage campaign email sequences

  ## Installation

  To install this community node in n8n:

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

  1. Go to **Settings** > **Community Nodes** in your n8n instance
  2. Click **Install a community node**
  3. Enter `n8n-nodes-emailbison-official`
  4. Click **Install**

  ### Option 2: Manual Installation

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

  # Install the package
  npm install n8n-nodes-emailbison-official

  # Restart n8n
  ```

  ### Option 3: Docker

  Add the package to your n8n Docker setup:

  ```dockerfile
  FROM n8nio/n8n
  USER root
  RUN npm install -g n8n-nodes-emailbison-official
  USER node
  ```

  ## Configuration

  ### 1. Set up Credentials

  1. In n8n, go to **Credentials** and create new **EmailBison API** credentials
  2. Configure the following:
     - **Server URL**: Your EmailBison instance URL (e.g., `https://send.youragency.com`)
     - **API Token**: Your EmailBison API token

  ### 2. Get Your API Token

  1. Log into your EmailBison instance
  2. Go to **Settings** > **API**
  3. Generate or copy your API token

  ### 3. Find Your Server URL

  Your server URL is the base URL of your EmailBison instance, typically in the format:
  - `https://send.youragency.com`
  - `https://send.topoffunnel.com`
  - `https://yourdomain.com`

  **Important**: Enter the URL without the `/api` suffix - the node will automatically append this.

  ## Usage

  ### Basic Workflow Examples

  #### Create a Lead
  ```
  1. Add EmailBison node to your workflow
  2. Select Resource: "Lead"
  3. Select Operation: "Create"
  4. Fill in the email address and other lead details
  5. Execute the workflow
  ```

  #### Send a Campaign
  ```
  1. Create leads (using Lead > Create operation)
  2. Create a campaign (using Campaign > Create operation)
  3. Add leads to campaign (using Campaign > Add Leads operation)
  4. Start the campaign (using Campaign > Start operation)
  ```

  #### Track Email Replies
  ```
  1. Use Reply > Get Many operation
  2. Add filters (campaign_id, lead_id, status)
  3. Process replies in your workflow
  4. Optionally mark as interested or push to follow-up campaigns
  ```

  ## Supported Operations

  ### Leads
  - **Create**: Add new leads with email, name, company, and custom fields
  - **Get**: Retrieve a specific lead by ID (with dropdown selector)
  - **Get Many**: List multiple leads (max 15 items due to API pagination)
  - **Update**: Modify lead information (first_name, last_name, company, phone, email, custom_fields)

  ### Campaigns
  - **Create**: Create new email campaigns with name and sender emails
  - **Get**: Retrieve campaign details (with dropdown selector)
  - **Get Many**: List all campaigns
  - **Update**: Modify campaign name and sender emails
  - **Add Leads**: Bulk add leads to campaigns (processes all input items)
  - **Start/Resume**: Launch or resume paused campaigns
  - **Stop/Pause**: Pause running campaigns

  ### Email Accounts
  - **Create**: Set up new SMTP sender accounts with full configuration
  - **Get**: Retrieve account details (with dropdown selector)
  - **Get Many**: List all email accounts
  - **Update**: Modify account settings (name, daily_limit, etc.)
  - **Delete**: Remove email accounts

  ### Tags
  - **Create**: Create new tags for lead organization
  - **Get Many**: List all tags (used in dropdowns throughout the node)
  - **Delete**: Remove tags

  ### Replies
  - **Compose New Email**: Send one-off emails outside of campaigns
    - Supports: to_emails, cc_emails, bcc_emails, subject, message, content_type
    - No lead_id required
  - **Get Many**: Retrieve email replies with advanced filtering
    - Filter by: campaign_id, lead_id, status (unread/read/interested/not_interested)
    - Returns full reply metadata including timestamps, sender/recipient info

  ### Sequence Steps
  - **Delete**: Remove steps from campaign sequences

  ## Advanced Features

  ### Custom Fields
  The node supports EmailBison's custom fields for leads. You can add custom key-value pairs when creating or updating leads.

  ### Filtering and Pagination
  Most "Get Many" operations support:
  - **Filtering**: Filter results by various criteria (campaign_id, lead_id, status, etc.)
  - **Pagination**: Note that Get Many Leads returns maximum 15 items due to API limitation
  - **Return All**: Option available for operations that support pagination

  ### Error Handling
  The node includes comprehensive error handling:
  - Connection validation during credential setup
  - Detailed error messages for troubleshooting
  - Support for n8n's "Continue on Fail" option

  ## Troubleshooting

  ### Common Issues

  **"Invalid credentials or server URL"**
  - Verify your API token is correct
  - Ensure the server URL is correct and accessible
  - Check that the URL doesn't include `/api` at the end

  **"Connection timeout"**
  - Verify your EmailBison instance is accessible
  - Check firewall settings if using a self-hosted instance

  **"Operation not supported"**
  - Ensure you're using the latest version of the node
  - Check that your EmailBison instance supports the API endpoint

  ### Known Limitations

  1. **Pagination**: Get Many Leads returns maximum 15 items (API limitation)
  2. **Get Tag (Single)**: Returns 403 Forbidden (API authorization bug)
  3. **Delete Campaign**: Not supported by EmailBison API
  4. **Update Lead Response**: API doesn't return all updated fields (phone, email, custom_fields)
  5. **Compose Email Arrays**: Must use empty arrays `[]` instead of `null` for optional fields

  ### Getting Help

  1. Open an issue on the [GitHub repository](https://github.com/emailbison-public/n8n-nodes-emailbison-official)
  2. Verify your credentials and server URL
  3. Test the connection using the credential test feature
  4. Check n8n logs for detailed error messages

  ## Development

  ### Building from Source

  ```bash
  # Clone the repository
  git clone https://github.com/emailbison-public/n8n-nodes-emailbison-official.git
  cd n8n-nodes-emailbison-official

  # Install dependencies
  pnpm install

  # Build the project
  pnpm run build

  # Run linting
  pnpm run lint
  ```

  ### Testing

  The node includes credential testing to verify your API connection. When setting up credentials, n8n will automatically test the connection to your EmailBison instance.

  ## License

  This project is licensed under the MIT License - see the LICENSE file for details.

  ## Roadmap

  ### Planned for v1.1.0
  - **Send Test Email** - Test sequence steps before launching campaigns
  - **Webhooks** - Real-time automation triggers (Create, Get, Get Many, Update, Delete)
  - **Attach Tags to Lead** - Bulk tag operations
  - **Update Tag** - Rename tags

  See [CHANGELOG.md](CHANGELOG.md) for full version history.

  ## Contributing

  Contributions are welcome! Please feel free to submit a Pull Request.

  ## Support

  For support with this n8n community node:
  1. Check the troubleshooting section above
  2. Check the [Known Limitations](#known-limitations) section
  3. Open an issue on the [GitHub repository](https://github.com/emailbison-public/n8n-nodes-emailbison-official)

  For EmailBison platform support, contact your EmailBison provider directly.

  ## Version

  Current version: **1.0.1**

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with EmailBison, a white-labeled email marketing platform, allowing users to manage leads, campaigns, email accounts, and track replies within n8n workflows.","capabilities":["Create, read, update, and delete email leads with custom fields and tags","Create, manage, start, pause, stop, and resume email campaigns","Configure and manage SMTP sender accounts","Organize leads using tags","Send one-off emails outside of campaigns","Track and filter email replies with advanced filtering","Manage campaign email sequences","Support for custom fields in lead data","Dynamic server URL configuration for white-label instances"],"authentication":"API Token required (configured via Server URL and API Token in Credentials)","commonUseCases":["Automated lead capture and management","Scheduled email campaign execution","Email reply tracking and follow-up automation","White-label email marketing for agencies","Lead segmentation using tags"],"limitations":["Get Many Leads operation is limited to 15 items per request due to API pagination","Some operations may not be supported on all EmailBison instance configurations","Requires manual installation or Docker setup for non-community node environments"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: n8n-nodes-lara-translate.laraTranslate
package_name: n8n-nodes-lara-translate
display_name: Lara Translate
description: Translate text or document using Lara Translate
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: translatedteam
author_github_url: https://github.com/translated/lara-n8n.git
npm_package_name: n8n-nodes-lara-translate
npm_version: 1.1.5
community_fetched_at: 2026-07-14T14:40:34.297Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "translation",
      "options": [
        {
          "name": "Translation",
          "value": "translation"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "translateText",
      "options": [
        {
          "name": "Translate Text",
          "value": "translateText",
          "action": "Translate text",
          "description": "Translate text using Lara Translate API"
        },
        {
          "name": "Translate Document",
          "value": "translateDocument",
          "action": "Translate document",
          "description": "Translate a document using Lara Translate API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "translation"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Translate Text",
      "value": "translateText",
      "action": "Translate text",
      "description": "Translate text using Lara Translate API",
      "resource": "translation"
    },
    {
      "name": "Translate Document",
      "value": "translateDocument",
      "action": "Translate document",
      "description": "Translate a document using Lara Translate API",
      "resource": "translation"
    }
  ]

npm_readme:
  <div align="center">

  # 🌐 Lara Translate for n8n

  Official n8n community node for [Lara Translate](https://laratranslate.com), enabling powerful translation capabilities with support for language detection, context-aware translations, translation memories and glossaries.

  [![Version](https://img.shields.io/badge/version-1.1.5-blue.svg)](https://github.com/translated/lara-n8n)
  [![n8n Community Node](https://img.shields.io/badge/n8n-Community%20Node-blueviolet.svg)](https://www.npmjs.com/package/n8n-nodes-lara-translate)

  </div>

  ---

  ## 📑 Table of Contents

  - [Requirements](#requirements)
  - [Features](#features)
  - [Installation](#installation)
  - [Quick Start](#quick-start)
  - [Documentation](#documentation)
  - [Resources](#resources)

  ## Requirements

  - **Node.js** version 20.15 or higher
  - **pnpm** - Package manager (install with `npm install -g pnpm`)
  - **n8n** - Installed globally (`npm install -g n8n`)
  - **nvm** (optional) - Node version manager for easy Node.js version switching 
  - **Lara Translate API credentials** (Access Key ID and Access Key Secret)

  ## ✨ Features

  - **Translate Text** — Translate plain text and XLIFF content with support for 200+ languages and automatic language detection
  - **Translate Document** — Translate files (PDF, DOCX, XLSX, PPTX, HTML, XML) while preserving original formatting
  - **AI Agent Tool** — Use as a tool in n8n AI Agent workflows for autonomous, context-driven translations
  - **Instructions** — Guide translations with natural-language directives to control formality, tone, terminology, and style
  - **Translation Memories** — Leverage previously approved translations for consistent voice and style across all your content
  - **Glossaries** — Enforce specific term translations to ensure consistency for brand names, jargon, and domain-specific vocabulary
  - **Translation Styles** — Choose between faithful, fluid, or creative translation approaches to match your content type
  - **No Trace Mode** — Translate sensitive content without storing data on Lara's servers
  - **Caching** — Cache translations for identical requests to reduce API calls and improve response times

  ## Installation

  ### Install via n8n Community Nodes

  > 📖 See the official [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)

  ### Local Development

  > 📖 For setup instructions, see [Getting Started](docs/config/getting-started.md)

  ## Quick Start

  ### Before You Begin

  To use this node you need:

  - An account on [Lara Translate](https://laratranslate.com) (you can start for free)
  - Your API credentials (Access Key ID and Access Key Secret)

  > 💡 **Don't have API credentials yet?** Follow our [API Credentials Guide](docs/config/api-credentials.md)

  ### Step 1: Add the Node to Your Workflow

  1. Open or create a new workflow in n8n
  2. Click the **+** button to open the nodes menu
  3. Search for **"Lara Translate"** in the search bar
  4. Click on the node to add it to the canvas

  ### Step 2: Configure Credentials

  The first time you use the node, you need to configure your credentials:

  1. In the Lara Translate node, click **Select Credential** → **Create New**
  2. Enter your credentials:
      - **Access Key ID**: your public key
      - **Access Key Secret**: your secret key
  3. Click **Save** to save the credentials

  ### Step 3: Choose What to Translate

  The node offers **2 translation modes** and can also be used as an **AI Agent tool**:

  #### 🔤 **Translate Text** - For texts and short content

  Perfect for translating:

  - Messages and notifications
  - Dynamic content from other nodes
  - XLIFF format texts
  - Strings from databases or APIs

  **Practical example**: Automatically translate customer emails into your language before archiving them.

  #### 📄 **Translate Document** - For files and documents

  Perfect for translating:

  - PDF, Word, Excel, PowerPoint
  - HTML and XML files
  - Documents while maintaining original formatting

  **Practical example**: Automatically translate documents uploaded by users and save them to a specific folder.

  #### 🤖 **AI Agent Tool** - For autonomous translation

  The Lara Translate node can be used as a tool in n8n AI Agent workflows. This allows an AI agent to decide when to translate content as part of a larger automated process — perfect for multilingual chatbots and automated support pipelines. See the [Configuration Guide](docs/config/configuration.md#ai-agent-workflows) for setup details.

  ### Step 4: Configure the Translation

  Basic settings you need to configure:

  1. **Source Language**: The language of the original text
      - Use **"Detect language"** if you don't know the source language
  2. **Target Language**: The language you want to translate to
      - Choose from over 200 available languages
  3. **Input Content**:
      - **For Text Translation**: Enter the text directly or map it from previous nodes
      - **For Document Translation**: Use binary data from previous nodes (e.g., "Read Binary File" node)

  ### Step 5: Test and Activate

  1. Click **Execute Node** (or **Test Step**) to try the translation
  2. Check the result in the **OUTPUT** section
  3. If everything is OK, connect the node to other steps in your workflow
  4. Activate the workflow by clicking the switch in the top right

  ***

  ### 🎯 Quick Example

  Want to translate text from English to Italian?

  1. Add the **Lara Translate** node
  2. Select **Translate Text**
  3. Set:
      - Source Language: **English**
      - Target Language: **Italian**
      - Text: enter or map the text to translate
  4. Click **Execute Node** and get the translation!

  ***

  ## Documentation

  ### 📖 Documentation Flow

  Follow this recommended reading path:

  1. **[Getting Started](docs/config/getting-started.md)** → Install the node (locally or via n8n)
  2. **[Configuration](docs/config/configuration.md)** → Set up API credentials and basic settings
  3. **Choose your operation:**
     - **[Translate Text](docs/config/translate-text.md)** → For text content translation
     - **[Translate Document](docs/config/translate-document.md)** → For document translation

  **Reference Guides:**
  - [API Credentials Setup](docs/config/api-credentials.md) - Detailed guide for obtaining API keys
  - [Supported Languages](docs/config/supported-languages.md) - 200+ supported languages
  - [Supported File Formats](docs/config/supported-formats.md) - Document format specifications

  ## Resources

  - [Lara](https://laratranslate.com)
  - [Lara API Documentation](https://developers.laratranslate.com)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  <div align="center">

  Made with ❤️ by [Translated](https://translated.com) for the n8n community

  </div>

ai_documentation_summary:
  {"purpose":"The Lara Translate node enables text and document translation within n8n workflows, supporting over 200 languages, AI agent integration, and advanced features like translation memories and glossaries.","capabilities":["Translate plain text and XLIFF content","Translate documents (PDF, DOCX, XLSX, PPTX, HTML, XML) with formatting preservation","Automatic language detection","AI Agent tool integration for autonomous workflows","Natural-language directives for tone, formality, and terminology control","Translation memories for consistent voice and style","Glossaries for brand names and jargon","Translation styles (faithful, fluid, creative)","No Trace Mode for sensitive content","Translation caching for identical requests"],"authentication":"API key required (Access Key ID and Access Key Secret)","commonUseCases":["Automatically translating customer emails before archiving","Translating user-uploaded documents while preserving formatting","Multilingual chatbot responses in AI Agent workflows","Consistent terminology enforcement across brand content","Batch translation of dynamic content from APIs or databases"],"limitations":["Requires Node.js version 20.15 or higher","Requires pnpm package manager","Requires separate Lara Translate API account and credentials"],"relatedNodes":["AI Agent","Read Binary File","Write Binary File","HTTP Request","Code"]}


node_type: n8n-nodes-waapy.waapy
package_name: n8n-nodes-waapy
display_name: WaaPy
description: Interact with the WaaPy API to send WhatsApp messages
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bns-team
author_github_url: https://github.com/bravonet/
npm_package_name: n8n-nodes-waapy
npm_version: 0.4.0
community_fetched_at: 2026-07-14T14:40:34.298Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "message",
      "options": [
        {
          "name": "Label",
          "value": "label"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Queue",
          "value": "queue"
        },
        {
          "name": "Ticket",
          "value": "ticket"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "Send Text",
          "value": "sendText",
          "action": "Send a text message",
          "description": "Send a text message"
        },
        {
          "name": "Send Image",
          "value": "sendImage",
          "action": "Send an image message",
          "description": "Send an image message"
        },
        {
          "name": "Send Template",
          "value": "sendTemplate",
          "action": "Send a template message",
          "description": "Send a template message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "assignLabel",
      "options": [
        {
          "name": "Assign Label",
          "value": "assignLabel",
          "action": "Assign a label",
          "description": "Add or delete a label on a ticket, contact, or both"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "label"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "assignQueue",
      "options": [
        {
          "name": "Assign Queue",
          "value": "assignQueue",
          "action": "Assign a queue",
          "description": "Assign a ticket to a queue"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "queue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateStatus",
      "options": [
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update ticket status",
          "description": "Update the status of a ticket"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send Text",
      "value": "sendText",
      "action": "Send a text message",
      "description": "Send a text message",
      "resource": "message"
    },
    {
      "name": "Send Image",
      "value": "sendImage",
      "action": "Send an image message",
      "description": "Send an image message",
      "resource": "message"
    },
    {
      "name": "Send Template",
      "value": "sendTemplate",
      "action": "Send a template message",
      "description": "Send a template message",
      "resource": "message"
    },
    {
      "name": "Assign Label",
      "value": "assignLabel",
      "action": "Assign a label",
      "description": "Add or delete a label on a ticket, contact, or both",
      "resource": "label"
    },
    {
      "name": "Assign Queue",
      "value": "assignQueue",
      "action": "Assign a queue",
      "description": "Assign a ticket to a queue",
      "resource": "queue"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update ticket status",
      "description": "Update the status of a ticket",
      "resource": "ticket"
    }
  ]

npm_readme:
  # n8n-nodes-waapy

  Community nodes for connecting **n8n** with the **WaaPy WhatsApp API**.

  ## What This Package Does

  It adds 2 nodes to n8n:

  1. **WaaPy (Action)**  
     Send WhatsApp messages using:
     - Text
     - Image
     - Template (including dynamic template variables)

  2. **WaaPy Trigger**  
     Start workflows when WaaPy sends webhook events, such as:
     - Incoming message event
     - Message status event

  ## Installation

  ### Option A: Install from n8n Community Nodes UI

  1. Open n8n.
  2. Go to **Settings** -> **Community Nodes**.
  3. Search for `n8n-nodes-waapy`.
  4. Install and restart n8n if required.

  ### Option B: Manual install

  ```bash
  npm install n8n-nodes-waapy
  ```

  ## Credentials

  Create credentials of type **WaaPy API** in n8n:

  1. **Server URL**  
     Example: `https://api.waapy.co`
  2. **API Key**  
     Your WaaPy API token

  The credentials test uses `GET /n8n/health`.

  ## Node Guide

  ### 1) WaaPy (Action)

  ### Resource

  - `Message`

  ### Operations

  #### A. Send Text

  Use this when you want to send a normal text message.

  Required fields:

  - **Connection Name**
  - **Recipient Number**
  - **Message Text**

  Optional:

  - **Reply Buttons** for quick reply options on normal text messages
  - **Reply Button ID** is the internal value returned when the user taps the button
  - **Reply Button Title** is the visible text shown on the button
  - Maximum **10 reply buttons** per message

  #### B. Send Image

  Use this when you want to send an image.

  Required fields:

  - **Connection Name**
  - **Recipient Number**
  - **Image Source** (`From URL` or `Upload File`)

  Optional:

  - **Caption**

  If you choose **Upload File**, provide:

  - **Input Binary Field** (default: `data`)

  #### C. Send Template

  Use this when you want to send an approved WhatsApp template.

  Required fields:

  - **Connection Name**
  - **Recipient Number**
  - **Template**

  How it works:

  1. Template list is loaded from `GET /n8n/templates`.
  2. Selected template ID is used to fetch details from `GET /n8n/templates/:templateId`.
  3. The node inspects template components (header/body/footer/buttons).
  4. The node builds payload for `POST /n8n/messages/send-template`.

  Dynamic template inputs:

  - **Header Parameters**
  - **Body Parameters**
  - **Button Parameters**

  Validation:

  - **Strict Template Validation** (default: `true`) checks that your dynamic inputs match the template placeholders.
  - If counts do not match (for example body expects 2 variables but you pass 1), node execution fails with a clear error.

  Notes:

  - Footer is detected from template metadata automatically.
  - Footer usually does not require variables; only header/body/buttons can include placeholders.

  ### 2) WaaPy Trigger

  Use this node to receive WaaPy webhook events and start workflows.

  Available events:

  - `message.received`
  - `message.status`

  Behavior:

  - On activation, n8n registers a webhook in WaaPy.
  - On deactivation, n8n removes it.
  - Incoming webhook payload is output as JSON in the first item.

  ## Quick Usage Examples

  ### Send a text message

  1. Add **WaaPy** node.
  2. Select `Resource: Message`.
  3. Select `Operation: Send Text`.
  4. Fill connection, recipient, text.
  5. Execute node.

  ### Send a text message with quick reply buttons

  1. Add **WaaPy** node.
  2. Select `Operation: Send Text`.
  3. Fill connection, recipient, and message text.
  4. Add one or more entries under **Reply Buttons**.
  5. For each button, provide **Reply Button ID** and **Reply Button Title**.
  6. `Reply Button ID` is used as the returned selection value. `Reply Button Title` is what the recipient sees.
  7. You can send up to `10` reply buttons in one message.
  8. Execute node.

  ### Send a template with dynamic values

  1. Add **WaaPy** node.
  2. Select `Operation: Send Template`.
  3. Choose template from the list.
  4. Fill dynamic values in Header/Body/Button parameters.
  5. Execute node.

  ### Trigger on incoming message

  1. Add **WaaPy Trigger** node.
  2. Select event `message.received`.
  3. Activate workflow.
  4. Send WhatsApp message to your connected number and verify payload in execution.

  ## Development

  ```bash
  npm ci
  npm run build
  npm run dev
  ```

  Useful commands:

  ```bash
  npm run build:watch
  npm run lint
  npm run lint:fix
  ```

  For local end-to-end smoke testing:

  ```bash
  docker-compose up --build
  ```

  ## Troubleshooting

  1. **Template list is empty**
     - Check API key permissions.
     - Verify `Server URL` is correct.
     - Ensure templates are active/approved in WaaPy.

  2. **Template send fails due to parameter count**
     - Review placeholder count in template details.
     - Match Header/Body/Button input counts to template variables.
     - Temporarily disable `Strict Template Validation` only for debugging.

  3. **Trigger not receiving events**
     - Ensure workflow is active.
     - Check that webhook registration exists in WaaPy.
     - Verify your n8n webhook URL is publicly reachable by WaaPy.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"This n8n node enables sending WhatsApp messages via the WaaPy API and listening for incoming message events through webhooks.","capabilities":["Send text messages with optional quick reply buttons","Send image messages with captions","Send WhatsApp templates with dynamic variables","Receive incoming message events via webhooks","Receive message status updates via webhooks","Strict template validation for dynamic variables"],"authentication":"API Key required (Server URL and API Key in credentials)","commonUseCases":["Automated customer notifications","Order status updates via WhatsApp","Two-factor authentication codes","Marketing campaigns with interactive buttons","Real-time order tracking"],"limitations":["Maximum 10 reply buttons per text message","Template list must be pre-approved in WaaPy","Strict template validation may fail if dynamic variable counts don't match template placeholders","Webhook trigger requires public URL accessibility for WaaPy to reach n8n","Footer in templates is auto-detected and usually doesn't require variables"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.binaryData"]}


node_type: n8n-nodes-waapy.waapyTrigger
package_name: n8n-nodes-waapy
display_name: WaaPy Trigger
description: Starts the workflow when WaaPy events occur (e.g., incoming messages)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bns-team
author_github_url: https://github.com/bravonet/
npm_package_name: n8n-nodes-waapy
npm_version: 0.4.0
community_fetched_at: 2026-07-14T14:40:34.300Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-waapy

  Community nodes for connecting **n8n** with the **WaaPy WhatsApp API**.

  ## What This Package Does

  It adds 2 nodes to n8n:

  1. **WaaPy (Action)**  
     Send WhatsApp messages using:
     - Text
     - Image
     - Template (including dynamic template variables)

  2. **WaaPy Trigger**  
     Start workflows when WaaPy sends webhook events, such as:
     - Incoming message event
     - Message status event

  ## Installation

  ### Option A: Install from n8n Community Nodes UI

  1. Open n8n.
  2. Go to **Settings** -> **Community Nodes**.
  3. Search for `n8n-nodes-waapy`.
  4. Install and restart n8n if required.

  ### Option B: Manual install

  ```bash
  npm install n8n-nodes-waapy
  ```

  ## Credentials

  Create credentials of type **WaaPy API** in n8n:

  1. **Server URL**  
     Example: `https://api.waapy.co`
  2. **API Key**  
     Your WaaPy API token

  The credentials test uses `GET /n8n/health`.

  ## Node Guide

  ### 1) WaaPy (Action)

  ### Resource

  - `Message`

  ### Operations

  #### A. Send Text

  Use this when you want to send a normal text message.

  Required fields:

  - **Connection Name**
  - **Recipient Number**
  - **Message Text**

  Optional:

  - **Reply Buttons** for quick reply options on normal text messages
  - **Reply Button ID** is the internal value returned when the user taps the button
  - **Reply Button Title** is the visible text shown on the button
  - Maximum **10 reply buttons** per message

  #### B. Send Image

  Use this when you want to send an image.

  Required fields:

  - **Connection Name**
  - **Recipient Number**
  - **Image Source** (`From URL` or `Upload File`)

  Optional:

  - **Caption**

  If you choose **Upload File**, provide:

  - **Input Binary Field** (default: `data`)

  #### C. Send Template

  Use this when you want to send an approved WhatsApp template.

  Required fields:

  - **Connection Name**
  - **Recipient Number**
  - **Template**

  How it works:

  1. Template list is loaded from `GET /n8n/templates`.
  2. Selected template ID is used to fetch details from `GET /n8n/templates/:templateId`.
  3. The node inspects template components (header/body/footer/buttons).
  4. The node builds payload for `POST /n8n/messages/send-template`.

  Dynamic template inputs:

  - **Header Parameters**
  - **Body Parameters**
  - **Button Parameters**

  Validation:

  - **Strict Template Validation** (default: `true`) checks that your dynamic inputs match the template placeholders.
  - If counts do not match (for example body expects 2 variables but you pass 1), node execution fails with a clear error.

  Notes:

  - Footer is detected from template metadata automatically.
  - Footer usually does not require variables; only header/body/buttons can include placeholders.

  ### 2) WaaPy Trigger

  Use this node to receive WaaPy webhook events and start workflows.

  Available events:

  - `message.received`
  - `message.status`

  Behavior:

  - On activation, n8n registers a webhook in WaaPy.
  - On deactivation, n8n removes it.
  - Incoming webhook payload is output as JSON in the first item.

  ## Quick Usage Examples

  ### Send a text message

  1. Add **WaaPy** node.
  2. Select `Resource: Message`.
  3. Select `Operation: Send Text`.
  4. Fill connection, recipient, text.
  5. Execute node.

  ### Send a text message with quick reply buttons

  1. Add **WaaPy** node.
  2. Select `Operation: Send Text`.
  3. Fill connection, recipient, and message text.
  4. Add one or more entries under **Reply Buttons**.
  5. For each button, provide **Reply Button ID** and **Reply Button Title**.
  6. `Reply Button ID` is used as the returned selection value. `Reply Button Title` is what the recipient sees.
  7. You can send up to `10` reply buttons in one message.
  8. Execute node.

  ### Send a template with dynamic values

  1. Add **WaaPy** node.
  2. Select `Operation: Send Template`.
  3. Choose template from the list.
  4. Fill dynamic values in Header/Body/Button parameters.
  5. Execute node.

  ### Trigger on incoming message

  1. Add **WaaPy Trigger** node.
  2. Select event `message.received`.
  3. Activate workflow.
  4. Send WhatsApp message to your connected number and verify payload in execution.

  ## Development

  ```bash
  npm ci
  npm run build
  npm run dev
  ```

  Useful commands:

  ```bash
  npm run build:watch
  npm run lint
  npm run lint:fix
  ```

  For local end-to-end smoke testing:

  ```bash
  docker-compose up --build
  ```

  ## Troubleshooting

  1. **Template list is empty**
     - Check API key permissions.
     - Verify `Server URL` is correct.
     - Ensure templates are active/approved in WaaPy.

  2. **Template send fails due to parameter count**
     - Review placeholder count in template details.
     - Match Header/Body/Button input counts to template variables.
     - Temporarily disable `Strict Template Validation` only for debugging.

  3. **Trigger not receiving events**
     - Ensure workflow is active.
     - Check that webhook registration exists in WaaPy.
     - Verify your n8n webhook URL is publicly reachable by WaaPy.

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"The WaaPy Trigger node initiates n8n workflows when specific WhatsApp API events occur, such as incoming messages or message status updates.","capabilities":["Trigger workflow on incoming message events","Trigger workflow on message status events","Register and unregister webhook endpoints dynamically","Output incoming webhook payloads as JSON"],"authentication":"API Key required (via WaaPy API credentials with Server URL and API Token)","commonUseCases":["Automatically start a workflow when a user sends a WhatsApp message","Process message status updates (e.g., delivery confirmations)","Integrate WhatsApp chatbot responses with n8n automation"],"limitations":["Requires public webhook URL accessibility for event reception","Limited to specific event types (message.received, message.status)","No built-in support for sending messages (requires WaaPy Action node)"],"relatedNodes":["WaaPy (Action)","Webhook"]}


node_type: n8n-nodes-linktwin.linkTwin
package_name: n8n-nodes-linktwin
display_name: LinkTwin - Deep Linking & URL Shortener
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: linktwin
author_github_url: https://github.com/LinkTwin/
npm_package_name: n8n-nodes-linktwin
npm_version: 1.0.8
community_fetched_at: 2026-07-14T14:40:34.301Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Turn any link into a smart deep link that opens directly in the right app (YouTube, Amazon, Spotify & 100+ apps) or external browser, boosting clicks and conversions

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "deepLink",
      "options": [
        {
          "name": "Deep Link",
          "value": "deepLink",
          "description": "Create and manage smart deep links"
        },
        {
          "name": "Statistic",
          "value": "statistics",
          "description": "Get click analytics for deep links"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a deep link",
          "description": "Turn any URL into a smart deep link"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a deep link",
          "description": "Delete a deep link"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a deep link",
          "description": "Get details of a deep link"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List deep links",
          "description": "List all deep links"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a deep link",
          "description": "Update an existing deep link"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deepLink"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get link statistics",
          "description": "Get click statistics for a deep link"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statistics"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a deep link",
      "description": "Turn any URL into a smart deep link",
      "resource": "deepLink"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a deep link",
      "description": "Delete a deep link",
      "resource": "deepLink"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a deep link",
      "description": "Get details of a deep link",
      "resource": "deepLink"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List deep links",
      "description": "List all deep links",
      "resource": "deepLink"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a deep link",
      "description": "Update an existing deep link",
      "resource": "deepLink"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get link statistics",
      "description": "Get click statistics for a deep link",
      "resource": "statistics"
    }
  ]

npm_readme:
  # n8n-nodes-linktwin

  This is an n8n community node for [LinkTwin - Deep Linking & URL Shortener](https://linktw.in) — turn any link into a smart deep link that opens directly in the right app (YouTube, Amazon, Spotify & 100+ apps) or in the user's external browser (Safari, Chrome, etc.), bypassing clunky in-app browsers and boosting clicks and conversions.

  ## Features

  - **Create Deep Links** - Turn any URL into a smart deep link with custom aliases, tracking pixels, and metadata
  - **Get Link Details** - Retrieve full information about any deep link
  - **List/Search Links** - Filter and paginate through your deep links
  - **Update Links** - Modify destinations, settings, and metadata
  - **Delete Links** - Remove unwanted deep links
  - **Get Statistics** - Pull detailed click analytics with geo, device, browser, and referrer data

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-linktwin` and click **Install**

  ### Manual Installation

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

  Then restart n8n.

  ## Credentials

  1. Log in to [LinkTwin](https://linktw.in)
  2. Go to **Settings** → **Developer API Key**
  3. Copy your API key
  4. In n8n, create a new **LinkTwin API** credential
  5. Paste your API key and save

  ## Operations

  ### Deep Links

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Turn any URL into a smart deep link |
  | **Get** | Get details of a specific link by ID or short URL |
  | **List** | List all links with optional filters |
  | **Update** | Update an existing link |
  | **Delete** | Permanently delete a link |

  ### Statistics

  | Operation | Description |
  |-----------|-------------|
  | **Get** | Get click statistics for a link (clicks, geo, devices, referrers) |

  ## Create & Update Fields

  When creating or updating a deep link, you can configure the following fields:

  ### Basic

  | Field | Description |
  |-------|-------------|
  | **Destination URL** | The URL to turn into a smart deep link (required for create) |
  | **Custom Alias** | Custom slug for the short URL (e.g., `my-campaign` creates `linktw.in/my-campaign`) |
  | **Domain** | Branded domain to use instead of the default `linktw.in` |
  | **Collections** | Organize links into folders/groups |
  | **Tracking Pixels** | Attach Facebook, Google, TikTok, or GTM pixels for conversion tracking |
  | **Display Title** | Custom title shown on your LinkTwin dashboard (does not affect the link preview) |
  | **Internal Note** | Private note only visible to you |

  ### Link Protection & Expiration

  | Field | Description |
  |-------|-------------|
  | **Password** | Require a password before redirecting |
  | **Click Limit** | Automatically expire the link after a set number of clicks |
  | **Expiry Date** | Set a date and time when the link stops working |
  | **Expiration Redirect** | URL to redirect visitors to after the link expires |

  ### Social Sharing (Meta Tags)

  Override the link preview that appears when shared on social media or messaging apps:

  | Field | Description |
  |-------|-------------|
  | **Custom Title** | Override the og:title for social previews |
  | **Custom Description** | Override the og:description |
  | **Custom Image URL** | Override the og:image (preview thumbnail) |

  ### Targeting

  #### Device Targeting

  Send users to different URLs based on their device:

  | Field | Description |
  |-------|-------------|
  | **Device** | Target device: iPhone, iPad, Android, Windows Phone |
  | **Redirect URL** | URL to redirect users on that device |

  You can add multiple device targets. Users on non-targeted devices go to the default destination.

  #### Geo Targeting

  Redirect users based on their country:

  | Field | Description |
  |-------|-------------|
  | **Country** | Two-letter country code (e.g., `US`, `DE`, `JP`) |
  | **Redirect URL** | URL to redirect users from that country |

  You can add multiple geo targets. Users from non-targeted countries go to the default destination.

  #### Language Targeting

  Redirect users based on their browser language:

  | Field | Description |
  |-------|-------------|
  | **Language** | Two-letter language code (e.g., `en`, `de`, `fr`) |
  | **Redirect URL** | URL to redirect users with that browser language |

  #### A/B Testing

  Split traffic between two URL variants to test which performs better:

  | Field | Description |
  |-------|-------------|
  | **Variant A URL** | First URL variant |
  | **Variant B URL** | Second URL variant |

  Traffic is split evenly between the variants. Use the Statistics operation to compare performance.

  #### Custom Parameters

  Append query parameters to the destination URL:

  | Field | Description |
  |-------|-------------|
  | **Parameter Name** | e.g., `utm_source`, `utm_campaign`, `ref` |
  | **Parameter Value** | e.g., `newsletter`, `spring-sale`, `partner123` |

  ## Example Workflows

  ### Auto-create deep links from new content
  ```
  [Trigger: New Blog Post] → [LinkTwin: Create] → [Slack: Send Short URL]
  ```
  Automatically generate a deep link whenever you publish, and share it with your team.

  ### Weekly analytics dashboard
  ```
  [Schedule: Every Monday] → [LinkTwin: List] → [LinkTwin: Get Statistics] → [Google Sheets: Append Row]
  ```
  Build a spreadsheet of click stats across all your links, refreshed weekly.

  ### Bulk link creation from a spreadsheet
  ```
  [Google Sheets: Get Rows] → [LinkTwin: Create] → [Google Sheets: Update Row with Short URL]
  ```
  Import a list of URLs, create deep links for each, and write the short URLs back.

  ### Geo-targeted app download links
  ```
  [Webhook: Receive Request] → [LinkTwin: Create with Device Targeting] → [Respond with Short URL]
  ```
  Create a single link that sends iOS users to the App Store, Android users to the Play Store, and desktop users to your website.

  ### A/B test landing pages
  ```
  [Form Trigger] → [LinkTwin: Create with A/B Testing] → [Wait 7 days] → [LinkTwin: Get Statistics] → [IF: Compare Clicks] → [Slack: Send Winner]
  ```
  Create an A/B link, wait a week, then automatically report which variant got more clicks.

  ### Expiring promo links for flash sales
  ```
  [Schedule: Sale Start] → [LinkTwin: Create with Expiry + Redirect] → [Email: Send Promo]
  ```
  Create a link that expires after 24 hours and redirects to a "sale ended" page afterward.

  ### Multi-language campaign
  ```
  [HTTP Request: Get Campaign Data] → [LinkTwin: Create with Language Targeting] → [Database: Store Links]
  ```
  Create one link that redirects German users to `/de`, French users to `/fr`, and everyone else to `/en`.

  ### Influencer campaign tracker
  ```
  [Google Sheets: Get Influencers] → [LinkTwin: Create with Custom Alias per Influencer] → [Schedule: Weekly] → [LinkTwin: Get Statistics] → [Google Sheets: Update Stats]
  ```
  Give each influencer a branded link (e.g., `linktw.in/sarah`, `linktw.in/mike`), then automatically pull click stats into a shared spreadsheet.

  ### Clean up expired links
  ```
  [Schedule: Daily] → [LinkTwin: List] → [IF: Expired] → [LinkTwin: Delete] → [Slack: Notify]
  ```
  Automatically find and delete links past their expiry date, and notify your team.

  ## Dynamic Dropdowns

  When creating or updating links, the node provides dynamic dropdowns for:

  - **Collections** - Your link organization folders (accepts names or IDs)
  - **Domains** - Your branded domains (e.g., linktw.in, custom domains)
  - **Tracking Pixels** - Facebook, Google, TikTok, GTM pixels (accepts names or IDs)

  ## Resources

  - [LinkTwin Website](https://linktw.in)
  - [LinkTwin API Documentation](https://linktw.in/developers)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Converts any URL into a smart deep link that redirects users to specific apps (YouTube, Amazon, Spotify, etc.) or external browsers based on device, location, or language, while supporting analytics and A/B testing.","capabilities":["Create deep links with custom aliases and branded domains","Retrieve link details and statistics","List, search, update, and delete deep links","Configure click tracking pixels (Facebook, Google, TikTok, GTM)","Set link expiration (click limits, date-based, or password protection)","Implement device targeting (iOS, Android, Windows, etc.)","Implement geo-targeting by country","Implement language targeting by browser locale","Configure A/B testing between URL variants","Add custom query parameters to destination URLs"],"authentication":"API key required","commonUseCases":["Automatically generate deep links for new blog posts or content","Create geo-targeted app download links for different regions","Build weekly analytics dashboards tracking click performance","Bulk create deep links from spreadsheets","Test different landing pages using A/B testing"],"limitations":["Community node (not official n8n node)","Requires separate LinkTwin account and API key setup"],"relatedNodes":["n8n-nodes-webhook.webhook","n8n-nodes-google-sheets.googleSheets","n8n-nodes-slack.slack","n8n-nodes-schedule.scheduleTrigger"]}


node_type: n8n-nodes-bridgegate.bridgegate
package_name: n8n-nodes-bridgegate
display_name: BridgeGate
description: Interact with the BridgeGate API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: devops-vorro
author_github_url: https://github.com/VorroBG/
npm_package_name: n8n-nodes-bridgegate
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:34.302Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "meta",
      "options": [
        {
          "name": "Meta",
          "value": "meta"
        },
        {
          "name": "Patient",
          "value": "patient"
        },
        {
          "name": "Encounter",
          "value": "encounter"
        },
        {
          "name": "Document",
          "value": "document"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listApis",
      "options": [
        {
          "name": "List APIs",
          "value": "listApis",
          "action": "List apis",
          "routing": {
            "request": {
              "url": "/fhir/endpoint",
              "method": "GET"
            }
          },
          "description": "Return the list of available APIs from the server"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "meta"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getPatient",
      "options": [
        {
          "name": "Get Patient By MRN",
          "value": "getPatient",
          "action": "Get patient by MRN",
          "routing": {
            "request": {
              "url": "={{ \"/\" + ($parameter[\"ehr\"] === \"athena\" ? \"athena-be\" : $parameter[\"ehr\"] === \"epic\" ? \"epic-care\" : $parameter[\"ehr\"] === \"cerner\" ? \"cerner\" : $parameter[\"ehr\"]) + \"/patient_by_id\" }}",
              "method": "GET"
            }
          },
          "description": "Retrieve a single patient by MRN and practice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "patient"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getEncounter",
      "options": [
        {
          "name": "Get Encounter By MRN",
          "value": "getEncounter",
          "action": "Get encounter by MRN",
          "routing": {
            "request": {
              "url": "={{ \"/\" + ($parameter[\"ehr\"] === \"athena\" ? \"athena-be\" : $parameter[\"ehr\"] === \"epic\" ? \"epic-care\" : $parameter[\"ehr\"] === \"cerner\" ? \"cerner\" : $parameter[\"ehr\"]) + \"/encounter_by_patient_id\" }}",
              "method": "GET"
            }
          },
          "description": "Retrieve encounter information for a patient by MRN and practice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "encounter"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDocument",
      "options": [
        {
          "name": "Get Document By MRN",
          "value": "getDocument",
          "action": "Get document by MRN",
          "routing": {
            "request": {
              "url": "={{ \"/\" + ($parameter[\"ehr\"] === \"athena\" ? \"athena-be\" : $parameter[\"ehr\"] === \"epic\" ? \"epic-care\" : $parameter[\"ehr\"] === \"cerner\" ? \"cerner\" : $parameter[\"ehr\"]) + \"/document_by_patient_id\" }}",
              "method": "GET"
            }
          },
          "description": "Retrieve document information for a patient by MRN and practice"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List APIs",
      "value": "listApis",
      "action": "List apis",
      "routing": {
        "request": {
          "url": "/fhir/endpoint",
          "method": "GET"
        }
      },
      "description": "Return the list of available APIs from the server",
      "resource": "meta"
    },
    {
      "name": "Get Patient By MRN",
      "value": "getPatient",
      "action": "Get patient by MRN",
      "routing": {
        "request": {
          "url": "={{ \"/\" + ($parameter[\"ehr\"] === \"athena\" ? \"athena-be\" : $parameter[\"ehr\"] === \"epic\" ? \"epic-care\" : $parameter[\"ehr\"] === \"cerner\" ? \"cerner\" : $parameter[\"ehr\"]) + \"/patient_by_id\" }}",
          "method": "GET"
        }
      },
      "description": "Retrieve a single patient by MRN and practice",
      "resource": "patient"
    },
    {
      "name": "Get Encounter By MRN",
      "value": "getEncounter",
      "action": "Get encounter by MRN",
      "routing": {
        "request": {
          "url": "={{ \"/\" + ($parameter[\"ehr\"] === \"athena\" ? \"athena-be\" : $parameter[\"ehr\"] === \"epic\" ? \"epic-care\" : $parameter[\"ehr\"] === \"cerner\" ? \"cerner\" : $parameter[\"ehr\"]) + \"/encounter_by_patient_id\" }}",
          "method": "GET"
        }
      },
      "description": "Retrieve encounter information for a patient by MRN and practice",
      "resource": "encounter"
    },
    {
      "name": "Get Document By MRN",
      "value": "getDocument",
      "action": "Get document by MRN",
      "routing": {
        "request": {
          "url": "={{ \"/\" + ($parameter[\"ehr\"] === \"athena\" ? \"athena-be\" : $parameter[\"ehr\"] === \"epic\" ? \"epic-care\" : $parameter[\"ehr\"] === \"cerner\" ? \"cerner\" : $parameter[\"ehr\"]) + \"/document_by_patient_id\" }}",
          "method": "GET"
        }
      },
      "description": "Retrieve document information for a patient by MRN and practice",
      "resource": "document"
    }
  ]

npm_readme:
  # n8n-nodes-bridgegate

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

  _BridgeGate_ n8n node for EMR/EHR integration enables seamless connectivity with any supported EMR/EHR system such as _Athena, Cerner, eClinicalWorks, EPIC, NextGen, PointClickCare, Practice Fusion_, allowing you to pull patient or clinical data based on defined parameters and receive orchestrated, validated, and transformed outputs.

  [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)

  ## Installation

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

  ## Operations

  ### 1. **List APIs**

  Retrieves the list of active API endpoints available for a given EHR and practice.
  Use this operation to confirm which resources are enabled in your BridgeGate instance.

  #### Authentication

  * Requires a valid BridgeGate Bearer Token credential.

  #### Input Parameters

  * **EHR**: Select the EMR/EHR system (Athena, Epic, or Cerner).
  * **Practice**: Enter your practice name or site identifier.

  #### Output

  * A structured list of available endpoints and resource types.

  ---

  ### 2. **Get Patient**

  Retrieves a single patient’s demographic and identifying details.

  #### Authentication

  * Requires a valid BridgeGate Bearer Token credential.

  #### Input Parameters

  * **EHR**: Select the EHR system.
  * **MRN**: Enter the patient’s Medical Record Number.
  * **Practice**: Enter your practice name or site identifier.

  #### Output

  Returns patient demographic data such as:

  * Patient ID and MRN
  * Name, date of birth, gender
  * Contact information and identifiers

  ---

  ### 3. **Get Encounter by Patient ID**

  Retrieves encounter or visit records for a specific patient based on their MRN and practice.
  Each encounter includes metadata such as provider, type, date, and diagnosis details.

  #### Authentication

  * Requires a valid BridgeGate Bearer Token credential.

  #### Input Parameters

  * **EHR**: Select the EHR system.
  * **MRN**: Enter the patient’s Medical Record Number.
  * **Practice**: Enter your practice name or site identifier.

  #### Output

  A collection of encounter records including:

  * Encounter identifiers
  * Provider and encounter type
  * Visit dates and encounter status
  * Diagnoses or notes (if available)

  ---

  ### 4. **Get Document by Patient ID**

  Retrieves clinical documents, attachments, or notes associated with a patient.
  This may include CCDs, discharge summaries, or uploaded clinical files depending on your EHR’s integration.

  #### Authentication

  * Requires a valid BridgeGate Bearer Token credential.

  #### Input Parameters

  * **EHR**: Select the EHR system.
  * **MRN**: Enter the patient’s Medical Record Number.
  * **Practice**: Enter your practice name or site identifier.

  #### Output

  Returns structured document metadata and content:

  * Document ID and type
  * Created or updated date
  * Document name or category
  * Raw or base64-encoded data when applicable

  ## Credentials

  _To use the BridgeGate node, you will need a valid BridgeGate API Key. Please reach out to sales@vorro.net to request your key._

  ## Compatibility

  _This node is compatible with n8n v1.119.1 and above. It has been tested against the latest stable n8n releases with no known compatibility issues._

  ## Usage

  ### **List APIs**
  ![List APIs](https://github.com/VorroBG/n8n-nodes-bridgegate/blob/a8eea9e9485a33e476cf38b64233e9f779abe374/assets/List-APIs.png)

  ---

  ### **Get Patient By MRN**
  ![Get Patient By MRN](https://github.com/VorroBG/n8n-nodes-bridgegate/blob/a8eea9e9485a33e476cf38b64233e9f779abe374/assets/Get-Patient-By-MRN.png)

  ---

  ### **Get Encounter By MRN**
  ![Get Encounter By MRN](https://github.com/VorroBG/n8n-nodes-bridgegate/blob/a8eea9e9485a33e476cf38b64233e9f779abe374/assets/Get-Encounter-By-MRN.png)

  ---

  ### **Get Document By MRN**
  ![Get Document By MRN](https://github.com/VorroBG/n8n-nodes-bridgegate/blob/a8eea9e9485a33e476cf38b64233e9f779abe374/assets/Get-Document-By-MRN.png)

  ## Error Handling
  The node validates all required parameters (**EHR**, **MRN**, and **Practice**) before sending any request, preventing most client-side errors.

  ### Possible Runtime Errors

  - **401 Unauthorized**  
    The Bearer Token is invalid or expired. Recreate or update the credential and try again.

  - **500 Server Error**  
    The BridgeGate service or the connected EHR system is temporarily unavailable. Try again later or contact **Vorro Support** at [support@vorro.net](mailto:support@vorro.net)

  ## Resources

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

  ## License
  MIT License

  Copyright (c) 2025 Vorro Inc

  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with BridgeGate API to retrieve patient data, clinical encounters, and documents from supported EMR/EHR systems.","capabilities":["List active API endpoints for a given EHR and practice","Retrieve patient demographic and identifying details by Medical Record Number (MRN)","Retrieve encounter or visit records including provider, type, dates, and diagnoses","Retrieve clinical documents, attachments, or notes (e.g., CCDs, discharge summaries)"],"authentication":"Bearer Token (API Key required via n8n credentials)","commonUseCases":["Automated patient data retrieval for clinical workflows","Integration with EMR systems like Athena, Epic, Cerner, and others","Generating patient reports or summaries from multiple EHR sources"],"limitations":["Requires a valid BridgeGate API Key obtained from sales@vorro.net","Only supports specific EHR systems listed in the documentation","Requires n8n version 1.119.1 or above"],"relatedNodes":["n8n-nodes-bridgegate.bridgegate"]}


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

updated_at: 2026-07-14 14:40:34
author_name: markerwise
author_github_url: https://github.com/solutionwise/
npm_package_name: n8n-nodes-bugsmash
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.304Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-bugsmash

  This is an n8n community node for [BugSmash](https://bugsmash.io/) — a visual feedback and bug reporting tool for websites and web apps.

  It allows you to trigger n8n workflows automatically when feedback events occur in BugSmash, such as new comments, status changes, and replies.

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

  ## Installation

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

  Or install directly:

  ```
  n8n-nodes-bugsmash
  ```

  ## Included Nodes

  ### BugSmash Trigger

  Starts a workflow when a BugSmash event occurs. Supports:

  - **New Comment** — fires when a new comment is created on a project
  - **Comment Replied** — fires when a reply is added to an existing comment
  - **Comment Updated** — fires when a comment is edited
  - **Status Changed** — fires when the status of a comment changes

  You can optionally filter events by a specific project.

  ## Credentials

  You will need a **BugSmash API** credential with:

  | Field | Description |
  |---|---|
  | API Key | Your BugSmash API key (found in Settings → Integrations) |
  | Base URL | Your BugSmash instance URL. Default: `https://api.bugsmash.io/` |

  ### How to get your API key

  1. Log in to [BugSmash](https://app.bugsmash.io/)
  2. Go to **Settings → Integrations → n8n**
  3. Copy your API key

  ## Example Workflow

  A typical use case: receive a BugSmash event and send a Slack notification.

  1. Add **BugSmash Trigger** node, select event `New Comment`
  2. (Optional) Select a specific project to filter by
  3. Activate the workflow — BugSmash will register a webhook automatically
  4. Connect a **Slack** node to send the comment data to your team channel

  The trigger output includes the full event payload from BugSmash (comment content, author, project, URL, etc.).

  ## Compatibility

  Tested with n8n version 1.x and above.

  ## Resources

  - [BugSmash website](https://bugsmash.io/)
  - [BugSmash API docs](https://api.bugsmash.io/)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Automatically triggers n8n workflows when specific events occur in BugSmash, such as new comments, replies, updates, or status changes.","capabilities":["Trigger on new comment creation","Trigger on comment replies","Trigger on comment edits","Trigger on status changes","Filter events by specific project","Output full event payload including comment content, author, project, and URL"],"authentication":"API Key required (BugSmash API key and optional Base URL)","commonUseCases":["Receive BugSmash events and send Slack notifications","Automate responses to user feedback","Monitor project status changes","Integrate bug reporting data into other systems"],"limitations":["Community node (not official n8n node)","Requires BugSmash account and API key","Compatible with n8n version 1.x and above"],"relatedNodes":["Slack","Webhook","Generic HTTP Request"]}


node_type: @peachai/n8n-nodes-peach.peach
package_name: @peachai/n8n-nodes-peach
display_name: Peach
description: Interact with the Peach WhatsApp Platform API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: suresh-peach
author_github_url: https://github.com/trypeach-io/n8n-nodes-peach.git
npm_package_name: @peachai/n8n-nodes-peach
npm_version: 0.1.10
community_fetched_at: 2026-07-14T14:40:34.304Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "AI Agent",
          "value": "aiAgent"
        },
        {
          "name": "Broadcast",
          "value": "broadcast"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Message",
          "value": "message"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "routing": {
            "request": {
              "url": "=/api/v1/contacts/{{$parameter[\"phoneNumber\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a contact by phone number"
        },
        {
          "name": "Create or Update",
          "value": "upsert",
          "action": "Create or update a contact",
          "routing": {
            "request": {
              "url": "/api/v1/contacts",
              "body": {
                "name": "={{$parameter[\"name\"]}}",
                "tags": "={{$parameter[\"tags\"].split(\",\")}}",
                "email": "={{$parameter[\"email\"]}}",
                "metadata": "={{$parameter[\"metadata\"]}}",
                "timezone": "={{$parameter[\"timezone\"]}}",
                "opted_out": "={{$parameter[\"optedOut\"]}}",
                "phone_number": "={{$parameter[\"phoneNumber\"]}}",
                "communication_preference": "={{$parameter[\"communicationPreference\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a new record, or update the current one if it already exists (upsert)"
        },
        {
          "name": "Bulk Update Preferences",
          "value": "bulkUpdatePreferences",
          "action": "Bulk update preferences",
          "routing": {
            "request": {
              "url": "/api/v1/contacts/bulk_update_communication_preferences",
              "body": {
                "phone_numbers": "={{$parameter[\"phoneNumbers\"].split(\",\")}}",
                "communication_preference": "={{$parameter[\"communicationPreference\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Update communication preferences for multiple contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendTemplate",
      "options": [
        {
          "name": "Send Template Message",
          "value": "sendTemplate",
          "action": "Send a template message",
          "routing": {
            "request": {
              "url": "/api/v1/events",
              "body": {
                "contact": {
                  "name": "={{$parameter[\"additionalFields\"][\"contactName\"]}}",
                  "phone_number": "={{$parameter[\"to\"]}}"
                },
                "event_type": "send_template_message",
                "template_message": {
                  "liquid_values": "={{$parameter[\"liquidValues\"]}}",
                  "reply_automation": {
                    "app_id": "={{$parameter[\"additionalFields\"][\"aiAgentId\"]}}"
                  },
                  "business_phone_number": "={{$parameter[\"additionalFields\"][\"businessPhoneNumber\"]}}",
                  "whats_app_template_id": "={{$parameter[\"templateId\"]}}"
                }
              },
              "method": "POST"
            }
          },
          "description": "Send a WhatsApp template message with liquid variable mapping"
        },
        {
          "name": "List History",
          "value": "list",
          "action": "List message history",
          "routing": {
            "request": {
              "qs": {
                "page": "={{$parameter[\"page\"]}}",
                "direction": "={{$parameter[\"direction\"]}}",
                "phone_number": "={{$parameter[\"to\"]}}",
                "conversation_id": "={{$parameter[\"conversationId\"]}}",
                "business_phone_number": "={{$parameter[\"businessPhoneNumber\"]}}"
              },
              "url": "/api/v1/messages",
              "method": "GET"
            }
          },
          "description": "List message history"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive a broadcast",
          "routing": {
            "request": {
              "url": "=/api/v1/broadcasts/{{$parameter[\"broadcastId\"]}}/archive",
              "method": "PATCH"
            }
          },
          "description": "Archive a completed broadcast"
        },
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a broadcast",
          "routing": {
            "request": {
              "url": "=/api/v1/broadcasts/{{$parameter[\"broadcastId\"]}}/cancel",
              "method": "PATCH"
            }
          },
          "description": "Cancel an active broadcast"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a broadcast",
          "routing": {
            "request": {
              "url": "=/api/v1/broadcasts/{{$parameter[\"broadcastId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get a broadcast by ID"
        },
        {
          "name": "Get Event Status",
          "value": "getEventStatus",
          "action": "Get event status",
          "routing": {
            "request": {
              "url": "=/api/v1/events/{{$parameter[\"eventId\"]}}",
              "method": "GET"
            }
          },
          "description": "Get the status of a broadcast launch event"
        },
        {
          "name": "Launch",
          "value": "launch",
          "action": "Launch a broadcast",
          "routing": {
            "request": {
              "url": "/api/v1/events",
              "body": {
                "broadcast": {
                  "name": "={{$parameter[\"name\"]}}",
                  "contacts": "={{$parameter[\"contacts\"]}}",
                  "audience_id": "={{$parameter[\"audienceId\"]}}",
                  "phone_number": "={{$parameter[\"additionalFields\"][\"businessPhoneNumber\"]}}",
                  "delivery_mode": "={{$parameter[\"deliveryMode\"]}}",
                  "liquid_values": "={{$parameter[\"liquidValues\"]}}",
                  "reply_automation": {
                    "app_id": "={{$parameter[\"additionalFields\"][\"aiAgentId\"]}}"
                  },
                  "scheduled_launch_time": "={{$parameter[\"additionalFields\"][\"scheduledLaunchTime\"]}}",
                  "whats_app_template_id": "={{$parameter[\"templateId\"]}}"
                },
                "event_type": "send_broadcast",
                "skip_phone_validation": "={{$parameter[\"additionalFields\"][\"skipPhoneValidation\"]}}",
                "skip_liquid_values_validation": "={{$parameter[\"additionalFields\"][\"skipLiquidValuesValidation\"]}}"
              },
              "method": "POST"
            }
          },
          "description": "Launch a new broadcast campaign"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List broadcasts",
          "routing": {
            "request": {
              "qs": {
                "page": "={{$parameter[\"page\"]}}",
                "status": "={{$parameter[\"status\"]}}"
              },
              "url": "/api/v1/broadcasts",
              "method": "GET"
            }
          },
          "description": "List all broadcasts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "broadcast"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List conversations",
          "routing": {
            "request": {
              "qs": {
                "page": "={{$parameter[\"page\"]}}",
                "status": "={{$parameter[\"status\"]}}",
                "escalated": "={{$parameter[\"escalated\"]}}",
                "phone_number": "={{$parameter[\"phoneNumber\"]}}",
                "activity_type": "={{$parameter[\"activityType\"]}}",
                "updated_since": "={{$parameter[\"updatedSince\"]}}",
                "has_call_permission": "={{$parameter[\"hasCallPermission\"]}}"
              },
              "url": "/api/v1/conversations",
              "method": "GET"
            }
          },
          "description": "List conversations"
        },
        {
          "name": "Update Status",
          "value": "update",
          "action": "Update status",
          "routing": {
            "request": {
              "url": "=/api/v1/conversations/{{$parameter[\"conversationId\"]}}",
              "body": {
                "status": "={{$parameter[\"newStatus\"]}}"
              },
              "method": "PATCH"
            }
          },
          "description": "Update the status of a conversation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "routing": {
            "request": {
              "url": "/api/v1/medias",
              "body": {
                "media": {
                  "data": "={{$parameter[\"data\"]}}",
                  "filename": "={{$parameter[\"filename\"]}}",
                  "content_type": "={{$parameter[\"contentType\"]}}"
                }
              },
              "method": "POST"
            }
          },
          "description": "Upload a media file"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List media",
          "routing": {
            "request": {
              "qs": {
                "page": "={{$parameter[\"page\"]}}"
              },
              "url": "/api/v1/medias",
              "method": "GET"
            }
          },
          "description": "List uploaded media"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete media",
          "routing": {
            "request": {
              "url": "=/api/v1/medias/{{$parameter[\"mediaId\"]}}",
              "method": "DELETE"
            }
          },
          "description": "Delete a media file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connect",
      "options": [
        {
          "name": "Connect",
          "value": "connect",
          "action": "Connect a contact to an ai agent",
          "routing": {
            "request": {
              "url": "/api/v1/events",
              "body": {
                "contact": {
                  "name": "={{$parameter[\"additionalFields\"][\"name\"] || undefined}}",
                  "email": "={{$parameter[\"additionalFields\"][\"email\"] || undefined}}",
                  "phone_number": "={{$parameter[\"phoneNumber\"]}}"
                },
                "ai_agent": {
                  "id": "={{$parameter[\"agentId\"]}}"
                },
                "event_type": "connect_to_ai_agent",
                "template_message": {
                  "retry_until": "={{$parameter[\"additionalFields\"][\"retryUntil\"] || undefined}}",
                  "retry_window": "={{$parameter[\"additionalFields\"][\"retryWindow\"] ? { start_at: $parameter[\"additionalFields\"][\"retryWindow\"][\"retryWindowProperties\"][\"startAt\"], end_at: $parameter[\"additionalFields\"][\"retryWindow\"][\"retryWindowProperties\"][\"endAt\"], timezone: $parameter[\"additionalFields\"][\"retryWindow\"][\"retryWindowProperties\"][\"timezone\"] } : undefined}}",
                  "liquid_values": "={{$parameter[\"liquidValues\"]}}",
                  "whats_app_template_id": "={{$parameter[\"templateId\"]}}"
                }
              },
              "method": "POST"
            }
          },
          "description": "Connect a contact to an AI Agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiAgent"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "routing": {
        "request": {
          "url": "=/api/v1/contacts/{{$parameter[\"phoneNumber\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a contact by phone number",
      "resource": "contact"
    },
    {
      "name": "Create or Update",
      "value": "upsert",
      "action": "Create or update a contact",
      "routing": {
        "request": {
          "url": "/api/v1/contacts",
          "body": {
            "name": "={{$parameter[\"name\"]}}",
            "tags": "={{$parameter[\"tags\"].split(\",\")}}",
            "email": "={{$parameter[\"email\"]}}",
            "metadata": "={{$parameter[\"metadata\"]}}",
            "timezone": "={{$parameter[\"timezone\"]}}",
            "opted_out": "={{$parameter[\"optedOut\"]}}",
            "phone_number": "={{$parameter[\"phoneNumber\"]}}",
            "communication_preference": "={{$parameter[\"communicationPreference\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a new record, or update the current one if it already exists (upsert)",
      "resource": "contact"
    },
    {
      "name": "Bulk Update Preferences",
      "value": "bulkUpdatePreferences",
      "action": "Bulk update preferences",
      "routing": {
        "request": {
          "url": "/api/v1/contacts/bulk_update_communication_preferences",
          "body": {
            "phone_numbers": "={{$parameter[\"phoneNumbers\"].split(\",\")}}",
            "communication_preference": "={{$parameter[\"communicationPreference\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Update communication preferences for multiple contacts",
      "resource": "contact"
    },
    {
      "name": "Send Template Message",
      "value": "sendTemplate",
      "action": "Send a template message",
      "routing": {
        "request": {
          "url": "/api/v1/events",
          "body": {
            "contact": {
              "name": "={{$parameter[\"additionalFields\"][\"contactName\"]}}",
              "phone_number": "={{$parameter[\"to\"]}}"
            },
            "event_type": "send_template_message",
            "template_message": {
              "liquid_values": "={{$parameter[\"liquidValues\"]}}",
              "reply_automation": {
                "app_id": "={{$parameter[\"additionalFields\"][\"aiAgentId\"]}}"
              },
              "business_phone_number": "={{$parameter[\"additionalFields\"][\"businessPhoneNumber\"]}}",
              "whats_app_template_id": "={{$parameter[\"templateId\"]}}"
            }
          },
          "method": "POST"
        }
      },
      "description": "Send a WhatsApp template message with liquid variable mapping",
      "resource": "message"
    },
    {
      "name": "List History",
      "value": "list",
      "action": "List message history",
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}",
            "direction": "={{$parameter[\"direction\"]}}",
            "phone_number": "={{$parameter[\"to\"]}}",
            "conversation_id": "={{$parameter[\"conversationId\"]}}",
            "business_phone_number": "={{$parameter[\"businessPhoneNumber\"]}}"
          },
          "url": "/api/v1/messages",
          "method": "GET"
        }
      },
      "description": "List message history",
      "resource": "message"
    },
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive a broadcast",
      "routing": {
        "request": {
          "url": "=/api/v1/broadcasts/{{$parameter[\"broadcastId\"]}}/archive",
          "method": "PATCH"
        }
      },
      "description": "Archive a completed broadcast",
      "resource": "broadcast"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a broadcast",
      "routing": {
        "request": {
          "url": "=/api/v1/broadcasts/{{$parameter[\"broadcastId\"]}}/cancel",
          "method": "PATCH"
        }
      },
      "description": "Cancel an active broadcast",
      "resource": "broadcast"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a broadcast",
      "routing": {
        "request": {
          "url": "=/api/v1/broadcasts/{{$parameter[\"broadcastId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get a broadcast by ID",
      "resource": "broadcast"
    },
    {
      "name": "Get Event Status",
      "value": "getEventStatus",
      "action": "Get event status",
      "routing": {
        "request": {
          "url": "=/api/v1/events/{{$parameter[\"eventId\"]}}",
          "method": "GET"
        }
      },
      "description": "Get the status of a broadcast launch event",
      "resource": "broadcast"
    },
    {
      "name": "Launch",
      "value": "launch",
      "action": "Launch a broadcast",
      "routing": {
        "request": {
          "url": "/api/v1/events",
          "body": {
            "broadcast": {
              "name": "={{$parameter[\"name\"]}}",
              "contacts": "={{$parameter[\"contacts\"]}}",
              "audience_id": "={{$parameter[\"audienceId\"]}}",
              "phone_number": "={{$parameter[\"additionalFields\"][\"businessPhoneNumber\"]}}",
              "delivery_mode": "={{$parameter[\"deliveryMode\"]}}",
              "liquid_values": "={{$parameter[\"liquidValues\"]}}",
              "reply_automation": {
                "app_id": "={{$parameter[\"additionalFields\"][\"aiAgentId\"]}}"
              },
              "scheduled_launch_time": "={{$parameter[\"additionalFields\"][\"scheduledLaunchTime\"]}}",
              "whats_app_template_id": "={{$parameter[\"templateId\"]}}"
            },
            "event_type": "send_broadcast",
            "skip_phone_validation": "={{$parameter[\"additionalFields\"][\"skipPhoneValidation\"]}}",
            "skip_liquid_values_validation": "={{$parameter[\"additionalFields\"][\"skipLiquidValuesValidation\"]}}"
          },
          "method": "POST"
        }
      },
      "description": "Launch a new broadcast campaign",
      "resource": "broadcast"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List broadcasts",
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}",
            "status": "={{$parameter[\"status\"]}}"
          },
          "url": "/api/v1/broadcasts",
          "method": "GET"
        }
      },
      "description": "List all broadcasts",
      "resource": "broadcast"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List conversations",
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}",
            "status": "={{$parameter[\"status\"]}}",
            "escalated": "={{$parameter[\"escalated\"]}}",
            "phone_number": "={{$parameter[\"phoneNumber\"]}}",
            "activity_type": "={{$parameter[\"activityType\"]}}",
            "updated_since": "={{$parameter[\"updatedSince\"]}}",
            "has_call_permission": "={{$parameter[\"hasCallPermission\"]}}"
          },
          "url": "/api/v1/conversations",
          "method": "GET"
        }
      },
      "description": "List conversations",
      "resource": "conversation"
    },
    {
      "name": "Update Status",
      "value": "update",
      "action": "Update status",
      "routing": {
        "request": {
          "url": "=/api/v1/conversations/{{$parameter[\"conversationId\"]}}",
          "body": {
            "status": "={{$parameter[\"newStatus\"]}}"
          },
          "method": "PATCH"
        }
      },
      "description": "Update the status of a conversation",
      "resource": "conversation"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "routing": {
        "request": {
          "url": "/api/v1/medias",
          "body": {
            "media": {
              "data": "={{$parameter[\"data\"]}}",
              "filename": "={{$parameter[\"filename\"]}}",
              "content_type": "={{$parameter[\"contentType\"]}}"
            }
          },
          "method": "POST"
        }
      },
      "description": "Upload a media file",
      "resource": "media"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List media",
      "routing": {
        "request": {
          "qs": {
            "page": "={{$parameter[\"page\"]}}"
          },
          "url": "/api/v1/medias",
          "method": "GET"
        }
      },
      "description": "List uploaded media",
      "resource": "media"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete media",
      "routing": {
        "request": {
          "url": "=/api/v1/medias/{{$parameter[\"mediaId\"]}}",
          "method": "DELETE"
        }
      },
      "description": "Delete a media file",
      "resource": "media"
    },
    {
      "name": "Connect",
      "value": "connect",
      "action": "Connect a contact to an ai agent",
      "routing": {
        "request": {
          "url": "/api/v1/events",
          "body": {
            "contact": {
              "name": "={{$parameter[\"additionalFields\"][\"name\"] || undefined}}",
              "email": "={{$parameter[\"additionalFields\"][\"email\"] || undefined}}",
              "phone_number": "={{$parameter[\"phoneNumber\"]}}"
            },
            "ai_agent": {
              "id": "={{$parameter[\"agentId\"]}}"
            },
            "event_type": "connect_to_ai_agent",
            "template_message": {
              "retry_until": "={{$parameter[\"additionalFields\"][\"retryUntil\"] || undefined}}",
              "retry_window": "={{$parameter[\"additionalFields\"][\"retryWindow\"] ? { start_at: $parameter[\"additionalFields\"][\"retryWindow\"][\"retryWindowProperties\"][\"startAt\"], end_at: $parameter[\"additionalFields\"][\"retryWindow\"][\"retryWindowProperties\"][\"endAt\"], timezone: $parameter[\"additionalFields\"][\"retryWindow\"][\"retryWindowProperties\"][\"timezone\"] } : undefined}}",
              "liquid_values": "={{$parameter[\"liquidValues\"]}}",
              "whats_app_template_id": "={{$parameter[\"templateId\"]}}"
            }
          },
          "method": "POST"
        }
      },
      "description": "Connect a contact to an AI Agent",
      "resource": "aiAgent"
    }
  ]

npm_readme:
  # @peachai/n8n-nodes-peach

  This is an n8n community node for [Peach](https://trypeach.ai), the AI-powered WhatsApp platform for businesses.

  Peach allows you to build native app-like experiences from your Official WhatsApp Business Accounts. You can build AI agents, launch broadcasts, and route chats to your sales or support teams so your customers can get all their help right from within WhatsApp. Peach is an official Meta Tech Partner, and works using WhatsApp's official APIs. This node enables you to integrate Peach into your n8n workflows.

  ## Features

  - **Broadcasts**: Launch broadcast campaigns to your contacts.
  - **Messages**: Send template messages with dynamic `liquid_values` support.
  - **Contacts**: Manage contact communication preferences and metadata.
  - **AI Handoff**: Connect a contact or customer with an AI agent to address a customer's query.

  ## Installation

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

  1. Go to **Settings > Community Nodes**.
  2. Click **Install a community node**.
  3. Enter `@peachai/n8n-nodes-peach`.
  4. Agree to the risks and click **Install**.

  ## Credentials

  To use this node, you'll need an API Key from your Peach dashboard.
  1. Log in to [Peach](https://app.trypeach.ai).
  2. Go to **Developers > API Keys**.
  3. Copy your API Key and paste it into the n8n credential settings.

  ## Usage Example: Send a Template Message

  This example shows how to send a personalized WhatsApp template message when a new lead is added to your workflow.

  1.  **Add the Peach Node**: Add a Peach node to your canvas.
  2.  **Select Resource & Operation**:
      *   **Resource**: Message
      *   **Operation**: Send Template
  3.  **Configure Parameters**:
      *   **Phone Number**: The recipient's phone number in E.164 format (e.g., `+919876543210`).
      *   **Template ID**: Enter the UUID of the template you created in your Peach dashboard (e.g., `550e8400-e29b-41d4-a716-446655440000`).
      *   **Liquid Values**: Enter a JSON object for dynamic variables.
          ```json
          {
            "name": "John Doe",
            "product": "AI Platform"
          }
          ```
  4.  **Execute**: When triggered, the node will send the message via the official WhatsApp API and return the message ID and delivery status.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the Peach WhatsApp Platform API to manage WhatsApp business interactions, including sending messages, broadcasting campaigns, and handling AI agent handoffs.","capabilities":["Send template messages with dynamic liquid values","Launch broadcast campaigns to contacts","Manage contact communication preferences and metadata","Connect contacts or customers with AI agents for query handling","Retrieve message IDs and delivery status"],"authentication":"API Key required (obtained from Peach dashboard under Developers > API Keys)","commonUseCases":["Automated personalized WhatsApp messaging for new leads","AI-powered customer support routing within WhatsApp","Broadcast campaigns to customer lists","Dynamic template variable substitution in WhatsApp messages"],"limitations":["Requires an active Peach account with API access","Phone numbers must be in E.164 format","Template IDs must be created within the Peach dashboard"],"relatedNodes":["n8n WhatsApp API nodes","n8n AI Agent nodes","n8n Broadcast nodes"]}


node_type: n8n-nodes-recruspace.recruspaceTrigger
package_name: n8n-nodes-recruspace
display_name: Recruspace Webhook Trigger
description: Receives real-time events from Recruspace ATS
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: recruspaceteam
author_github_url: https://github.com/Recruspace/
npm_package_name: n8n-nodes-recruspace
npm_version: 0.2.5
community_fetched_at: 2026-07-14T14:40:34.306Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-recruspace

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

  Recruspace is an Applicant Tracking System (ATS) that helps you manage your recruitment process efficiently.

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

  ## Installation

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

  ## Credentials

  You need a Recruspace API Key to use this node.

  1. Log in to your Recruspace account.
  2. Go to **Settings** > **Career Page**.
  3. Generate a new API Key.
  4. In n8n, add a new "Recruspace API" credential and paste your API Key.

  ## Operations

  This node supports the following operations:

  ### Triggers
  Starts your workflow when specific events occur in Recruspace:
  * **Bulk Import Completed**: Triggered when a bulk import is completed.
  * **Candidate Applied**: Triggered when a new candidate is added.
  * **Candidate Replied Email**: Triggered when a candidate replies to an email.
  * **Job Closed**: Triggered when a job post is closed.
  * **New Job Posted**: Triggered when a new job post goes live.
  * **Stage Changed**: Triggered when a candidate's stage is changed.

  ### Candidate Actions
  * **Create Candidate**: Create a new candidate profile.
      * Supports uploading CVs via Binary Data.
      * Can associate the candidate with a **Job Post** or a **Talent Pool**.
      * Supports additional fields like Phone Number.
  * **Add Note**: Add a comment/note to an existing candidate profile.
  * **Add Tag**: Add a tag to an existing candidate.
  * **Search**: Search for candidates by email.

  ### Talent Pool Actions
  * **Create Talent Pool**: Create a new talent pool.

  ## Usage Examples

  ### Creating a Candidate from a Form
  1. Use a **Webhook** or **Typeform** node to receive application data.
  2. Add the **Recruspace** node with **Operation**: `Create Candidate`.
  3. Map the Name and Email fields.
  4. Set **CV Source** to `Binary Data` if uploading a CV.
  5. Choose to associate with a **Job Post** or **Talent Pool**.

  ### Adding a Note to a Candidate
  1. Use **Recruspace** node with **Operation**: `Add Note`.
  2. Enter the **Candidate ID**.
  3. Enter your note text.

  ### Searching for a Candidate
  1. Use **Recruspace** node with **Operation**: `Search`.
  2. Enter the email address to search.
  3. Choose the result strategy: Return First, Stop if Multiple, or Return All.

  ## Compatibility

  * Tested with n8n version 1.0.0+.

  ## Resources

  * [GitHub Repository](https://github.com/Recruspace/n8n-nodes-recruspace)
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Recruspace Website](https://recruspace.com/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables real-time event triggering and candidate management operations within Recruspace ATS workflows.","capabilities":["Trigger workflow on bulk import completion","Trigger workflow on new candidate application","Trigger workflow on candidate email reply","Trigger workflow on job post closure","Trigger workflow on new job posting","Trigger workflow on candidate stage change","Create new candidate profiles with CV uploads","Associate candidates with job posts or talent pools","Add notes to existing candidates","Add tags to existing candidates"],"authentication":"API Key required","commonUseCases":["Automate candidate onboarding from external forms","Send notifications when candidates apply or reply","Update candidate records with internal notes","Search and retrieve candidate data for reporting"],"limitations":["Community node (unofficial n8n integration)","Requires Recruspace account access"],"relatedNodes":["Webhook","Typeform","Binary Data"]}


node_type: n8n-nodes-recruspace.recruspace
package_name: n8n-nodes-recruspace
display_name: Recruspace
description: Interact with Recruspace
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: recruspaceteam
author_github_url: https://github.com/Recruspace/
npm_package_name: n8n-nodes-recruspace
npm_version: 0.2.5
community_fetched_at: 2026-07-14T14:40:34.307Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "candidate",
      "options": [
        {
          "name": "Candidate",
          "value": "candidate"
        },
        {
          "name": "Talent Pool",
          "value": "talentPool"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create candidate",
          "description": "Create a new candidate"
        },
        {
          "name": "Add Note",
          "value": "addNote",
          "action": "Add candidate note",
          "description": "Add a note to an existing candidate"
        },
        {
          "name": "Add Tag",
          "value": "addTag",
          "action": "Add candidate tag",
          "description": "Add a tag to an existing candidate"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search candidate",
          "description": "Search for a candidate by email"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "candidate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create talent pool",
          "description": "Create a new talent pool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "talentPool"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create candidate",
      "description": "Create a new candidate",
      "resource": "candidate"
    },
    {
      "name": "Add Note",
      "value": "addNote",
      "action": "Add candidate note",
      "description": "Add a note to an existing candidate",
      "resource": "candidate"
    },
    {
      "name": "Add Tag",
      "value": "addTag",
      "action": "Add candidate tag",
      "description": "Add a tag to an existing candidate",
      "resource": "candidate"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search candidate",
      "description": "Search for a candidate by email",
      "resource": "candidate"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create talent pool",
      "description": "Create a new talent pool",
      "resource": "talentPool"
    }
  ]

npm_readme:
  # n8n-nodes-recruspace

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

  Recruspace is an Applicant Tracking System (ATS) that helps you manage your recruitment process efficiently.

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

  ## Installation

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

  ## Credentials

  You need a Recruspace API Key to use this node.

  1. Log in to your Recruspace account.
  2. Go to **Settings** > **Career Page**.
  3. Generate a new API Key.
  4. In n8n, add a new "Recruspace API" credential and paste your API Key.

  ## Operations

  This node supports the following operations:

  ### Triggers
  Starts your workflow when specific events occur in Recruspace:
  * **Bulk Import Completed**: Triggered when a bulk import is completed.
  * **Candidate Applied**: Triggered when a new candidate is added.
  * **Candidate Replied Email**: Triggered when a candidate replies to an email.
  * **Job Closed**: Triggered when a job post is closed.
  * **New Job Posted**: Triggered when a new job post goes live.
  * **Stage Changed**: Triggered when a candidate's stage is changed.

  ### Candidate Actions
  * **Create Candidate**: Create a new candidate profile.
      * Supports uploading CVs via Binary Data.
      * Can associate the candidate with a **Job Post** or a **Talent Pool**.
      * Supports additional fields like Phone Number.
  * **Add Note**: Add a comment/note to an existing candidate profile.
  * **Add Tag**: Add a tag to an existing candidate.
  * **Search**: Search for candidates by email.

  ### Talent Pool Actions
  * **Create Talent Pool**: Create a new talent pool.

  ## Usage Examples

  ### Creating a Candidate from a Form
  1. Use a **Webhook** or **Typeform** node to receive application data.
  2. Add the **Recruspace** node with **Operation**: `Create Candidate`.
  3. Map the Name and Email fields.
  4. Set **CV Source** to `Binary Data` if uploading a CV.
  5. Choose to associate with a **Job Post** or **Talent Pool**.

  ### Adding a Note to a Candidate
  1. Use **Recruspace** node with **Operation**: `Add Note`.
  2. Enter the **Candidate ID**.
  3. Enter your note text.

  ### Searching for a Candidate
  1. Use **Recruspace** node with **Operation**: `Search`.
  2. Enter the email address to search.
  3. Choose the result strategy: Return First, Stop if Multiple, or Return All.

  ## Compatibility

  * Tested with n8n version 1.0.0+.

  ## Resources

  * [GitHub Repository](https://github.com/Recruspace/n8n-nodes-recruspace)
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Recruspace Website](https://recruspace.com/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with Recruspace, an Applicant Tracking System (ATS), to automate recruitment workflows by creating candidates, managing notes, searching profiles, and triggering actions on recruitment events.","capabilities":["Trigger workflow on bulk import completion","Trigger workflow on new candidate application","Trigger workflow on candidate email reply","Trigger workflow on job post closure","Trigger workflow on new job posting","Trigger workflow on candidate stage change","Create new candidate profiles with CV upload support","Associate candidates with job posts or talent pools","Add notes to existing candidate profiles","Add tags to existing candidate profiles"],"authentication":"API Key required (configured via Recruspace API credential)","commonUseCases":["Automating candidate intake from web forms or Typeform","Sending automated notes to candidates after application","Searching for specific candidates by email","Triggering workflow actions when recruitment stages change"],"limitations":["Limited to specific Recruspace events for triggers","Search operation only supports email-based candidate lookup","Requires Recruspace account and API key setup"],"relatedNodes":["Webhook","Typeform","Binary Data"]}


node_type: @alephantai/n8n-nodes-alephant-ai.alephantAi
package_name: @alephantai/n8n-nodes-alephant-ai
display_name: Alephant Cost Control
category: Community
development_style: declarative
version: 1
operations:
  [
  {
  "name": "Chat Completion",
  "value": "chatCompletion"
  }
  ]

credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: alephantway
author_github_url: https://github.com/AlephantAI/alephant-n8n.git
npm_package_name: @alephantai/n8n-nodes-alephant-ai
npm_version: 0.1.7
community_fetched_at: 2026-07-14T14:40:34.308Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Alephant Cost Control helps route AI requests through Alephant AI Gateway to track token usage, enforce budget limits, prevent runaway agent spend, and attribute AI costs by key, team, model, provider, or session.

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "chatCompletion",
      "options": [
        {
          "name": "Chat Completion",
          "value": "chatCompletion"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

npm_readme:
  # @alephantai/n8n-nodes-alephant-ai

  n8n community node for Alephant AI Gateway cost control and observable model requests.

  ## What This Node Does

  This package adds the **Alephant Cost Control** node to n8n. The node sends OpenAI-compatible chat completion requests through Alephant AI Gateway so teams can route model traffic through a virtual key, track usage, and attribute cost by workspace, key, model, provider, or workflow run.

  Use this package when you want an n8n workflow to call a model through Alephant instead of calling the model provider directly.

  ## Installation

  In n8n:

  1. Go to **Settings** > **Community nodes**.
  2. Select **Install**.
  3. Enter `@alephantai/n8n-nodes-alephant-ai`.
  4. Confirm the community node installation prompt.

  For self-hosted n8n, community packages must be enabled:

  ```bash
  N8N_COMMUNITY_PACKAGES_ENABLED=true
  ```

  Restart n8n after changing environment variables.

  ## Authentication

  This node uses the **Alephant Virtual Key** credential.

  To configure it:

  1. Follow the Alephant quickstart guide: `https://developers.alephant.io/docs/overview/getting-started/quickstart-guide`.
  2. In the Alephant dashboard, register or sign in to your workspace.
  3. Add an upstream provider API key as a Master Key.
  4. Create an Agent for the n8n workflow or application that will send AI traffic.
  5. Copy the Virtual Key generated for that Agent.
  6. In n8n, create a new **Alephant Virtual Key** credential.
  7. Paste the key into the **Virtual Key** field.
  8. Leave **Gateway Base URL** empty unless you use a staging, local, or dedicated Alephant deployment.

  Production defaults:

  - Gateway Base URL: `https://ai.alephant.io/v1`
  - SaaS Base URL: `https://alephant.io`
  - Analytics Base URL: `https://analytics.alephant.io`

  The credential test calls the Alephant Gateway models endpoint with your virtual key. A successful test means n8n can authenticate to the gateway.

  The Alephant quickstart also shows the equivalent OpenAI-compatible setup: use `https://ai.alephant.io/v1` as the base URL and send the Virtual Key as a Bearer token. This n8n node handles that request setup for you after the credential is saved.

  ## Worked Example: Chat Completion

  This example sends a prompt to Alephant AI Gateway and returns the model response plus request metadata.

  1. Create a new workflow in n8n.
  2. Add a **Manual Trigger** node.
  3. Add the **Alephant Cost Control** node.
  4. Select your **Alephant Virtual Key** credential.
  5. Set **Operation** to `Chat Completion`.
  6. Set **Model** to a model available in your Alephant workspace, for example `gpt-4o-mini`.
  7. Set **Input Mode** to `Prompt`.
  8. Set **Prompt** to:

  ```text
  Write a one sentence summary of why AI cost attribution matters.
  ```

  9. Execute the node.

  Example output shape:

  ```json
  {
    "text": "AI cost attribution matters because it shows which teams, workflows, and models drive spend.",
    "model": "gpt-4o-mini",
    "usage": {
      "prompt_tokens": 18,
      "completion_tokens": 17,
      "total_tokens": 35
    },
    "requestId": "req_...",
    "requestLogId": "..."
  }
  ```

  You can pass structured OpenAI-compatible message arrays by changing **Input Mode** to `Messages JSON` and entering:

  ```json
  [
    {
      "role": "system",
      "content": "You write concise workflow summaries."
    },
    {
      "role": "user",
      "content": "Summarize the latest workflow item."
    }
  ]
  ```

  ## Node

  - **Alephant Cost Control**

  ## Credential

  - **Alephant Virtual Key**

  ## Support

  For product and API documentation, visit `https://alephant.io`.

ai_documentation_summary:
  {"purpose":"Routes AI requests through Alephant AI Gateway to track token usage, enforce budget limits, and attribute costs by key, team, model, provider, or session.","capabilities":["Track token usage per request","Enforce budget limits","Prevent runaway agent spend","Attribute AI costs by workspace, key, model, provider, or workflow run","Send OpenAI-compatible chat completion requests","Support prompt-based input","Support structured message array input (Messages JSON)","Return model response with request metadata"],"authentication":"Alephant Virtual Key (API key required)","commonUseCases":["Cost attribution for AI workflows","Budget management for AI spending","Routing model traffic through Alephant Gateway","Monitoring token usage across teams or models"],"limitations":["Requires Alephant Virtual Key credential setup","Self-hosted n8n requires community packages to be enabled"],"relatedNodes":["Alephant Virtual Key (Credential)","Manual Trigger","OpenAI-compatible nodes"]}


node_type: n8n-nodes-trendswell.trendswell
package_name: n8n-nodes-trendswell
display_name: Trendswell
description: Custom node for Trendswell search
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: junaid_khokhar
author_github_url: https://github.com/KhokharJunaid/
npm_package_name: n8n-nodes-trendswell
npm_version: 0.1.28
community_fetched_at: 2026-07-14T14:40:34.309Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-trendswell

  Custom **n8n community nodes** for [Trendswell](https://app.trendswell.ai).
  This package provides:

  - **Credentials** for authenticating with the Trendswell API
  - **Trigger node** for receiving real-time events
  - **Action node** for interacting with Trendswell endpoints

  ---

  ## ✨ Features

  - 🔑 API Key authentication (`auth-token` header)
  - 📡 **Trigger Node**: Reacts to Trendswell events via webhooks
  - ⚙️ **Action Node**: Perform operations with the Trendswell API

  ---

  ## 📦 Installation

  ### From npm (recommended)

  ```bash
  npm install n8n-nodes-trendswell
  ```

  ### From source

  Clone this repository into your n8n custom nodes directory:

  ```bash
  git clone https://github.com/<your-username>/n8n-nodes-trendswell.git
  cd n8n-nodes-trendswell
  npm install
  npm run build
  ```

  Then add the built package to your n8n instance (using `dist`).

  ---

  ## 🔑 Credentials

  You’ll need your **Trendswell API token**.
  When creating credentials in n8n, enter your API key, which will be injected as an `auth-token` header in every request.

  ---

  ## 🚀 Usage

  1. Add **Trendswell Trigger** node to your workflow.

     - This will register a webhook URL with your Trendswell backend.
     - When an event occurs, n8n will receive the payload.

  2. Add **Trendswell Action** node to perform API operations.

  ---

  ## 🖼️ Icons

  Icons are included and will display in the n8n editor UI.

  ---

  ## 🤝 Contributing

  Pull requests are welcome! Please open an issue before submitting major changes.

  ---

  ## 📄 License

  [MIT](LICENSE) © 2025 Marchese company

ai_documentation_summary:
  {"purpose":"A custom n8n node package enabling integration with Trendswell, providing real-time event triggers and API action nodes.","capabilities":["API Key authentication","Webhook trigger for real-time event reception","API action node for Trendswell endpoint interactions"],"authentication":"API Key (auth-token header)","commonUseCases":["Real-time event monitoring via webhooks","Automated API operations with Trendswell"],"limitations":[],"relatedNodes":["n8n Trigger nodes","n8n Action nodes","Webhook nodes"]}


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

updated_at: 2026-07-14 14:40:34
author_name: junaid_khokhar
author_github_url: https://github.com/KhokharJunaid/
npm_package_name: n8n-nodes-trendswell
npm_version: 0.1.28
community_fetched_at: 2026-07-14T14:40:34.310Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-trendswell

  Custom **n8n community nodes** for [Trendswell](https://app.trendswell.ai).
  This package provides:

  - **Credentials** for authenticating with the Trendswell API
  - **Trigger node** for receiving real-time events
  - **Action node** for interacting with Trendswell endpoints

  ---

  ## ✨ Features

  - 🔑 API Key authentication (`auth-token` header)
  - 📡 **Trigger Node**: Reacts to Trendswell events via webhooks
  - ⚙️ **Action Node**: Perform operations with the Trendswell API

  ---

  ## 📦 Installation

  ### From npm (recommended)

  ```bash
  npm install n8n-nodes-trendswell
  ```

  ### From source

  Clone this repository into your n8n custom nodes directory:

  ```bash
  git clone https://github.com/<your-username>/n8n-nodes-trendswell.git
  cd n8n-nodes-trendswell
  npm install
  npm run build
  ```

  Then add the built package to your n8n instance (using `dist`).

  ---

  ## 🔑 Credentials

  You’ll need your **Trendswell API token**.
  When creating credentials in n8n, enter your API key, which will be injected as an `auth-token` header in every request.

  ---

  ## 🚀 Usage

  1. Add **Trendswell Trigger** node to your workflow.

     - This will register a webhook URL with your Trendswell backend.
     - When an event occurs, n8n will receive the payload.

  2. Add **Trendswell Action** node to perform API operations.

  ---

  ## 🖼️ Icons

  Icons are included and will display in the n8n editor UI.

  ---

  ## 🤝 Contributing

  Pull requests are welcome! Please open an issue before submitting major changes.

  ---

  ## 📄 License

  [MIT](LICENSE) © 2025 Marchese company

ai_documentation_summary:
  {"purpose":"This n8n community node enables workflow automation by triggering actions when Trendswell events occur and allows interaction with Trendswell API endpoints.","capabilities":["Receives real-time Trendswell events via webhooks","Registers webhook URLs with Trendswell backend","Performs API operations on Trendswell endpoints","Authenticates requests using API token headers"],"authentication":"API key required (auth-token header)","commonUseCases":["Automate responses to Trendswell events","Integrate Trendswell data into existing workflows","Execute API actions triggered by external events"],"limitations":["Requires Trendswell API token access","Community node (may require manual installation)"],"relatedNodes":["Trendswell Action","Webhook Trigger","API Request"]}


node_type: @simplyprint/n8n-nodes-simplyprint.simplyPrintTrigger
package_name: @simplyprint/n8n-nodes-simplyprint
display_name: SimplyPrint Trigger
description: Starts a workflow when SimplyPrint emits a selected event
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: simplyprint-dev
author_github_url: https://github.com/SimplyPrint/n8n-nodes-simplyprint.git
npm_package_name: @simplyprint/n8n-nodes-simplyprint
npm_version: 0.4.1
community_fetched_at: 2026-07-14T14:40:34.311Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-simplyprint

  [![npm version](https://img.shields.io/npm/v/@simplyprint/n8n-nodes-simplyprint.svg)](https://www.npmjs.com/package/@simplyprint/n8n-nodes-simplyprint)
  [![license](https://img.shields.io/npm/l/@simplyprint/n8n-nodes-simplyprint.svg)](LICENSE.md)

  Community node for [n8n](https://n8n.io) that connects to [SimplyPrint](https://simplyprint.io) - 3D print farm management platform.

  ## What's in the box

  - **1 action node** (`SimplyPrint`) with resource / operation split covering 30+ operations across Printer, Queue, File, Filament, Organization, Custom Field, Print Job, and Webhook — plus a **Custom API Call** escape hatch for endpoints this node does not wrap directly.
  - **1 trigger node** (`SimplyPrint Trigger`) with an Event dropdown covering 15 webhook events (Print Started, Print Finished, Queue Item Added, Filament Assigned, AI Failure Detected, Maintenance Problem Reported, ...). Each event is also surfaced as its own card in the n8n Node Creator.
  - **Dual authentication**: OAuth2 (recommended) or API key. Pick per-connection.

  ## Upload, queue, print

  The hero flow for farm automation is: take a fresh gcode file, drop it on the queue, and start it on a specific printer. Three operations cover it:

  - **File > Upload** adds a binary from the previous node (usually a Read Binary File or HTTP Request) to your SimplyPrint library. Returns a hex string `fileId` from the dedicated `files.simplyprint.io` upload service.
  - **File > Upload and Queue** is the composite shortcut: same upload as above, then adds the resulting file to the print queue with its own set of PRINT_QUEUE custom fields. Set "Start On Printer IDs" (CSV) to also fire a print on each listed printer.
  - **Print Job > Create** wraps `printers/actions/CreateJob`. Pick whether the source is an existing user file or a queue item, add shared PRINT_JOB custom fields (applied to every target), or paste per-printer overrides as JSON into "Individual Custom Fields". Start options and MMS slot mappings are optional JSON fields.

  ### Custom field IDs

  Every custom-field row needs the field's **string UUID**, not the numeric ID. Run **Custom Field > Get Many** once to find the `fieldId` for each field you care about, then paste the UUID into the "Custom Field ID" column of the fixedCollection. The "Type" dropdown controls how n8n coerces the string value before sending (text, number, boolean, date, or raw JSON).

  ### Setting custom field values after the fact

  **Custom Field > Submit Values** writes one or more custom-field values to a list of existing entities (queue items, files, print jobs, filaments, or printers). Pick the category, optionally a sub-category, paste comma-separated entity IDs, and add one row per field you want to set. Old flows that stored a single `customFieldId` + `value` still run via a compatibility shim.

  ## Install

  ### Via n8n UI (self-hosted)

  1. In n8n, open **Settings > Community Nodes**.
  2. Click **Install a community node**.
  3. Enter `@simplyprint/n8n-nodes-simplyprint` and click **Install**.
  4. Restart n8n if prompted.

  Requires `N8N_COMMUNITY_PACKAGES_ENABLED=true` (default in recent n8n versions).

  ### Via npm (manual)

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

  ## Use

  1. In any workflow, search for **SimplyPrint** to add a trigger (e.g. *Print Finished*) or action.
  2. On the node, click **Create Credential**, pick **OAuth2** or **API key**, connect, save.
  3. For OAuth2, you will be redirected to `simplyprint.io` - sign in, pick the account, approve.
  4. For API key: generate the key in **Panel > Settings > API Keys** and paste it along with the numeric Company ID (visible in panel URL: `simplyprint.io/panel/<id>/...`).

  ## Compatibility

  - n8n `>= 1.82.0` (declared as a peerDependency).
  - Node.js `>= 20.15` (set via `engines.node`).
  - No known incompatibilities.

  ## Support

  - **Bug reports, feature requests, questions:** open an issue at <https://github.com/SimplyPrint/n8n-nodes-simplyprint/issues>.
  - **Security reports:** email `contact@simplyprint.io` (we aim to acknowledge within 2 business days).
  - **Response commitment:** non-security issues are triaged within one business week. Urgent issues that block farm automation get same-week attention.
  - **Maintained by:** SimplyPrint ApS. This node is owned by the API team and is shipped from the same release cycle as the SimplyPrint platform.

  ## Resources

  - [Integration page](https://simplyprint.io/integrations/n8n)
  - [Help desk article](https://help.simplyprint.io/en/article/n8n-integration)
  - [SimplyPrint API reference](https://apidocs.simplyprint.io)
  - [Source on GitHub](https://github.com/SimplyPrint/n8n-nodes-simplyprint)
  - [Changelog](CHANGELOG.md)

  ## Contributing

  See [CONTRIBUTING.md](CONTRIBUTING.md) for local development, testing, and release steps.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A community n8n node that connects to SimplyPrint, a 3D print farm management platform, allowing users to trigger workflows on specific events or perform actions like uploading files, queuing prints, and managing custom fields.","capabilities":["Trigger workflow on 15 specific SimplyPrint events (e.g., Print Started, Print Finished, Filament Assigned)","Upload binary files to SimplyPrint library","Add files to the print queue with custom fields","Create new print jobs from user files or queue items","Submit custom field values to existing entities (files, jobs, printers, etc.)","Access 30+ operations across Printer, Queue, File, Filament, Organization, Custom Field, Print Job, and Webhook resources","Support for custom API calls via an escape hatch for unsupported endpoints"],"authentication":"OAuth2 (recommended) or API key","commonUseCases":["Automated 3D print farm management (upload -> queue -> print)","Real-time monitoring of print job status via event triggers","Automated filament assignment and maintenance tracking","Custom data tagging of print jobs and files"],"limitations":["Requires n8n version >= 1.82.0","Requires Node.js >= 20.15","Some operations may require using the 'Custom API Call' escape hatch if not directly wrapped","Custom field IDs must be UUID strings, not numeric IDs"],"relatedNodes":["SimplyPrint","Read Binary File","HTTP Request","Set"]}


node_type: @simplyprint/n8n-nodes-simplyprint.simplyPrint
package_name: @simplyprint/n8n-nodes-simplyprint
display_name: SimplyPrint
description: Monitor and control SimplyPrint print farms - printers, queue, files, filament
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: simplyprint-dev
author_github_url: https://github.com/SimplyPrint/n8n-nodes-simplyprint.git
npm_package_name: @simplyprint/n8n-nodes-simplyprint
npm_version: 0.4.1
community_fetched_at: 2026-07-14T14:40:34.312Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "printer",
      "options": [
        {
          "name": "Custom API Call",
          "value": "customApiCall"
        },
        {
          "name": "Custom Field",
          "value": "customField"
        },
        {
          "name": "Filament",
          "value": "filament"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Organization",
          "value": "organization"
        },
        {
          "name": "Print Job",
          "value": "printJob"
        },
        {
          "name": "Printer",
          "value": "printer"
        },
        {
          "name": "Queue",
          "value": "queue"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Cancel Print",
          "value": "cancel",
          "action": "Cancel the print on a printer",
          "description": "Cancel the in-progress print on a printer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a printer",
          "description": "Retrieve a printer"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many printers",
          "description": "Retrieve a list of printers"
        },
        {
          "name": "Pause Print",
          "value": "pause",
          "action": "Pause the print on a printer",
          "description": "Pause the in-progress print on a printer"
        },
        {
          "name": "Resume Print",
          "value": "resume",
          "action": "Resume the print on a printer",
          "description": "Resume a paused print on a printer"
        },
        {
          "name": "Send G-Code",
          "value": "sendGcode",
          "action": "Send raw gcode lines to a printer",
          "description": "Send raw gcode lines to a printer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "printer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Item",
          "value": "addItem",
          "action": "Add an item to the queue",
          "description": "Add a file to the print queue"
        },
        {
          "name": "Approve Item",
          "value": "approveItem",
          "action": "Approve a queue item",
          "description": "Approve a pending queue item"
        },
        {
          "name": "Deny Item",
          "value": "denyItem",
          "action": "Deny a queue item",
          "description": "Reject a pending queue item"
        },
        {
          "name": "Empty",
          "value": "empty",
          "action": "Empty the queue",
          "description": "Delete all items in the queue or a queue group"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many queue items",
          "description": "Retrieve a list of queue items"
        },
        {
          "name": "Get Many Groups",
          "value": "getAllGroups",
          "action": "Get many queue groups",
          "description": "Retrieve a list of queue groups"
        },
        {
          "name": "Get Many Pending",
          "value": "getAllPending",
          "action": "Get many items awaiting approval",
          "description": "Retrieve a list of items awaiting approval"
        },
        {
          "name": "Move Item",
          "value": "moveItem",
          "action": "Move a queue item",
          "description": "Move a queue item to a new position"
        },
        {
          "name": "Remove Item",
          "value": "removeItem",
          "action": "Remove a queue item",
          "description": "Remove an item from the queue"
        },
        {
          "name": "Revive Item",
          "value": "reviveItem",
          "action": "Revive a queue item",
          "description": "Bring a done item back into the active queue"
        },
        {
          "name": "Update Item",
          "value": "updateItem",
          "action": "Update a queue item",
          "description": "Update the fields on a queue item"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "queue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many files",
          "description": "Retrieve a list of files (optionally filtered by folder or search term)"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move files to another folder",
          "description": "Move one or more files to another folder"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a file",
          "description": "Upload a binary file to SimplyPrint. Returns `fileId` (hex UID) ready to pipe into Queue > Add Item or Print Job > Create."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Assign",
          "value": "assign",
          "action": "Assign a filament to a printer",
          "description": "Assign a filament spool to a printer"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a filament",
          "description": "Retrieve a filament"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many filaments",
          "description": "Retrieve a list of filaments"
        },
        {
          "name": "Unassign",
          "value": "unassign",
          "action": "Unassign a filament from a printer",
          "description": "Remove a filament spool from a printer"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "filament"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrentUser",
      "options": [
        {
          "name": "Get Current User",
          "value": "getCurrentUser",
          "action": "Get the user and account bound to this connection",
          "description": "Retrieve the user and account bound to this connection"
        },
        {
          "name": "Get Many Print History",
          "value": "getAllPrintHistory",
          "action": "Get many completed and failed print jobs",
          "description": "Retrieve a list of completed and failed print jobs"
        },
        {
          "name": "Get Many Tags",
          "value": "getAllTags",
          "action": "Get many tags on the account",
          "description": "Retrieve a list of tags on the account"
        },
        {
          "name": "Get Statistics",
          "value": "getStatistics",
          "action": "Get account wide print statistics",
          "description": "Retrieve account-wide print statistics"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "organization"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many custom field definitions",
          "description": "Retrieve a list of custom-field definitions"
        },
        {
          "name": "Submit Values",
          "value": "setValues",
          "action": "Submit custom field values for one or more entities",
          "description": "Write one or more custom-field values to a list of entities (queue items, files, print jobs, ...)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customField"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Start a print on one or more printers",
          "description": "Wraps printers/actions/CreateJob. File source can be an uploaded user file or a queue item."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "printJob"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "Custom API Call",
          "value": "call",
          "action": "Call any SimplyPrint API endpoint",
          "description": "Escape hatch for endpoints this node does not wrap directly. Path is relative to the company (e.g. \"printers/Get\")."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customApiCall"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Cancel Print",
      "value": "cancel",
      "action": "Cancel the print on a printer",
      "description": "Cancel the in-progress print on a printer",
      "resource": "printer"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a printer",
      "description": "Retrieve a printer",
      "resource": "printer"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many printers",
      "description": "Retrieve a list of printers",
      "resource": "printer"
    },
    {
      "name": "Pause Print",
      "value": "pause",
      "action": "Pause the print on a printer",
      "description": "Pause the in-progress print on a printer",
      "resource": "printer"
    },
    {
      "name": "Resume Print",
      "value": "resume",
      "action": "Resume the print on a printer",
      "description": "Resume a paused print on a printer",
      "resource": "printer"
    },
    {
      "name": "Send G-Code",
      "value": "sendGcode",
      "action": "Send raw gcode lines to a printer",
      "description": "Send raw gcode lines to a printer",
      "resource": "printer"
    },
    {
      "name": "Add Item",
      "value": "addItem",
      "action": "Add an item to the queue",
      "description": "Add a file to the print queue",
      "resource": "queue"
    },
    {
      "name": "Approve Item",
      "value": "approveItem",
      "action": "Approve a queue item",
      "description": "Approve a pending queue item",
      "resource": "queue"
    },
    {
      "name": "Deny Item",
      "value": "denyItem",
      "action": "Deny a queue item",
      "description": "Reject a pending queue item",
      "resource": "queue"
    },
    {
      "name": "Empty",
      "value": "empty",
      "action": "Empty the queue",
      "description": "Delete all items in the queue or a queue group",
      "resource": "queue"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many queue items",
      "description": "Retrieve a list of queue items",
      "resource": "queue"
    },
    {
      "name": "Get Many Groups",
      "value": "getAllGroups",
      "action": "Get many queue groups",
      "description": "Retrieve a list of queue groups",
      "resource": "queue"
    },
    {
      "name": "Get Many Pending",
      "value": "getAllPending",
      "action": "Get many items awaiting approval",
      "description": "Retrieve a list of items awaiting approval",
      "resource": "queue"
    },
    {
      "name": "Move Item",
      "value": "moveItem",
      "action": "Move a queue item",
      "description": "Move a queue item to a new position",
      "resource": "queue"
    },
    {
      "name": "Remove Item",
      "value": "removeItem",
      "action": "Remove a queue item",
      "description": "Remove an item from the queue",
      "resource": "queue"
    },
    {
      "name": "Revive Item",
      "value": "reviveItem",
      "action": "Revive a queue item",
      "description": "Bring a done item back into the active queue",
      "resource": "queue"
    },
    {
      "name": "Update Item",
      "value": "updateItem",
      "action": "Update a queue item",
      "description": "Update the fields on a queue item",
      "resource": "queue"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many files",
      "description": "Retrieve a list of files (optionally filtered by folder or search term)",
      "resource": "file"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move files to another folder",
      "description": "Move one or more files to another folder",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a file",
      "description": "Upload a binary file to SimplyPrint. Returns `fileId` (hex UID) ready to pipe into Queue > Add Item or Print Job > Create.",
      "resource": "file"
    },
    {
      "name": "Assign",
      "value": "assign",
      "action": "Assign a filament to a printer",
      "description": "Assign a filament spool to a printer",
      "resource": "filament"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a filament",
      "description": "Retrieve a filament",
      "resource": "filament"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many filaments",
      "description": "Retrieve a list of filaments",
      "resource": "filament"
    },
    {
      "name": "Unassign",
      "value": "unassign",
      "action": "Unassign a filament from a printer",
      "description": "Remove a filament spool from a printer",
      "resource": "filament"
    },
    {
      "name": "Get Current User",
      "value": "getCurrentUser",
      "action": "Get the user and account bound to this connection",
      "description": "Retrieve the user and account bound to this connection",
      "resource": "organization"
    },
    {
      "name": "Get Many Print History",
      "value": "getAllPrintHistory",
      "action": "Get many completed and failed print jobs",
      "description": "Retrieve a list of completed and failed print jobs",
      "resource": "organization"
    },
    {
      "name": "Get Many Tags",
      "value": "getAllTags",
      "action": "Get many tags on the account",
      "description": "Retrieve a list of tags on the account",
      "resource": "organization"
    },
    {
      "name": "Get Statistics",
      "value": "getStatistics",
      "action": "Get account wide print statistics",
      "description": "Retrieve account-wide print statistics",
      "resource": "organization"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many custom field definitions",
      "description": "Retrieve a list of custom-field definitions",
      "resource": "customField"
    },
    {
      "name": "Submit Values",
      "value": "setValues",
      "action": "Submit custom field values for one or more entities",
      "description": "Write one or more custom-field values to a list of entities (queue items, files, print jobs, ...)",
      "resource": "customField"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Start a print on one or more printers",
      "description": "Wraps printers/actions/CreateJob. File source can be an uploaded user file or a queue item.",
      "resource": "printJob"
    },
    {
      "name": "Custom API Call",
      "value": "call",
      "action": "Call any SimplyPrint API endpoint",
      "description": "Escape hatch for endpoints this node does not wrap directly. Path is relative to the company (e.g. \"printers/Get\").",
      "resource": "customApiCall"
    }
  ]

npm_readme:
  # n8n-nodes-simplyprint

  [![npm version](https://img.shields.io/npm/v/@simplyprint/n8n-nodes-simplyprint.svg)](https://www.npmjs.com/package/@simplyprint/n8n-nodes-simplyprint)
  [![license](https://img.shields.io/npm/l/@simplyprint/n8n-nodes-simplyprint.svg)](LICENSE.md)

  Community node for [n8n](https://n8n.io) that connects to [SimplyPrint](https://simplyprint.io) - 3D print farm management platform.

  ## What's in the box

  - **1 action node** (`SimplyPrint`) with resource / operation split covering 30+ operations across Printer, Queue, File, Filament, Organization, Custom Field, Print Job, and Webhook — plus a **Custom API Call** escape hatch for endpoints this node does not wrap directly.
  - **1 trigger node** (`SimplyPrint Trigger`) with an Event dropdown covering 15 webhook events (Print Started, Print Finished, Queue Item Added, Filament Assigned, AI Failure Detected, Maintenance Problem Reported, ...). Each event is also surfaced as its own card in the n8n Node Creator.
  - **Dual authentication**: OAuth2 (recommended) or API key. Pick per-connection.

  ## Upload, queue, print

  The hero flow for farm automation is: take a fresh gcode file, drop it on the queue, and start it on a specific printer. Three operations cover it:

  - **File > Upload** adds a binary from the previous node (usually a Read Binary File or HTTP Request) to your SimplyPrint library. Returns a hex string `fileId` from the dedicated `files.simplyprint.io` upload service.
  - **File > Upload and Queue** is the composite shortcut: same upload as above, then adds the resulting file to the print queue with its own set of PRINT_QUEUE custom fields. Set "Start On Printer IDs" (CSV) to also fire a print on each listed printer.
  - **Print Job > Create** wraps `printers/actions/CreateJob`. Pick whether the source is an existing user file or a queue item, add shared PRINT_JOB custom fields (applied to every target), or paste per-printer overrides as JSON into "Individual Custom Fields". Start options and MMS slot mappings are optional JSON fields.

  ### Custom field IDs

  Every custom-field row needs the field's **string UUID**, not the numeric ID. Run **Custom Field > Get Many** once to find the `fieldId` for each field you care about, then paste the UUID into the "Custom Field ID" column of the fixedCollection. The "Type" dropdown controls how n8n coerces the string value before sending (text, number, boolean, date, or raw JSON).

  ### Setting custom field values after the fact

  **Custom Field > Submit Values** writes one or more custom-field values to a list of existing entities (queue items, files, print jobs, filaments, or printers). Pick the category, optionally a sub-category, paste comma-separated entity IDs, and add one row per field you want to set. Old flows that stored a single `customFieldId` + `value` still run via a compatibility shim.

  ## Install

  ### Via n8n UI (self-hosted)

  1. In n8n, open **Settings > Community Nodes**.
  2. Click **Install a community node**.
  3. Enter `@simplyprint/n8n-nodes-simplyprint` and click **Install**.
  4. Restart n8n if prompted.

  Requires `N8N_COMMUNITY_PACKAGES_ENABLED=true` (default in recent n8n versions).

  ### Via npm (manual)

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

  ## Use

  1. In any workflow, search for **SimplyPrint** to add a trigger (e.g. *Print Finished*) or action.
  2. On the node, click **Create Credential**, pick **OAuth2** or **API key**, connect, save.
  3. For OAuth2, you will be redirected to `simplyprint.io` - sign in, pick the account, approve.
  4. For API key: generate the key in **Panel > Settings > API Keys** and paste it along with the numeric Company ID (visible in panel URL: `simplyprint.io/panel/<id>/...`).

  ## Compatibility

  - n8n `>= 1.82.0` (declared as a peerDependency).
  - Node.js `>= 20.15` (set via `engines.node`).
  - No known incompatibilities.

  ## Support

  - **Bug reports, feature requests, questions:** open an issue at <https://github.com/SimplyPrint/n8n-nodes-simplyprint/issues>.
  - **Security reports:** email `contact@simplyprint.io` (we aim to acknowledge within 2 business days).
  - **Response commitment:** non-security issues are triaged within one business week. Urgent issues that block farm automation get same-week attention.
  - **Maintained by:** SimplyPrint ApS. This node is owned by the API team and is shipped from the same release cycle as the SimplyPrint platform.

  ## Resources

  - [Integration page](https://simplyprint.io/integrations/n8n)
  - [Help desk article](https://help.simplyprint.io/en/article/n8n-integration)
  - [SimplyPrint API reference](https://apidocs.simplyprint.io)
  - [Source on GitHub](https://github.com/SimplyPrint/n8n-nodes-simplyprint)
  - [Changelog](CHANGELOG.md)

  ## Contributing

  See [CONTRIBUTING.md](CONTRIBUTING.md) for local development, testing, and release steps.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"A community n8n node for monitoring and controlling SimplyPrint 3D print farms, enabling automation of file uploads, queue management, and print job creation.","capabilities":["Monitor printers, queues, files, and filament status","Upload G-code files to SimplyPrint library","Add files to print queue with custom fields","Create print jobs from user files or queue items","Set custom field values on existing entities (queue items, files, print jobs, filaments, printers)","Receive webhook triggers for 15+ events (Print Started, Print Finished, AI Failure, Maintenance Problems)","Execute custom API calls via an escape hatch for unsupported endpoints","Support per-printer overrides and MMS slot mappings"],"authentication":"OAuth2 (recommended) or API key","commonUseCases":["Automate 3D print workflow by uploading G-code files and starting prints","Monitor print job status and trigger alerts on failures or maintenance issues","Automatically assign filaments to print jobs","Manage custom metadata on print jobs and files"],"limitations":["Requires n8n version >= 1.82.0","Requires Node.js >= 20.15","Some operations require knowing specific custom field UUIDs rather than numeric IDs"],"relatedNodes":["Read Binary File","HTTP Request","Webhook","Function","Code"]}


node_type: n8n-nodes-romulus.romulus
package_name: n8n-nodes-romulus
display_name: Romulus
description: Consume Romulus API
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: npm-romulus
author_github_url: https://github.com/integrations-romulus/
npm_package_name: n8n-nodes-romulus
npm_version: 1.4.6
community_fetched_at: 2026-07-14T14:40:34.313Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-romulus

  **n8n-nodes-romulus** is an n8n community node that enables you to interact with the **Romulus API** within your n8n workflows.

  [Romulus](https://romulus.live) is a communication automation platform that delivers an automated phone call experience. It provides APIs to manage robocalls, AI agents, and messaging bots for seamless communication workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform that lets you connect services and automate tasks visually.

  ---

  ## Table of Contents

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

  ---

  ## Installation

  To install this community node, follow the [n8n community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ---

  ## Operations

  This node currently supports the following Romulus operations:

  - **Calls**
    - List or initiate robocalls.
    
  - **Users / AI Agents**
    - Start AI agents or calls.
    - List available agents.
    
  - **Messenger**
    - List WhatsApp bots.
    - Send WhatsApp templated messages via bots.
    
  - **Triggers**
    - Start workflows on real-time Romulus events such as:
      - robocall started
      - agentcall completed
      - agent action completed

  ---

  ## Credentials

  To use this node, you'll need a **Romulus API key**.

  1. Sign in to your [Romulus](https://romulus.live) account.
  2. Follow the instructions at [How to use the AI Agent with third-party software via API](https://help.romulus.live/en/articles/12547432-how-to-use-the-ai-agent-with-third-party-software-via-api) to generate your API key.
  3. In **n8n**, navigate to **Credentials > Create New > Romulus API** and enter your API key.
  4. n8n will automatically test the connection.

  ---

  ## Compatibility

  - Tested with **n8n v1.94.1**
  - No known incompatibilities with other versions.

  ---

  ## Usage

  - Use the **Romulus Trigger** node to initiate workflows based on real-time events (e.g., when a robocall starts or an agent completes a call).
  - Use resource nodes (Calls, Agents, Messenger) to manage Romulus operations directly.
  - For webhook-based triggers to work, ensure your n8n instance is accessible from the internet (e.g., use [ngrok](https://ngrok.com/) during development).

  ---

  ## Resources

  - 📘 [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)  
  - 📚 [Romulus API Documentation](https://developer.romulus.live)

  ---

  ## Version History

  - **1.0.0**: Initial release with support for:
    - Robocalls  
    - AI agents  
    - WhatsApp messaging  
    - Webhook-based event triggers

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with the Romulus API to automate communication workflows including robocalls, AI agents, and WhatsApp messaging.","capabilities":["List or initiate robocalls","Start AI agents or calls","List available AI agents","List WhatsApp bots","Send WhatsApp templated messages via bots","Trigger workflows on real-time events (robocall started, agentcall completed, agent action completed)"],"authentication":"API key required","commonUseCases":["Automated robocall management","AI-powered customer service calls","WhatsApp bot messaging automation","Event-driven workflow triggers for communication events"],"limitations":["Webhook-based triggers require external accessibility (e.g., ngrok) during development","No known compatibility with n8n versions other than v1.94.1 (though no incompatibilities noted)"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-http-request"]}


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

updated_at: 2026-07-14 14:40:34
author_name: npm-romulus
author_github_url: https://github.com/integrations-romulus/
npm_package_name: n8n-nodes-romulus
npm_version: 1.4.6
community_fetched_at: 2026-07-14T14:40:34.314Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-romulus

  **n8n-nodes-romulus** is an n8n community node that enables you to interact with the **Romulus API** within your n8n workflows.

  [Romulus](https://romulus.live) is a communication automation platform that delivers an automated phone call experience. It provides APIs to manage robocalls, AI agents, and messaging bots for seamless communication workflows.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform that lets you connect services and automate tasks visually.

  ---

  ## Table of Contents

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

  ---

  ## Installation

  To install this community node, follow the [n8n community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ---

  ## Operations

  This node currently supports the following Romulus operations:

  - **Calls**
    - List or initiate robocalls.
    
  - **Users / AI Agents**
    - Start AI agents or calls.
    - List available agents.
    
  - **Messenger**
    - List WhatsApp bots.
    - Send WhatsApp templated messages via bots.
    
  - **Triggers**
    - Start workflows on real-time Romulus events such as:
      - robocall started
      - agentcall completed
      - agent action completed

  ---

  ## Credentials

  To use this node, you'll need a **Romulus API key**.

  1. Sign in to your [Romulus](https://romulus.live) account.
  2. Follow the instructions at [How to use the AI Agent with third-party software via API](https://help.romulus.live/en/articles/12547432-how-to-use-the-ai-agent-with-third-party-software-via-api) to generate your API key.
  3. In **n8n**, navigate to **Credentials > Create New > Romulus API** and enter your API key.
  4. n8n will automatically test the connection.

  ---

  ## Compatibility

  - Tested with **n8n v1.94.1**
  - No known incompatibilities with other versions.

  ---

  ## Usage

  - Use the **Romulus Trigger** node to initiate workflows based on real-time events (e.g., when a robocall starts or an agent completes a call).
  - Use resource nodes (Calls, Agents, Messenger) to manage Romulus operations directly.
  - For webhook-based triggers to work, ensure your n8n instance is accessible from the internet (e.g., use [ngrok](https://ngrok.com/) during development).

  ---

  ## Resources

  - 📘 [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)  
  - 📚 [Romulus API Documentation](https://developer.romulus.live)

  ---

  ## Version History

  - **1.0.0**: Initial release with support for:
    - Robocalls  
    - AI agents  
    - WhatsApp messaging  
    - Webhook-based event triggers

ai_documentation_summary:
  {"purpose":"The Romulus Trigger node initiates n8n workflows when specific real-time events occur on the Romulus communication automation platform, such as robocalls starting or agent calls completing.","capabilities":["List or initiate robocalls","Start AI agents or calls","List available AI agents","List WhatsApp bots","Send WhatsApp templated messages via bots","Trigger workflows on robocall started events","Trigger workflows on agentcall completed events","Trigger workflows on agent action completed events"],"authentication":"API key required","commonUseCases":["Automate responses when a robocall is initiated","Start AI agents based on incoming calls","Send WhatsApp messages triggered by Romulus events","Orchestrate communication workflows using real-time event detection"],"limitations":["Webhook-based triggers require the n8n instance to be publicly accessible (e.g., using ngrok during development)"],"relatedNodes":["Romulus Calls","Romulus AI Agents","Romulus Messenger","Romulus Webhook"]}


node_type: @biztory/n8n-nodes-autom8-tableau-action-trigger.autom8TableauActionTrigger
package_name: @biztory/n8n-nodes-autom8-tableau-action-trigger
display_name: Autom8 Tableau - Data Action Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: timothyvermeirenbiztory
author_github_url: https://github.com/biztory/n8n-nodes-autom8-tableau-action-trigger.git
npm_package_name: @biztory/n8n-nodes-autom8-tableau-action-trigger
npm_version: 0.5.7
community_fetched_at: 2026-07-14T14:40:34.316Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Receives data from the Autom8 Tableau dashboard extension, and gets it ready for downstream processing.

npm_readme:
  # @biztory/n8n-nodes-autom8-tableau-action-trigger

  n8n community node that receives data from the **Autom8** Tableau dashboard extension via webhook and surfaces it as workflow input. Pair it with the Autom8 Extension on a Tableau dashboard to trigger n8n workflows from user actions on the viz.

  ℹ️ Full documentation: https://biztory.atlassian.net/wiki/spaces/A8/pages/1123254273/n8n+Node

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation, and search for `@biztory/n8n-nodes-autom8-tableau-action-trigger`.

  ## Usage

  1. Add the **Autom8 Tableau - Data Action Trigger** node to a new workflow.
  2. Pick a unique value for **Webhook Path** (e.g. `autom8-customer-satisfaction`).
  3. Copy the resulting webhook URL into the Autom8 Extension on your Tableau dashboard.

  For a step-by-step introduction, see the [Getting Started page](https://biztory.atlassian.net/wiki/spaces/A8/pages/1123090433/Getting+Started).

  ## Compatibility

  Tested and supported starting with n8n version **2.13.3**.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Full Autom8 documentation](https://biztory.atlassian.net/wiki/spaces/A8/pages/1123254273/n8n+Node)
  - Main repository: https://github.com/biztory/n8n-nodes-autom8

ai_documentation_summary:
  {"purpose":"Receives data from the Autom8 Tableau dashboard extension via webhook and prepares it for downstream n8n workflow processing.","capabilities":["Receives data via webhook","Triggers n8n workflows from Tableau dashboard user actions","Configurable webhook path","Surfaces data as workflow input"],"authentication":"None","commonUseCases":["Trigger n8n workflows from Tableau dashboard interactions","Process customer satisfaction data from Autom8","Automate actions based on Tableau viz events"],"limitations":["Requires Autom8 Extension installed on Tableau dashboard","Requires n8n version 2.13.3 or higher","Requires manual configuration of unique webhook path"],"relatedNodes":["Webhook node","Autom8 Tableau Extension"]}


node_type: n8n-nodes-renderpix.renderPix
package_name: n8n-nodes-renderpix
display_name: RenderPix
description: Convert HTML to pixel-perfect images and capture URL screenshots
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ozgurds
author_github_url: https://github.com/ozgurdogus/renderpixn8n.git
npm_package_name: n8n-nodes-renderpix
npm_version: 1.1.0
community_fetched_at: 2026-07-14T14:40:34.317Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "renderHtml",
      "options": [
        {
          "name": "Render HTML",
          "value": "renderHtml",
          "action": "Render HTML to image",
          "description": "Convert an HTML string to an image"
        },
        {
          "name": "Render Batch",
          "value": "renderBatch",
          "action": "Render HTML batch",
          "description": "Render multiple HTML items in a single parallel batch call (Starter: 10 items, Pro/Scale: 50 items)"
        },
        {
          "name": "Screenshot URL",
          "value": "screenshotUrl",
          "action": "Screenshot a URL",
          "description": "Capture a screenshot of a public URL"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Render HTML",
      "value": "renderHtml",
      "action": "Render HTML to image",
      "description": "Convert an HTML string to an image"
    },
    {
      "name": "Render Batch",
      "value": "renderBatch",
      "action": "Render HTML batch",
      "description": "Render multiple HTML items in a single parallel batch call (Starter: 10 items, Pro/Scale: 50 items)"
    },
    {
      "name": "Screenshot URL",
      "value": "screenshotUrl",
      "action": "Screenshot a URL",
      "description": "Capture a screenshot of a public URL"
    }
  ]

npm_readme:
  # n8n-nodes-renderpix

  [n8n](https://n8n.io) community node for **[RenderPix](https://renderpix.dev)** — convert HTML to pixel-perfect images and capture URL screenshots directly inside your n8n workflows.

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-renderpix.svg)](https://www.npmjs.com/package/n8n-nodes-renderpix)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)

  ---

  ## Features

  - **Render HTML → Image**: Turn any HTML string into a PNG, JPEG, or WebP image
  - **Screenshot URL**: Capture pixel-perfect screenshots of any public webpage
  - **Retina / High-DPI**: 1×, 2×, 3× device scale for sharp outputs
  - **CSS Selector crop**: Capture only a specific element on the page (Pro+)
  - **Full-page capture**: Render the entire scrollable page (Pro+)
  - **Three return modes**: Binary file, Base64 string, or Data URL
  - **Credential test**: Validate your API key directly from n8n's credential settings

  ---

  ## Installation

  ### Via n8n Community Nodes (Recommended)

  1. In n8n, go to **Settings → Community Nodes**
  2. Click **Install**
  3. Enter: `n8n-nodes-renderpix`
  4. Click **Install** and restart n8n

  ### Manual (Self-hosted n8n)

  ```bash
  cd ~/.n8n/custom
  npm install n8n-nodes-renderpix
  ```

  Restart n8n after installation.

  ---

  ## Setup

  ### 1. Get an API Key

  Sign up at [renderpix.dev](https://renderpix.dev) and copy your API key from the dashboard. Keys start with `rpx_`.

  ### 2. Add Credential in n8n

  1. Go to **Credentials → New Credential**
  2. Search for **RenderPix API**
  3. Paste your API key
  4. (Optional) Set a custom Base URL if self-hosted
  5. Click **Save** — n8n will test the connection automatically

  ---

  ## Usage Examples

  ### Example 1: Generate an OG Image (1200×630)

  ```html
  <div style="
    width: 1200px; height: 630px;
    background: linear-gradient(135deg, #0066ff, #00ccff);
    display: flex; align-items: center; justify-content: center;
    font-family: sans-serif; color: white;
  ">
    <div style="text-align: center;">
      <h1 style="font-size: 64px; margin: 0;">{{ $json.title }}</h1>
      <p style="font-size: 28px; opacity: 0.8;">renderpix.dev</p>
    </div>
  </div>
  ```

  - **Width**: 1200, **Height**: 630, **Format**: PNG, **Return As**: Binary File

  ### Example 2: Instagram Carousel Slide (1080×1350)

  ```html
  <div style="width:1080px;height:1350px;background:#fff;padding:80px;font-family:sans-serif;">
    <h2 style="font-size:72px;color:#0066ff;">{{ $json.headline }}</h2>
    <p style="font-size:36px;color:#333;line-height:1.6;">{{ $json.body }}</p>
  </div>
  ```

  - **Width**: 1080, **Height**: 1350, **Scale**: 2× (Retina)

  ### Example 3: Certificate Generator

  ```html
  <div style="width:1200px;height:850px;border:8px solid gold;padding:60px;text-align:center;font-family:Georgia,serif;">
    <h1 style="font-size:56px;color:#1a1a1a;">Certificate of Completion</h1>
    <p style="font-size:32px;margin:40px 0;">This certifies that</p>
    <h2 style="font-size:48px;color:#0066ff;">{{ $json.name }}</h2>
    <p style="font-size:24px;color:#666;">has completed <strong>{{ $json.course }}</strong></p>
  </div>
  ```

  ### Example 4: URL Screenshot

  Set **Operation** to **Screenshot URL**, enter the target URL. Combine with an HTTP Request node or Webhook to screenshot dynamic pages.

  ---

  ## Node Parameters

  ### Operation: Render HTML

  | Parameter | Type | Default | Description |
  |-----------|------|---------|-------------|
  | HTML | String | — | Raw HTML to render |
  | Width | Number | 1280 | Viewport width in px |
  | Height | Number | 720 | Viewport height in px |
  | Format | PNG / JPEG / WebP | PNG | Output format |
  | Quality | 1–100 | 90 | JPEG/WebP compression (ignored for PNG) |
  | Device Scale (DPR) | 1× / 2× / 3× | 1× | Retina multiplier |
  | CSS Selector | String | — | Crop to element (Pro+) |
  | Full Page | Boolean | false | Capture full scroll height (Pro+) |
  | Return As | Binary / Base64 / Data URL | Binary | Output format |
  | Binary Property Name | String | data | n8n binary field name (binary mode only) |

  ### Operation: Screenshot URL

  Same parameters as above, but with **URL** instead of **HTML**.

  ---

  ## Plan Limits

  | Feature | Free | Starter | Pro | Scale |
  |---------|------|---------|-----|-------|
  | Renders/month | 100 | 2,000 | 10,000 | 100,000 |
  | Max resolution | 1280×720 | 1920×1080 | 4K | 4K |
  | Formats | PNG | PNG, JPEG | All | All |
  | Scale (DPR) | 1× | 1×, 2× | 1×–3× | 1×–3× |
  | Full page | ✗ | ✗ | ✓ | ✓ |
  | CSS Selector | ✗ | ✗ | ✓ | ✓ |
  | SLA | — | — | 99.9% | 99.9% |

  ---

  ## Common Workflows

  - **Social media automation**: Generate unique images per post from a spreadsheet or Airtable
  - **Dynamic OG images**: Trigger on CMS publish webhook → render → upload to CDN
  - **Certificate generation**: Form submit → render HTML certificate → email as PDF attachment
  - **Batch rendering**: Loop over a list of items and render an image for each
  - **Monitoring screenshots**: Scheduled screenshots of dashboards or competitor pages

  ---

  ## Troubleshooting

  **401 Unauthorized**: Check your API key in credentials. Keys must start with `rpx_`.

  **402 Usage Limit**: You've reached your plan's monthly render limit. Upgrade at [renderpix.dev/pricing](https://renderpix.dev/pricing).

  **Image appears pixelated**: Enable **Device Scale (DPR) 2×** for retina quality.

  **External fonts/CSS not loading**: Use inline styles or embed CSS in a `<style>` tag inside your HTML.

  **Node not appearing in n8n**: Restart n8n after installation. Clear `~/.n8n/` cache if needed.

  ---

  ## Support

  - **Docs**: [renderpix.dev/docs.html](https://renderpix.dev/docs.html)
  - **Issues**: [GitHub Issues](https://github.com/renderpix/n8n-nodes-renderpix/issues)
  - **Email**: support@renderpix.dev

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Converts HTML strings into pixel-perfect images or captures screenshots of public URLs directly within n8n workflows.","capabilities":["Render HTML to PNG, JPEG, or WebP images","Capture screenshots of public web URLs","Support for 1×, 2×, and 3× device scale (Retina)","CSS selector cropping to specific page elements","Full-page capture of scrollable content","Return results as Binary file, Base64 string, or Data URL"],"authentication":"API key required (must start with 'rpx_')","commonUseCases":["Generating social media posts and OG images","Creating dynamic certificates from form submissions","Monitoring and capturing competitor or dashboard screenshots","Batch rendering images from spreadsheets or Airtable"],"limitations":["Free plan limited to 100 renders/month with 1280×720 max resolution","CSS selector cropping and full-page capture require Pro plan","External fonts and CSS may not load without inline styles or embedded CSS","402 Usage Limit error occurs when reaching plan's monthly render quota"],"relatedNodes":["HTTP Request","Webhook","Binary File","Base64"]}


node_type: @attachmentav/n8n-nodes-attachmentav.attachmentAV
package_name: @attachmentav/n8n-nodes-attachmentav
display_name: AttachmentAV
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: andreaswittig
author_github_url: https://github.com/widdix/attachmentav-n8n.git
npm_package_name: @attachmentav/n8n-nodes-attachmentav
npm_version: 0.4.2
community_fetched_at: 2026-07-14T14:40:34.318Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Scan your files and attachments stored in the cloud for viruses, worms, and trojans. attachmentAV detects malware in real-time.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "scan",
      "options": [
        {
          "name": "Scan",
          "value": "scan"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "scanAFile",
      "options": [
        {
          "name": "Scan a File",
          "value": "scanAFile",
          "action": "Scan a File for Viruses/Malware"
        },
        {
          "name": "Scan a URL",
          "value": "scanAUrl",
          "action": "Scan a URL for Viruses/Malware"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scan"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scan a File",
      "value": "scanAFile",
      "action": "Scan a File for Viruses/Malware",
      "resource": "scan"
    },
    {
      "name": "Scan a URL",
      "value": "scanAUrl",
      "action": "Scan a URL for Viruses/Malware",
      "resource": "scan"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # @attachmentav/n8n-nodes-attachmentav

  This is an n8n community node. It lets interact with official API of [attachmentAV](https://attachmentav.com/)

  This package contains nodes to scan a file or URL for malware and viruses.

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

  - [Installation](#installation)
  - [Credentials](#credentials)
  - [Usage](#usage)

  ## Installation

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

  The npm package name is [@attachmentav/n8n-nodes-attachmentav](https://www.npmjs.com/package/@attachmentav/n8n-nodes-attachmentav).

  ## Credentials

  This n8n community node requires an attachmentAV subscription and API key: [Get API key](https://attachmentav.com/subscribe/n8n/).

  ## Usage

  ### "Scan a File" node

  - Add the AttachmentAV node to your workflow
  - Configure your attachmentAV API credentials
  - Set Resource to "Scan" and Operation to "Scan a File"
  - Connect a node that provides binary data (e.g. a file download node) to the AttachmentAV node
  - Execute the workflow to scan the file for viruses and malware

  ### "Scan a URL" node

  - Add the AttachmentAV node to your workflow
  - Configure your attachmentAV API credentials
  - Set Resource to "Scan" and Operation to "Scan a URL"
  - Enter the URL of the file you want to scan
  - Execute the workflow to scan the URL target for viruses and malware

ai_documentation_summary:
  {"purpose":"This n8n community node scans files or URLs for malware, viruses, worms, and trojans using the attachmentAV API.","capabilities":["Scan uploaded files for malware","Scan URLs for malicious content","Real-time malware detection","Integration with binary data nodes"],"authentication":"API key required (subscription needed)","commonUseCases":["Automated file safety checks before deployment","Real-time URL safety monitoring","Secure file upload workflows","Malware detection in automated downloads"],"limitations":["Requires active subscription and API key from attachmentAV","Limited to file or URL scanning operations"],"relatedNodes":["Binary Data","HTTP Request","File Download","Webhook"]}


node_type: @biztory/n8n-nodes-autom8-tableau-alert-trigger.autom8TableauAlertTrigger
package_name: @biztory/n8n-nodes-autom8-tableau-alert-trigger
display_name: Autom8 Tableau - Data Alert Trigger
description: Monitors data in a Tableau view or datasource on a schedule and fires when a condition is met.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: timothyvermeirenbiztory
author_github_url: https://github.com/biztory/n8n-nodes-autom8-tableau-alert-trigger.git
npm_package_name: @biztory/n8n-nodes-autom8-tableau-alert-trigger
npm_version: 0.5.8
community_fetched_at: 2026-07-14T14:40:34.319Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # @biztory/n8n-nodes-autom8-tableau-alert-trigger

  n8n community node that polls a **Tableau** view or published datasource on a schedule and fires a workflow when a configured condition is met (any rows returned, row count threshold, etc.).

  📚 Full documentation: https://biztory.atlassian.net/wiki/spaces/A8/pages/1123254273/n8n+Node
  ℹ️ More information: https://autom8.biztory.com

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation, and search for `@biztory/n8n-nodes-autom8-tableau-alert-trigger`.

  ## Authentication

  This node authenticates using a **Tableau Connected App** (Direct Trust). Connected Apps let a service account sign JWT tokens instead of using a stored password.

  ### 1. Create a Connected App in Tableau

  1. In Tableau Cloud or Tableau Server, go to **Settings → Connected Apps**.
  2. Click **New Connected App → Direct Trust**.
  3. Give it a name (e.g. *n8n integration*) and click **Save**.
  4. Open the Connected App and click **Generate New Secret**.
  5. Copy and store the **Client ID**, **Secret ID**, and **Secret Value** — the secret value is only shown once.

  ### 2. Configure the credential in n8n

  Add a new **Autom8 Tableau Connected App** credential and fill in the following fields:

  | Field | Description |
  |---|---|
  | **Server URL** | Base URL of your Tableau instance, e.g. `https://prod-useast1.online.tableau.com` |
  | **Site Content URL** | The site name that appears in your Tableau URLs. Leave empty for the Default site. |
  | **API Version** | Tableau REST API version, e.g. `3.23`. Check your Tableau release notes for the supported version. |
  | **Client ID** | From the Connected App overview page. |
  | **Secret ID** | From the generated secret. |
  | **Secret Value** | From the generated secret (shown only at creation time). |
  | **Username** | The Tableau username (email) the node will impersonate when querying data. |
  | **Scopes** | Space-separated JWT scopes. Use `tableau:views:download` for the View source, `tableau:viz_data_service:read` for the Datasource source, or both. |

  ## Usage

  1. Add the **Autom8 Tableau - Data Alert Trigger** node to a new workflow.
  2. Select the credential you created above.
  3. Pick a **Source** (View or Datasource) and a **Condition** (Any Rows Returned or Row Count Threshold).
  4. The node polls on n8n's configured polling interval and emits items whenever the condition is met.

  ### Finding a View ID or Datasource ID

  The **View ID** and **Datasource ID** fields expect the object's LUID — the UUID-style identifier visible in the Tableau REST API and in the object's URL on Tableau Server/Cloud.

  ## Example: alert when open support tickets exceed a threshold

  **Scenario**: A Tableau view is pre-filtered to show only open support tickets. The workflow should fire and post a Slack message whenever that count exceeds 50.

  **Trigger node configuration:**

  | Setting | Value |
  |---|---|
  | Source | View |
  | View ID | *(LUID of your "Open Tickets" view)* |
  | Condition | Row Count Threshold |
  | Operator | > (Greater Than) |
  | Threshold | `50` |
  | Emit | Single Summary Item |

  **The trigger emits one item** with the shape:

  ```json
  {
    "row_count": 63,
    "triggered_at": "2025-06-01T09:15:00.000Z",
    "source": "view",
    "rows": [ ... ]
  }
  ```

  Connect a **Slack** node after the trigger and reference `{{ $json.row_count }}` in the message body:

  > ⚠️ *63 open support tickets* — threshold of 50 exceeded. [View in Tableau →]

  ## Compatibility

  Tested and supported starting with n8n version **2.18.5**.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Full Autom8 documentation](https://biztory.atlassian.net/wiki/spaces/A8/pages/1123254273/n8n+Node)
  - [Tableau Connected Apps reference](https://help.tableau.com/current/online/en-us/connected_apps_direct.htm)
  - Main repository: https://github.com/biztory/n8n-nodes-autom8

ai_documentation_summary:
  {"purpose":"Monitors Tableau views or published datasources on a schedule and triggers a workflow when specific data conditions are met.","capabilities":["Poll Tableau views or datasources at configured intervals","Check for any rows returned in a query","Evaluate row count against a threshold","Support custom operators (e.g., Greater Than, Less Than)","Return detailed item data including row count, timestamp, and raw rows"],"authentication":"Tableau Connected App (Direct Trust) using Client ID, Secret ID, Secret Value, and JWT scopes","commonUseCases":["Alert when support ticket count exceeds a threshold","Monitor inventory levels in real-time","Trigger notifications when data anomalies are detected","Automate reporting based on data availability"],"limitations":["Requires Tableau Connected App setup with Direct Trust authentication","Requires manual configuration of View ID or Datasource ID (LUID)","Compatible only with n8n version 2.18.5 and above","Polling is server-side; does not support real-time streaming"],"relatedNodes":["n8n Slack Node","n8n HTTP Request Node","n8n Email Node","n8n Code Node"]}


node_type: @alephantai/n8n-nodes-alephant-analytics.alephantUsage
package_name: @alephantai/n8n-nodes-alephant-analytics
display_name: Alephant AI Analytics
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: alephantway
author_github_url: https://github.com/AlephantAI/alephant-n8n.git
npm_package_name: @alephantai/n8n-nodes-alephant-analytics
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:34.320Z
ai_summary_generated_at: 2026-05-22 10:26:01
description:
  Alephant AI Analytics provides visibility into AI usage, cost, latency, model/provider performance, agent sessions, and request-level traces across your organization. It helps teams understand spend patterns, diagnose issues, and optimize AI operations from one unified dashboard.

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "usageSummary",
      "options": [
        {
          "name": "Budget Status",
          "value": "budgetStatus"
        },
        {
          "name": "Cost by Model",
          "value": "costByModel"
        },
        {
          "name": "Daily Costs",
          "value": "dailyCosts"
        },
        {
          "name": "Recent Requests",
          "value": "recentRequests"
        },
        {
          "name": "Request Log Detail",
          "value": "requestLogDetail"
        },
        {
          "name": "Scope",
          "value": "scope"
        },
        {
          "name": "Usage Summary",
          "value": "usageSummary"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Budget Status",
      "value": "budgetStatus"
    },
    {
      "name": "Cost by Model",
      "value": "costByModel"
    },
    {
      "name": "Daily Costs",
      "value": "dailyCosts"
    },
    {
      "name": "Recent Requests",
      "value": "recentRequests"
    },
    {
      "name": "Request Log Detail",
      "value": "requestLogDetail"
    },
    {
      "name": "Scope",
      "value": "scope"
    },
    {
      "name": "Usage Summary",
      "value": "usageSummary"
    }
  ]

npm_readme:
  # @alephantai/n8n-nodes-alephant-analytics

  n8n community node for Alephant AI usage analytics and request log lookups.

  ## What This Node Does

  This package adds the **Alephant AI Analytics** node to n8n. The node reads usage, cost, budget, and request-log data from Alephant so workflows can monitor AI spend and inspect Gateway request activity.

  Use this package when you want n8n to report AI usage, fetch recent requests, or look up details for a request generated through Alephant AI Gateway.

  ## Installation

  In n8n:

  1. Go to **Settings** > **Community nodes**.
  2. Select **Install**.
  3. Enter `@alephantai/n8n-nodes-alephant-analytics`.
  4. Confirm the community node installation prompt.

  For self-hosted n8n, community packages must be enabled:

  ```bash
  N8N_COMMUNITY_PACKAGES_ENABLED=true
  ```

  Restart n8n after changing environment variables.

  ## Authentication

  This node uses the **Alephant Virtual Key** credential.

  To configure it:

  1. Follow the Alephant quickstart guide: `https://developers.alephant.io/docs/overview/getting-started/quickstart-guide`.
  2. In the Alephant dashboard, register or sign in to your workspace.
  3. Add an upstream provider API key as a Master Key.
  4. Create an Agent for the workflow or application whose Gateway usage you want to inspect.
  5. Copy the Virtual Key generated for that Agent.
  6. In n8n, create a new **Alephant Virtual Key** credential.
  7. Paste the key into the **Virtual Key** field.
  8. Optionally set **Workspace ID** if you plan to use request log detail lookups.
  9. Leave base URL fields empty for production.

  Production defaults:

  - SaaS Base URL: `https://alephant.io`
  - Analytics Base URL: `https://analytics.alephant.io`
  - Gateway Base URL: `https://ai.alephant.io/v1`

  The Alephant quickstart shows the same Virtual Key being used as an OpenAI-compatible Bearer token against Alephant AI Gateway. This analytics node uses that credential to query Alephant usage and request-log APIs for the associated workspace.

  ## Example: Usage Summary

  1. Create a new workflow in n8n.
  2. Add a **Manual Trigger** node.
  3. Add the **Alephant AI Analytics** node.
  4. Select your **Alephant Virtual Key** credential.
  5. Set **Operation** to `Usage Summary`.
  6. Set **Period** to `7 Days`.
  7. Execute the node.

  The node returns workspace usage metrics for the selected period, such as total cost, token usage, and request counts when those fields are available from your Alephant workspace.

  ## Example: Request Log Detail

  1. Add an **Alephant AI Analytics** node after a workflow step that has a `requestLogId` or `requestId`.
  2. Set **Operation** to `Request Log Detail`.
  3. Leave **Request Log ID** as the default expression if the incoming item contains `requestLogId` or `requestId`.
  4. Set **Workspace ID** if it is not present in the incoming data or credential.
  5. Execute the node.

  The node polls the request-log endpoint for a short period to account for log ingestion delay.

  ## Node

  - **Alephant AI Analytics**

  ## Credential

  - **Alephant Virtual Key**

  ## Support

  For product and API documentation, visit `https://alephant.io`.

ai_documentation_summary:
  {"purpose":"This n8n community node enables monitoring of Alephant AI usage, costs, and request logs by querying Alephant's analytics and gateway APIs.","capabilities":["Retrieve usage summaries (cost, token usage, request counts) for a specified time period","Fetch detailed request log information using request IDs or request log IDs","Monitor AI spend patterns and optimize AI operations","Diagnose issues related to AI gateway requests"],"authentication":"Alephant Virtual Key (API key required)","commonUseCases":["Track AI spending and token consumption over time","Investigate specific AI request failures or performance issues","Audit AI gateway usage across an organization"],"limitations":["Requires a self-hosted n8n instance with community packages enabled","Request log details may have ingestion delays and require polling","Workspace ID must be explicitly set for request log detail lookups"],"relatedNodes":["Alephant AI Gateway","Alephant AI Analytics"]}


node_type: @aistemsplitter/n8n-nodes-aistemsplitter.aiStemSplitter
package_name: @aistemsplitter/n8n-nodes-aistemsplitter
display_name: AIStemSplitter
description: Create and inspect AIStemSplitter audio splits
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: weslin
author_github_url: https://github.com/aistemsplitter/aistemsplitter-n8n.git
npm_package_name: @aistemsplitter/n8n-nodes-aistemsplitter
npm_version: 0.1.11
community_fetched_at: 2026-07-14T14:40:34.321Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "createSplit",
      "options": [
        {
          "name": "Create Split",
          "value": "createSplit",
          "action": "Create a new audio split job",
          "description": "Submit an audio URL and start a stem-splitting job"
        },
        {
          "name": "Get Credits",
          "value": "getCredits",
          "action": "Read remaining credit balance",
          "description": "Return the current AIStemSplitter credit balance"
        },
        {
          "name": "Get Split",
          "value": "getSplit",
          "action": "Get a split by id",
          "description": "Fetch the status and outputs of a split job by id"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Split",
      "value": "createSplit",
      "action": "Create a new audio split job",
      "description": "Submit an audio URL and start a stem-splitting job"
    },
    {
      "name": "Get Credits",
      "value": "getCredits",
      "action": "Read remaining credit balance",
      "description": "Return the current AIStemSplitter credit balance"
    },
    {
      "name": "Get Split",
      "value": "getSplit",
      "action": "Get a split by id",
      "description": "Fetch the status and outputs of a split job by id"
    }
  ]

npm_readme:
  # AIStemSplitter n8n Community Node

  n8n community node for [AIStemSplitter](https://aistemsplitter.org) — submit an
  audio URL, separate it into vocals, drums, bass and other stems, and read the
  result inside your n8n workflow.

  Published on npm as
  [`@aistemsplitter/n8n-nodes-aistemsplitter`](https://www.npmjs.com/package/@aistemsplitter/n8n-nodes-aistemsplitter).

  ## Operations

  | Operation | Description |
  | --- | --- |
  | **Create Split** | Submit an audio URL to the AIStemSplitter API and start a new stem-splitting job. Returns the job id and queued status. |
  | **Get Split** | Look up an existing split job by id and read its status and stem output URLs. |
  | **Get Credits** | Return the remaining credit balance on the associated AIStemSplitter account. |

  ## Install

  This node is a [verified n8n community node](https://docs.n8n.io/integrations/community-nodes/installation/).

  ### Self-hosted n8n

  1. Open **Settings → Community Nodes** in your n8n instance.
  2. Click **Install** and enter:
     ```
     @aistemsplitter/n8n-nodes-aistemsplitter
     ```
  3. Accept the community-node risk prompt and click **Install**.
  4. Refresh the workflow editor — the **AIStemSplitter** node appears under
     the **Transform** category in the node picker.

  ### n8n Cloud

  Open **Settings → Community Nodes → Install** and follow the same flow with
  the package name above.

  ## Get an AIStemSplitter API key

  1. Create an account at [aistemsplitter.org](https://aistemsplitter.org).
  2. Open
     [aistemsplitter.org/settings/developer](https://aistemsplitter.org/settings/developer).
  3. Click **Create API key** and copy the value (it starts with `ast_`).
  4. Treat the key as a secret — anyone with the key can spend your credits.

  ## Configure the AIStemSplitter API credential

  1. In n8n, open **Credentials → New** and search for **AIStemSplitter API**.
  2. Fill in the fields:
     - **API Key** — paste the `ast_…` key from the previous section.
     - **API Base URL** — leave the default `https://api.aistemsplitter.org/v1`
       unless you are pointed at a custom environment.
  3. Click **Save**. n8n will run the built-in `GET /credits` test against the
     API to confirm the key works.

  ## Example: split a song from a URL

  The smallest useful workflow has three nodes — a manual trigger, the
  **AIStemSplitter** node configured for **Create Split**, and a second
  **AIStemSplitter** node configured for **Get Split** to poll the job.

  1. Add a **Manual Trigger** (or any other trigger).
  2. Add an **AIStemSplitter** node:
     - **Credential**: AIStemSplitter API (set up above).
     - **Operation**: `Create Split`.
     - **Audio URL**: a public URL to your audio file, e.g.
       `https://example.com/song.mp3`.
     - **Stem Model**: `6 Stems (Adds Guitar + Piano)` for the highest detail,
       or `4 Stems` for the classic Vocals/Drums/Bass/Other split.
  3. Add a second **AIStemSplitter** node:
     - **Operation**: `Get Split`.
     - **Split ID**: `{{$json.id}}` — references the id returned by the
       **Create Split** node.
  4. (Optional) Wrap **Get Split** in a `Wait` + loop until `status === 'succeeded'`
     if you need to block on the result. Splits typically finish in a few
     seconds for short clips.
  5. Use the `stems` field on the **Get Split** output to download the resulting
     audio (vocals, drums, bass, guitar, piano, other) and pass it into the next
     step of your workflow (Dropbox upload, Slack notification, etc.).

  ## Error handling

  API failures (4xx/5xx responses, network errors, missing credits) raise an
  `NodeApiError`, so HTTP status and the upstream error message surface in the
  n8n UI. Enable **Continue On Fail** on the node to push an `{ error }` item
  into the output instead of stopping the workflow — useful when batch-processing
  many URLs.

  ## Compatibility

  - Node.js 22 or newer
  - n8n 1.42 or newer (any version that supports
    [community node verification](https://docs.n8n.io/integrations/community-nodes/build-community-nodes/))

  ## Resources

  - AIStemSplitter site: [aistemsplitter.org](https://aistemsplitter.org)
  - API reference: [aistemsplitter.org/developers/api](https://aistemsplitter.org/developers/api)
  - API base URL: `https://api.aistemsplitter.org/v1`
  - Issues: <https://github.com/aistemsplitter/aistemsplitter-n8n/issues>

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"The AIStemSplitter n8n node processes audio files by submitting them to the AIStemSplitter API to separate vocals, drums, bass, and other instrument stems, then retrieves the resulting audio URLs within the workflow.","capabilities":["Submit audio URL for stem separation","Retrieve stem-splitting job status and output URLs","Check remaining API credit balance","Support multiple stem models (4 stems or 6 stems with guitar/piano)","Handle asynchronous job processing with polling","Continue workflow on failure for batch processing"],"authentication":"API Key required (stored in n8n credentials)","commonUseCases":["Separating music tracks into individual instrument stems for remixing","Extracting vocals or drums for audio editing workflows","Batch processing audio files with error handling","Integrating stem separation with cloud storage or notification services"],"limitations":["Requires active API credits on AIStemSplitter account","Asynchronous processing requires polling or waiting for job completion","Node requires n8n 1.42 or newer and Node.js 22 or newer","Community node status may require risk acceptance during installation"],"relatedNodes":["Manual Trigger","Wait","Loop","HTTP Request","Code"]}


node_type: n8n-nodes-vodafone.vodafone
package_name: n8n-nodes-vodafone
display_name: Vodafone
description: Download Vodafone Germany cable invoices
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: danez
author_github_url: https://github.com/danez/
npm_package_name: n8n-nodes-vodafone
npm_version: 1.2.0
community_fetched_at: 2026-07-14T14:40:34.323Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "invoice",
      "options": [
        {
          "name": "Invoice",
          "value": "invoice"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "download",
      "options": [
        {
          "name": "Download",
          "value": "download",
          "action": "Download invoices",
          "description": "Download invoices as PDF files"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Download",
      "value": "download",
      "action": "Download invoices",
      "description": "Download invoices as PDF files",
      "resource": "invoice"
    }
  ]


node_type: n8n-nodes-trainar.trainar
package_name: n8n-nodes-trainar
display_name: TrainAR
description: Call the TrainAR API — tasks, users, skills
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ebazil
author_github_url: https://github.com/Train-AR/
npm_package_name: n8n-nodes-trainar
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.325Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Skill",
          "value": "skill"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new operational task"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update task status",
          "description": "Update the status of an existing task"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find tasks",
          "description": "List recent tasks; optionally filter client-side by title"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "invite",
      "options": [
        {
          "name": "Invite",
          "value": "invite",
          "action": "Invite a user",
          "description": "Send an invitation email to a new user"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find users",
          "description": "List users in the tenant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a skill",
          "description": "Run a TrainAR skill server-to-server. session_context is auto-resolved from the tenant's first active assigned seat unless supplied."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "skill"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new operational task",
      "resource": "task"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update task status",
      "description": "Update the status of an existing task",
      "resource": "task"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find tasks",
      "description": "List recent tasks; optionally filter client-side by title",
      "resource": "task"
    },
    {
      "name": "Invite",
      "value": "invite",
      "action": "Invite a user",
      "description": "Send an invitation email to a new user",
      "resource": "user"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find users",
      "description": "List users in the tenant",
      "resource": "user"
    },
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute a skill",
      "description": "Run a TrainAR skill server-to-server. session_context is auto-resolved from the tenant's first active assigned seat unless supplied.",
      "resource": "skill"
    }
  ]

npm_readme:
  # n8n-nodes-trainar

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-trainar.svg)](https://www.npmjs.com/package/n8n-nodes-trainar)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  n8n community node for [TrainAR](https://trainar.ai) — the AR training platform.

  Trigger n8n workflows when TrainAR events fire (task created, session completed, skill executed, etc.) and call TrainAR API actions (create tasks, invite users, execute skills) from any n8n workflow.

  ## Install

  ### Self-hosted n8n

  1. In your n8n instance, go to **Settings → Community Nodes → Install**.
  2. Paste `n8n-nodes-trainar` and click **Install**.
  3. Reload n8n.

  ### n8n Cloud

  Verified community node install is rolling out per workspace by n8n. Once approved, install the package from the **Nodes panel** with one click.

  ## Authenticate

  1. In TrainAR Dashboard → API, generate a tenant API key (starts with `tak_`). Required scopes depend on what you need:
     - `manage:webhooks` — for the `TrainAR Trigger` node (subscribe/unsubscribe)
     - `read:tasks`, `write:tasks`, `read:users`, `read:skills` — for the various Find/Read operations of the `TrainAR` node
     - `manage:users` — for the `User → Invite` action
     - `write:skills` — for the `Skill → Execute` action
  2. In n8n, create a new credential of type **TrainAR API** and paste the key.

  ## Nodes

  ### TrainAR Trigger (REST hook)

  One trigger node, six event types:

  | Event | When it fires |
  |---|---|
  | `task.created` | A new operational task is created in TrainAR |
  | `task.status_changed` | A task changes status (open / in_progress / completed / cancelled) |
  | `task.completed` | A task is completed |
  | `session.started` | A training session starts on an AR device |
  | `session.completed` | A training session ends |
  | `skill.executed` | A TrainAR skill is executed (success or failure) |

  Select one or more events on the trigger node. The webhook payload is flattened — fields from the event's `data` object are top-level, with `_event` and `_timestamp` carried alongside for routing logic.

  ### TrainAR (actions + searches)

  Three resources, six operations:

  | Resource | Operation | What it does |
  |---|---|---|
  | Task | Create | Create a new operational task |
  | Task | Update Status | Move a task between open / in_progress / completed / cancelled |
  | Task | Find | List recent tasks (client-side title filter) |
  | User | Invite | Send an invitation email to a new user |
  | User | Find | List users in the tenant |
  | Skill | Execute | Run a TrainAR skill server-to-server (auto-resolves session_context) |

  ## Compatibility

  - **n8n:** 1.0.0+
  - **Node.js:** 20.x+
  - **n8n-workflow:** 1.0.0+

  ## Endpoints

  The node calls the TrainAR production API at `https://xddgmkiguaohdewecmju.supabase.co/functions/v1`:

  - `POST /webhook-subscribe` — REST-hook lifecycle (create)
  - `GET /webhook-subscribe?endpoint_id=…` — REST-hook lifecycle (checkExists)
  - `DELETE /webhook-subscribe?endpoint_id=…&_source=n8n` — REST-hook lifecycle (delete, source-scoped)
  - `POST /api-tenant-tasks` — Create task
  - `PATCH /api-tenant-tasks?task_id=…` — Update task status
  - `GET /api-tenant-tasks` — List tasks
  - `POST /api-tenant-users` — Invite user
  - `GET /api-tenant-users` — List users
  - `POST /api-tenant-skills-execute` — Execute skill

  ## Source

  [github.com/Train-AR/n8n-nodes-trainar](https://github.com/Train-AR/n8n-nodes-trainar)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"A community n8n node that integrates with the TrainAR AR training platform to trigger workflows on events and perform API actions like creating tasks, inviting users, and executing skills.","capabilities":["Trigger workflow on TrainAR events (task creation, status changes, session lifecycle, skill execution)","Create new operational tasks","Update task status (open, in_progress, completed, cancelled)","List recent tasks with client-side title filtering","Invite new users via email","List users in the tenant","Execute TrainAR skills server-to-server","Subscribe/unsubscribe to webhook endpoints"],"authentication":"API key required (tenant API key starting with 'tak_' with specific scopes)","commonUseCases":["Automate task creation when new training requirements are identified","Monitor training session completion and trigger follow-up workflows","Execute skills automatically after a session ends","Manage user invitations and task status updates centrally","Integrate TrainAR events into existing n8n automation workflows"],"limitations":["Requires specific API scopes based on the operation performed","Webhook payload fields are flattened, with event metadata added as top-level keys","Task listing supports only client-side title filtering","Skill execution auto-resolves session_context without manual input"],"relatedNodes":["TrainAR Trigger","TrainAR (actions + searches)","Webhook Trigger","HTTP Request"]}


node_type: n8n-nodes-trainar.trainarTrigger
package_name: n8n-nodes-trainar
display_name: TrainAR Trigger
description: Triggers when a TrainAR event fires
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: ebazil
author_github_url: https://github.com/Train-AR/
npm_package_name: n8n-nodes-trainar
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.326Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-trainar

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-trainar.svg)](https://www.npmjs.com/package/n8n-nodes-trainar)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  n8n community node for [TrainAR](https://trainar.ai) — the AR training platform.

  Trigger n8n workflows when TrainAR events fire (task created, session completed, skill executed, etc.) and call TrainAR API actions (create tasks, invite users, execute skills) from any n8n workflow.

  ## Install

  ### Self-hosted n8n

  1. In your n8n instance, go to **Settings → Community Nodes → Install**.
  2. Paste `n8n-nodes-trainar` and click **Install**.
  3. Reload n8n.

  ### n8n Cloud

  Verified community node install is rolling out per workspace by n8n. Once approved, install the package from the **Nodes panel** with one click.

  ## Authenticate

  1. In TrainAR Dashboard → API, generate a tenant API key (starts with `tak_`). Required scopes depend on what you need:
     - `manage:webhooks` — for the `TrainAR Trigger` node (subscribe/unsubscribe)
     - `read:tasks`, `write:tasks`, `read:users`, `read:skills` — for the various Find/Read operations of the `TrainAR` node
     - `manage:users` — for the `User → Invite` action
     - `write:skills` — for the `Skill → Execute` action
  2. In n8n, create a new credential of type **TrainAR API** and paste the key.

  ## Nodes

  ### TrainAR Trigger (REST hook)

  One trigger node, six event types:

  | Event | When it fires |
  |---|---|
  | `task.created` | A new operational task is created in TrainAR |
  | `task.status_changed` | A task changes status (open / in_progress / completed / cancelled) |
  | `task.completed` | A task is completed |
  | `session.started` | A training session starts on an AR device |
  | `session.completed` | A training session ends |
  | `skill.executed` | A TrainAR skill is executed (success or failure) |

  Select one or more events on the trigger node. The webhook payload is flattened — fields from the event's `data` object are top-level, with `_event` and `_timestamp` carried alongside for routing logic.

  ### TrainAR (actions + searches)

  Three resources, six operations:

  | Resource | Operation | What it does |
  |---|---|---|
  | Task | Create | Create a new operational task |
  | Task | Update Status | Move a task between open / in_progress / completed / cancelled |
  | Task | Find | List recent tasks (client-side title filter) |
  | User | Invite | Send an invitation email to a new user |
  | User | Find | List users in the tenant |
  | Skill | Execute | Run a TrainAR skill server-to-server (auto-resolves session_context) |

  ## Compatibility

  - **n8n:** 1.0.0+
  - **Node.js:** 20.x+
  - **n8n-workflow:** 1.0.0+

  ## Endpoints

  The node calls the TrainAR production API at `https://xddgmkiguaohdewecmju.supabase.co/functions/v1`:

  - `POST /webhook-subscribe` — REST-hook lifecycle (create)
  - `GET /webhook-subscribe?endpoint_id=…` — REST-hook lifecycle (checkExists)
  - `DELETE /webhook-subscribe?endpoint_id=…&_source=n8n` — REST-hook lifecycle (delete, source-scoped)
  - `POST /api-tenant-tasks` — Create task
  - `PATCH /api-tenant-tasks?task_id=…` — Update task status
  - `GET /api-tenant-tasks` — List tasks
  - `POST /api-tenant-users` — Invite user
  - `GET /api-tenant-users` — List users
  - `POST /api-tenant-skills-execute` — Execute skill

  ## Source

  [github.com/Train-AR/n8n-nodes-trainar](https://github.com/Train-AR/n8n-nodes-trainar)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when TrainAR events fire and allows calling TrainAR API actions like creating tasks, inviting users, or executing skills.","capabilities":["Subscribe to TrainAR events (task.created, task.status_changed, task.completed, session.started, session.completed, skill.executed)","Create new operational tasks","Update task status (open, in_progress, completed, cancelled)","List recent tasks with client-side title filtering","Invite new users via email","List users in the tenant","Execute TrainAR skills server-to-server"],"authentication":"API key required (tenant key starting with tak_ with specific scopes: manage:webhooks, read:tasks, write:tasks, read:users, read:skills, manage:users, write:skills)","commonUseCases":["Automatically create training tasks when events occur in TrainAR","Monitor task status changes and trigger notifications","Execute skills automatically after sessions complete","Invite users to a training tenant based on workflow triggers"],"limitations":["Requires specific API scopes to be configured in TrainAR Dashboard","Webhook payload fields are flattened (data object fields become top-level)","Task listing supports only client-side title filtering"],"relatedNodes":["TrainAR Trigger","TrainAR","TrainAR User Invite","TrainAR Skill Execute"]}


node_type: n8n-nodes-workdrive.workDrive
package_name: n8n-nodes-workdrive
display_name: Zoho WorkDrive
description: Interact with Zoho WorkDrive — files, folders, and sharing
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: zohoworkdrive
author_github_url: https://github.com/ZohoWorkDrive/
npm_package_name: n8n-nodes-workdrive
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.327Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "file",
      "options": [
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Share",
          "value": "share"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadFile",
      "options": [
        {
          "name": "Copy",
          "value": "copyResource",
          "action": "Copy a file",
          "description": "Copy a file to another folder"
        },
        {
          "name": "Delete",
          "value": "deleteResource",
          "action": "Delete a file",
          "description": "Move a file to Trash"
        },
        {
          "name": "Download",
          "value": "downloadFile",
          "action": "Download a file",
          "description": "Download a file as binary data"
        },
        {
          "name": "Get",
          "value": "getInfo",
          "action": "Get file info",
          "description": "Get metadata for a file"
        },
        {
          "name": "Move",
          "value": "moveResource",
          "action": "Move a file",
          "description": "Move a file to another folder"
        },
        {
          "name": "Rename",
          "value": "renameResource",
          "action": "Rename a file",
          "description": "Rename a file"
        },
        {
          "name": "Upload",
          "value": "uploadFile",
          "action": "Upload a file",
          "description": "Upload a file to a folder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFolder",
      "options": [
        {
          "name": "Copy",
          "value": "copyResource",
          "action": "Copy a folder",
          "description": "Copy a folder to another folder"
        },
        {
          "name": "Create",
          "value": "createFolder",
          "action": "Create a folder",
          "description": "Create a new folder"
        },
        {
          "name": "Delete",
          "value": "deleteResource",
          "action": "Delete a folder",
          "description": "Move a folder to Trash"
        },
        {
          "name": "Get",
          "value": "getInfo",
          "action": "Get folder info",
          "description": "Get metadata for a folder"
        },
        {
          "name": "List Contents",
          "value": "listFolder",
          "action": "List folder contents",
          "description": "List contents of a folder"
        },
        {
          "name": "Move",
          "value": "moveResource",
          "action": "Move a folder",
          "description": "Move a folder to another folder"
        },
        {
          "name": "Rename",
          "value": "renameResource",
          "action": "Rename a folder",
          "description": "Rename a folder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createShare",
      "options": [
        {
          "name": "Create External Link",
          "value": "createShare",
          "action": "Create external share link",
          "description": "Create a public external share link"
        },
        {
          "name": "Delete External Link",
          "value": "deleteShare",
          "action": "Delete external share link",
          "description": "Revoke an external share link"
        },
        {
          "name": "Get External Link",
          "value": "getShare",
          "action": "Get external share link",
          "description": "Get info about a share link"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "share"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Copy",
      "value": "copyResource",
      "action": "Copy a file",
      "description": "Copy a file to another folder",
      "resource": "file"
    },
    {
      "name": "Delete",
      "value": "deleteResource",
      "action": "Delete a file",
      "description": "Move a file to Trash",
      "resource": "file"
    },
    {
      "name": "Download",
      "value": "downloadFile",
      "action": "Download a file",
      "description": "Download a file as binary data",
      "resource": "file"
    },
    {
      "name": "Get",
      "value": "getInfo",
      "action": "Get file info",
      "description": "Get metadata for a file",
      "resource": "file"
    },
    {
      "name": "Move",
      "value": "moveResource",
      "action": "Move a file",
      "description": "Move a file to another folder",
      "resource": "file"
    },
    {
      "name": "Rename",
      "value": "renameResource",
      "action": "Rename a file",
      "description": "Rename a file",
      "resource": "file"
    },
    {
      "name": "Upload",
      "value": "uploadFile",
      "action": "Upload a file",
      "description": "Upload a file to a folder",
      "resource": "file"
    },
    {
      "name": "Copy",
      "value": "copyResource",
      "action": "Copy a folder",
      "description": "Copy a folder to another folder",
      "resource": "folder"
    },
    {
      "name": "Create",
      "value": "createFolder",
      "action": "Create a folder",
      "description": "Create a new folder",
      "resource": "folder"
    },
    {
      "name": "Delete",
      "value": "deleteResource",
      "action": "Delete a folder",
      "description": "Move a folder to Trash",
      "resource": "folder"
    },
    {
      "name": "Get",
      "value": "getInfo",
      "action": "Get folder info",
      "description": "Get metadata for a folder",
      "resource": "folder"
    },
    {
      "name": "List Contents",
      "value": "listFolder",
      "action": "List folder contents",
      "description": "List contents of a folder",
      "resource": "folder"
    },
    {
      "name": "Move",
      "value": "moveResource",
      "action": "Move a folder",
      "description": "Move a folder to another folder",
      "resource": "folder"
    },
    {
      "name": "Rename",
      "value": "renameResource",
      "action": "Rename a folder",
      "description": "Rename a folder",
      "resource": "folder"
    },
    {
      "name": "Create External Link",
      "value": "createShare",
      "action": "Create external share link",
      "description": "Create a public external share link",
      "resource": "share"
    },
    {
      "name": "Delete External Link",
      "value": "deleteShare",
      "action": "Delete external share link",
      "description": "Revoke an external share link",
      "resource": "share"
    },
    {
      "name": "Get External Link",
      "value": "getShare",
      "action": "Get external share link",
      "description": "Get info about a share link",
      "resource": "share"
    }
  ]

npm_readme:
  # n8n-nodes-workdrive

  This is an n8n community node for **Zoho WorkDrive**. It lets you manage files, folders, and automate workflows triggered by WorkDrive events.

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

  ## Installation

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

  ## Operations

  ### WorkDrive (regular node)

  **Files**
  - Upload a file
  - Download a file
  - Get file metadata
  - Rename a file
  - Move a file
  - Copy a file
  - Trash a file
  - Delete a file permanently

  **Folders**
  - Create a folder
  - Get folder details
  - List folder contents
  - Rename a folder
  - Move a folder
  - Trash a folder

  **Sharing & Links**
  - Share a file or folder with a user
  - Update sharing permissions
  - Remove sharing
  - Create an external share link
  - Update or delete an external share link

  ### WorkDrive Trigger (webhook node)

  Starts a workflow when a Zoho WorkDrive event occurs. Supports four webhook categories:

  - **File** — events on a specific file (view, rename, move, trash, restore, delete, download, copy, share, comments, external links)
  - **Folder** — file and folder events inside a specific folder and its subfolders
  - **Team Folder** — file, folder, and member events inside a specific team folder
  - **Team** — team-wide membership and structure events (user added/removed/role updated, team folder created, team renamed)

  > WorkDrive webhooks require the **Business plan**. Webhooks are not available on Free or Standard plans.

  ## Credentials

  Zoho WorkDrive uses **OAuth2**. The credential supports all Zoho data centre regions:

  | Region | Auth URL |
  |---|---|
  | US / Global | accounts.zoho.com |
  | Europe | accounts.zoho.eu |
  | India | accounts.zoho.in |
  | Australia | accounts.zoho.com.au |
  | Canada | accounts.zohocloud.ca |
  | Japan | accounts.zoho.jp |

  ### Setting up OAuth2

  1. Go to [Zoho API Console](https://api-console.zoho.com/) and create a **Server-based Application**.
  2. Add the n8n OAuth callback URL as the redirect URI.
  3. Note the **Client ID** and **Client Secret**.
  4. In n8n, create a **Zoho WorkDrive OAuth2 API** credential, select your region, and enter the Client ID and Secret.
  5. Connect the credential — you will be redirected to Zoho to authorise access.

  ### Setting up webhooks (WorkDrive Trigger)

  Webhooks in WorkDrive must be registered manually in the **Admin Console**:

  1. Go to WorkDrive **Admin Console → Apps → Custom Apps → your app → Webhooks**.
  2. Create a new webhook, paste the **Production URL** from the n8n trigger node, select the category and events.
  3. WorkDrive sends a GET request to validate the endpoint — the trigger node handles this automatically.
  4. Once validated the webhook status changes to **Active**.

  See the [WorkDrive webhook documentation](https://help.zoho.com/portal/en/kb/workdrive/integrations/webhooks/articles/setting-up-webhooks-in-workdrive-using-custom-apps) for full setup instructions.

  ## Compatibility

  Tested with n8n 1.60.0 and later.

  Requires a Zoho WorkDrive account. Webhook triggers require the Business plan.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Zoho WorkDrive API documentation](https://workdrive.zoho.com/apidocs/v1)
  - [WorkDrive webhook events reference](https://help.zoho.com/portal/en/kb/workdrive/integrations/webhooks/articles/webhooks-trigger-events-available-in-workdrive)
  - [Zoho API Console](https://api-console.zoho.com/)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation with Zoho WorkDrive by allowing file/folder management, sharing control, and event-triggered workflows.","capabilities":["Upload files","Download files","Get file metadata","Rename files","Move files","Copy files","Trash files","Delete files permanently","Create folders","List folder contents"],"authentication":"OAuth2 (Server-based Application via Zoho API Console)","commonUseCases":["Automate file organization and cleanup","Notify team members when files are shared or renamed","Trigger backup processes on file deletion","Automate external link generation for client approvals","Monitor team folder activity"],"limitations":["Webhook triggers require the Zoho WorkDrive Business plan (not available on Free or Standard plans)","Webhooks must be manually registered in the Zoho Admin Console","Community node (fair-code licensed, not official n8n package)"],"relatedNodes":["Zoho WorkDrive Trigger (Webhook)","Zoho OAuth2 API Credential","Generic File Operations nodes"]}


node_type: n8n-nodes-workdrive.workDriveTrigger
package_name: n8n-nodes-workdrive
display_name: Zoho WorkDrive Trigger
description: Starts a workflow when a Zoho WorkDrive event occurs (requires WorkDrive Business plan)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: zohoworkdrive
author_github_url: https://github.com/ZohoWorkDrive/
npm_package_name: n8n-nodes-workdrive
npm_version: 1.0.4
community_fetched_at: 2026-07-14T14:40:34.329Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-workdrive

  This is an n8n community node for **Zoho WorkDrive**. It lets you manage files, folders, and automate workflows triggered by WorkDrive events.

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

  ## Installation

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

  ## Operations

  ### WorkDrive (regular node)

  **Files**
  - Upload a file
  - Download a file
  - Get file metadata
  - Rename a file
  - Move a file
  - Copy a file
  - Trash a file
  - Delete a file permanently

  **Folders**
  - Create a folder
  - Get folder details
  - List folder contents
  - Rename a folder
  - Move a folder
  - Trash a folder

  **Sharing & Links**
  - Share a file or folder with a user
  - Update sharing permissions
  - Remove sharing
  - Create an external share link
  - Update or delete an external share link

  ### WorkDrive Trigger (webhook node)

  Starts a workflow when a Zoho WorkDrive event occurs. Supports four webhook categories:

  - **File** — events on a specific file (view, rename, move, trash, restore, delete, download, copy, share, comments, external links)
  - **Folder** — file and folder events inside a specific folder and its subfolders
  - **Team Folder** — file, folder, and member events inside a specific team folder
  - **Team** — team-wide membership and structure events (user added/removed/role updated, team folder created, team renamed)

  > WorkDrive webhooks require the **Business plan**. Webhooks are not available on Free or Standard plans.

  ## Credentials

  Zoho WorkDrive uses **OAuth2**. The credential supports all Zoho data centre regions:

  | Region | Auth URL |
  |---|---|
  | US / Global | accounts.zoho.com |
  | Europe | accounts.zoho.eu |
  | India | accounts.zoho.in |
  | Australia | accounts.zoho.com.au |
  | Canada | accounts.zohocloud.ca |
  | Japan | accounts.zoho.jp |

  ### Setting up OAuth2

  1. Go to [Zoho API Console](https://api-console.zoho.com/) and create a **Server-based Application**.
  2. Add the n8n OAuth callback URL as the redirect URI.
  3. Note the **Client ID** and **Client Secret**.
  4. In n8n, create a **Zoho WorkDrive OAuth2 API** credential, select your region, and enter the Client ID and Secret.
  5. Connect the credential — you will be redirected to Zoho to authorise access.

  ### Setting up webhooks (WorkDrive Trigger)

  Webhooks in WorkDrive must be registered manually in the **Admin Console**:

  1. Go to WorkDrive **Admin Console → Apps → Custom Apps → your app → Webhooks**.
  2. Create a new webhook, paste the **Production URL** from the n8n trigger node, select the category and events.
  3. WorkDrive sends a GET request to validate the endpoint — the trigger node handles this automatically.
  4. Once validated the webhook status changes to **Active**.

  See the [WorkDrive webhook documentation](https://help.zoho.com/portal/en/kb/workdrive/integrations/webhooks/articles/setting-up-webhooks-in-workdrive-using-custom-apps) for full setup instructions.

  ## Compatibility

  Tested with n8n 1.60.0 and later.

  Requires a Zoho WorkDrive account. Webhook triggers require the Business plan.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Zoho WorkDrive API documentation](https://workdrive.zoho.com/apidocs/v1)
  - [WorkDrive webhook events reference](https://help.zoho.com/portal/en/kb/workdrive/integrations/webhooks/articles/webhooks-trigger-events-available-in-workdrive)
  - [Zoho API Console](https://api-console.zoho.com/)

ai_documentation_summary:
  {"purpose":"The Zoho WorkDrive Trigger node starts an n8n workflow when specific events occur in a Zoho WorkDrive account, enabling event-driven automation for file, folder, team folder, and team-level activities.","capabilities":["Trigger workflow on file events (view, rename, move, trash, restore, delete, download, copy, share, comments, external links)","Trigger workflow on folder events within specific folders and subfolders","Trigger workflow on team folder events (file, folder, member changes)","Trigger workflow on team-wide membership and structure events (user added/removed/role updated, team folder created, team renamed)","Supports multiple Zoho data centre regions (US/Global, Europe, India, Australia, Canada, Japan)"],"authentication":"OAuth2 (requires Server-based Application with Client ID and Secret)","commonUseCases":["Automate file processing when a document is uploaded or renamed","Notify team members when a folder is shared or permissions change","Trigger backup processes when files are deleted or trashed","Manage team workflows based on membership changes or role updates"],"limitations":["Webhook triggers require the Zoho WorkDrive Business plan (not available on Free or Standard plans)","Webhooks must be manually registered in the Zoho WorkDrive Admin Console","Requires manual setup of OAuth2 credentials and webhook validation"],"relatedNodes":["Zoho WorkDrive (regular node)","Zoho WorkDrive OAuth2 API","Webhook Trigger"]}


node_type: @chroniclehq/n8n-nodes-chronicle.chronicle
package_name: @chroniclehq/n8n-nodes-chronicle
display_name: Chronicle
description: Generate AI-powered presentations with Chronicle
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: bhardwajakshit
author_github_url: https://github.com/chroniclehq/n8n-nodes-chronicle.git
npm_package_name: @chroniclehq/n8n-nodes-chronicle
npm_version: 0.1.2
community_fetched_at: 2026-07-14T14:40:34.329Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "presentation",
      "options": [
        {
          "name": "Presentation",
          "value": "presentation"
        },
        {
          "name": "Attachment",
          "value": "attachment"
        },
        {
          "name": "Template",
          "value": "template"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateAndPoll",
      "options": [
        {
          "name": "Generate & Poll",
          "value": "generateAndPoll",
          "action": "Generate a presentation and poll",
          "routing": {
            "request": {
              "url": "/api/v1/presentations/generate",
              "method": "POST"
            }
          },
          "description": "Generate a deck from a prompt (no template) and poll until it completes"
        },
        {
          "name": "Create From Template & Poll",
          "value": "createFromTemplateAndPoll",
          "action": "Create from template and poll",
          "routing": {
            "request": {
              "url": "/api/v1/presentations/generate",
              "method": "POST"
            }
          },
          "description": "Generate a deck from a template plus a prompt and poll until it completes"
        },
        {
          "name": "Generate (Async)",
          "value": "generate",
          "action": "Generate a presentation",
          "routing": {
            "request": {
              "url": "/api/v1/presentations/generate",
              "method": "POST"
            }
          },
          "description": "Start a generation (with optional template) and return a generation_id"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get generation status",
          "routing": {
            "request": {
              "url": "=/api/v1/presentations/generate/{{$parameter[\"generation_id\"]}}/status",
              "method": "GET"
            }
          },
          "description": "Check the status of an in-flight generation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "presentation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "List Templates",
          "value": "getMany",
          "action": "List templates",
          "routing": {
            "request": {
              "url": "/api/v1/templates",
              "method": "GET"
            }
          },
          "description": "List templates available to your workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload an attachment",
          "routing": {
            "request": {
              "url": "/api/v1/uploads/create-target",
              "method": "POST"
            }
          },
          "description": "Upload a file from the previous node's binary output to Chronicle, ready to attach to Generate"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "attachment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate & Poll",
      "value": "generateAndPoll",
      "action": "Generate a presentation and poll",
      "routing": {
        "request": {
          "url": "/api/v1/presentations/generate",
          "method": "POST"
        }
      },
      "description": "Generate a deck from a prompt (no template) and poll until it completes",
      "resource": "presentation"
    },
    {
      "name": "Create From Template & Poll",
      "value": "createFromTemplateAndPoll",
      "action": "Create from template and poll",
      "routing": {
        "request": {
          "url": "/api/v1/presentations/generate",
          "method": "POST"
        }
      },
      "description": "Generate a deck from a template plus a prompt and poll until it completes",
      "resource": "presentation"
    },
    {
      "name": "Generate (Async)",
      "value": "generate",
      "action": "Generate a presentation",
      "routing": {
        "request": {
          "url": "/api/v1/presentations/generate",
          "method": "POST"
        }
      },
      "description": "Start a generation (with optional template) and return a generation_id",
      "resource": "presentation"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get generation status",
      "routing": {
        "request": {
          "url": "=/api/v1/presentations/generate/{{$parameter[\"generation_id\"]}}/status",
          "method": "GET"
        }
      },
      "description": "Check the status of an in-flight generation",
      "resource": "presentation"
    },
    {
      "name": "List Templates",
      "value": "getMany",
      "action": "List templates",
      "routing": {
        "request": {
          "url": "/api/v1/templates",
          "method": "GET"
        }
      },
      "description": "List templates available to your workspace",
      "resource": "template"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload an attachment",
      "routing": {
        "request": {
          "url": "/api/v1/uploads/create-target",
          "method": "POST"
        }
      },
      "description": "Upload a file from the previous node's binary output to Chronicle, ready to attach to Generate",
      "resource": "attachment"
    }
  ]

npm_readme:
  # @chroniclehq/n8n-nodes-chronicle

  Official [n8n](https://n8n.io) community node for [Chronicle](https://chroniclehq.com) — generate AI-powered presentations and decks from your workflows.

  ## Installation

  In n8n: **Settings → Community Nodes → Install** and enter `@chroniclehq/n8n-nodes-chronicle`.

  For self-hosted installations, see [n8n's community node docs](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Credentials

  1. In Chronicle, go to **Workspace Settings → API Keys** and create a key.
  2. In n8n, create a new **Chronicle API** credential and paste the key (starts with `chr_`).
  3. The default base URL is `https://api.chroniclehq.com`. Change it only if you're on a self-hosted Chronicle deployment.

  Click **Test** on the credential to verify it works before saving.

  ## Operations

  ### Presentation

  - **Generate a presentation and poll** — generate a deck from a prompt and wait for it to complete. Returns the full presentation (including the URL) when done. Use this when you want a synchronous "in → out" flow.
  - **Create from template and poll** — generate a deck from a Chronicle template plus a prompt, and wait for completion. Returns the full presentation. Use this when you have a template-based design system.
  - **Generate a presentation** — start a generation (with optional template) and return a `generation_id` immediately. Use this when you want to fan out generations and check their status later.
  - **Get generation status** — check the status of a generation by ID. Returns one of `generating`, `completed`, or `failed`, with progress info when available.

  ### Attachment

  - **Upload an attachment** — upload a file from a previous node's binary output to Chronicle, returning an attachment object (`id`, `url`, `file_name`, `type`) ready to drop into the Attachments field of any Generate op. PDFs, .pptx, .txt, .md, and images are all supported.

  ### Template

  - **List templates** — list templates available to your workspace. Also powers the template picker dropdown inside the Generate ops.

  ## Storyline preferences

  When using `Generate a presentation and poll` or `Generate a presentation` **without a template**, you can shape how Chronicle plans the deck by setting any of:

  - **Narrative Type** — `Auto`, `Pitch`, `Showcase`, `Sales`, `Proposal`, `Research`, `Guide`, `Meeting`, `Portfolio`
  - **Rewrite Style** — `Strong`, `Subtle`, `Preserve`
  - **Section Count** — a positive integer or `auto`
  - **Language** — one of the 14 supported language codes (`us`, `uk`, `es`, `fr`, `de`, `it`, `pt`, `cn`, `in`, `ja`, `ko`, `ar`, `hi`, `bn`)

  These are server-side ignored when a template is selected (the template's structure takes over).

  ## Common workflows

  **Generate from a prompt (simplest)**

  ```
  Manual Trigger  →  Chronicle: Generate a presentation and poll  →  Set { deck_url }
  ```

  **Generate from an uploaded PDF + template**

  ```
  Webhook / Form / Chat Trigger  →  Chronicle: Upload an attachment  →  Chronicle: Create from template and poll  →  Reply with the URL
  ```

  **Bulk generation with async + status check**

  ```
  Read rows from Google Sheets  →  Chronicle: Generate (async)  →  Save generation_id to sheet

  — separate scheduled workflow —
  Read rows where status='generating'  →  Chronicle: Get generation status  →  Update sheet with URL when done
  ```

  ## AI agent / tool use

  This node has `usableAsTool: true`, so it's available to n8n's AI agents. An agent can call Generate ops directly when configured as a tool.

  ## Resources

  - [Chronicle developer docs](https://developers.chroniclehq.com)
  - [n8n community node guide](https://docs.n8n.io/integrations/community-nodes/)
  - [Report an issue](https://github.com/chroniclehq/n8n-nodes-chronicle/issues)

  ## License

  [MIT](./LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n community node enables the generation of AI-powered presentations and decks from prompts, templates, or uploaded documents using the Chronicle API.","capabilities":["Generate presentations from prompts with polling support","Create presentations from templates with prompts","Start asynchronous presentation generations and retrieve generation IDs","Check generation status (generating, completed, failed)","Upload attachments (PDFs, .pptx, .txt, .md, images) to be used in presentations","List available templates","Control presentation style via narrative type, rewrite style, section count, and language","Integrates with n8n AI agents as a tool"],"authentication":"API Key (Chronicle API key starting with 'chr_')","commonUseCases":["Generate a presentation directly from a user prompt","Create decks from uploaded documents (e.g., PDFs) combined with templates","Bulk generate presentations from data sources like Google Sheets with async status checking","Enable AI agents to create presentations dynamically as part of a workflow"],"limitations":["Storyline preferences (narrative type, rewrite style, etc.) are ignored when a template is selected","Self-hosted Chronicle deployments require manual configuration of the base URL","Template-based generations do not allow customization of storyline preferences"],"relatedNodes":["Manual Trigger","Webhook","Form","Chat Trigger","Set"]}


node_type: n8n-nodes-webcrawlerapi.webCrawlerApiNode
package_name: n8n-nodes-webcrawlerapi
display_name: WebCrawlerAPI
description: Scrape or crawl web pages with WebCrawlerAPI
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: niiotyo
author_github_url: https://github.com/WebCrawlerAPI/n8n-node-webcrawlerapi.git
npm_package_name: n8n-nodes-webcrawlerapi
npm_version: 0.3.7
community_fetched_at: 2026-07-14T14:40:34.331Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "url_to_markdown",
      "options": [
        {
          "name": "URL to Markdown",
          "value": "url_to_markdown",
          "action": "Convert an URL to markdown"
        },
        {
          "name": "Scrape",
          "value": "scrape",
          "action": "Scrape a single page",
          "description": "Scrape a single page"
        },
        {
          "name": "Crawl",
          "value": "crawl",
          "action": "Crawl multiple pages starting from a URL",
          "description": "Crawl multiple pages starting from a URL"
        },
        {
          "name": "Agent",
          "value": "agent",
          "action": "Run an AI agent to extract data from web pages",
          "description": "Run an AI agent to extract data from web pages"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "URL to Markdown",
      "value": "url_to_markdown",
      "action": "Convert an URL to markdown"
    },
    {
      "name": "Scrape",
      "value": "scrape",
      "action": "Scrape a single page",
      "description": "Scrape a single page"
    },
    {
      "name": "Crawl",
      "value": "crawl",
      "action": "Crawl multiple pages starting from a URL",
      "description": "Crawl multiple pages starting from a URL"
    },
    {
      "name": "Agent",
      "value": "agent",
      "action": "Run an AI agent to extract data from web pages",
      "description": "Run an AI agent to extract data from web pages"
    }
  ]

npm_readme:
  # n8n WebCrawlerAPI Node

  Turn docs and websites into clean markdown for AI agents — directly inside n8n.

  [WebCrawlerAPI](https://webcrawlerapi.com/) is a web crawling and data extraction API built for AI teams. One API call loads the page, removes menus, banners, ads, and clutter, and returns clean content ready for LLM prompts, RAG pipelines, or vector storage.

  ## Features

  - Scrape any URL via the `/v2/scrape` endpoint
  - Output formats: **Markdown**, **Cleaned**, **HTML**, or **Links**
  - Smart caching — cached pages return in ~0.9s instead of ~4.7s
  - Proxies, retries, headless browsers, and anti-bot handling included — no infra to manage

  ## Installation

  Search for `n8n-nodes-webcrawlerapi` in the n8n community nodes panel, or install manually:

  ```bash
  npm install n8n-nodes-webcrawlerapi
  ```

  ## Credentials

  Get your API key at [dash.webcrawlerapi.com/access](https://dash.webcrawlerapi.com/access).

  ## Node Parameters

  | Parameter | Required | Description |
  |---|---|---|
  | **URL to Scrape** | Yes | The URL of the page to scrape |
  | **Output Format** | No | `markdown` (default), `cleaned`, `html`, or `links` |

  ## Response Fields

  | Field | Description |
  |---|---|
  | `success` | `true` if scrape succeeded |
  | `status` | Job status |
  | `markdown` | Page content as clean Markdown |
  | `cleaned_content` | Cleaned plain text |
  | `raw_content` | Raw HTML |
  | `links` | Extracted links (when output format is `links`) |
  | `page_title` | Page title |
  | `page_status_code` | HTTP status of the scraped page |

  ## Usage

  1. Add **WebCrawlerAPI** node to your workflow
  2. Configure credentials with your API key
  3. Set the URL to scrape
  4. Choose output format
  5. Connect output to your LLM, vector store, or any downstream node

  ## Documentation

  Full API docs: [webcrawlerapi.com/docs](https://webcrawlerapi.com/docs)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Scrapes webpage content into clean Markdown or other formats optimized for LLM prompts, RAG pipelines, and vector storage by removing clutter like menus, banners, and ads.","capabilities":["Scrape any URL via /v2/scrape endpoint","Output in Markdown, Cleaned, HTML, or Links format","Smart caching for faster repeated requests","Built-in proxy support","Automatic retries and anti-bot handling","Headless browser execution","Extract page title and HTTP status code"],"authentication":"API key required (obtained from dash.webcrawlerapi.com/access)","commonUseCases":["Preparing website content for LLM prompts","Building RAG pipelines with cleaned text","Storing structured data in vector databases","Extracting links from web pages"],"limitations":["Requires external API key subscription","Dependent on third-party WebCrawlerAPI service uptime and rate limits"],"relatedNodes":["LLM nodes","Vector store nodes","Text processing nodes","HTTP request nodes"]}


node_type: n8n-nodes-liferay.liferay
package_name: n8n-nodes-liferay
display_name: Liferay
description: Liferay
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: chrishof
author_github_url: https://github.com/ChrisHof/
npm_package_name: n8n-nodes-liferay
npm_version: 1.0.7
community_fetched_at: 2026-07-14T14:40:34.332Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n Liferay Node

  [Liferay](https://www.liferay.com/) node for the [n8n](https://n8n.io/) workflow automation tool

  ## Features

  - Authentication via _OAuth2_ or _Basic Auth_
  - Easily interact with _Custom Liferay Objects_ in the GUI
  - All endpoints from _REST Applications_ available via Autocomplete

  All operations and parameters of the Headless APIs are made available via the OpenAPI definitions available from Liferays Headless APIs.

  ## Prerequisites

  - n8n
  - Liferay DXP 7.4+

  ## Installation

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

  ## Authentication

  ### Basic Auth

  Authentication via Basic Auth is available by default in Liferay. The user you're authenticating with needs to have the appropriate permissions for the API actions you want to perform.

  ### OAuth 2

  In Liferay, set up a new [OAuth 2 Application](https://learn.liferay.com/w/dxp/integration/headless-apis/using-liferay-as-a-headless-platform/using-oauth2/creating-oauth2-applications) under **_Control Panel - Security - OAuth 2 Administration_**. Keep the default settings, but only enable **Client Credentials** for the Allowed Authorization Types and choose the User the client will impersonate.  
  After saving the application, open the **Scopes** tab and enable the following in addition to the Scopes needed for your use case:

  - Liferay.Headless.Discovery.OpenAPI - Read data on your behalf (required to list all available OpenAPI definitions and endpoints)
  - Liferay.Object.Admin.REST - Read data on your behalf (required to list your Object Definitions and available actions)

  Go back to the **Credentials** tab and copy the **Client ID** and **Client Secret** into the n8n OAuth2 Credential and set _Access Token URL_ to **_{{LiferayHostname}}/o/oauth2/token_**, replacing **_{{LiferayHostname}}_** with the hostname of your Liferay instance.

  ## Usage

  ### Headless API Endpoint

  All Headless API operations are listed (similar to Liferays API Explorer) and can be selected using autocomplete fields:

  1. Select the _REST Application (i.e. headless-admin-user/v1.0)_
  2. Select the _endpoint (i.e. /v1.0/my-user-account)_
  3. Select the _method name (i.e. GET)_
  4. Enter additional values in the fields below if needed

  ### Object Operation

  While you can perform operations of Liferay Objects using the Headless API endpoints above, this offers a cleaner, filtered view of the available operations without having to choose the method separately:

  1. Select the _Object Defintion Name (i.e. SampleObject)_
  2. Select the _Operation Name (i.e. getSampleObjectsPage)_
  3. Enter additional values in the fields below if needed

  Using the **Execute step** button on top you can test if the request is successful and the expected data is returned.

  ## Video

  Watch the [YouTube video](https://www.youtube.com/watch?v=oInsLKQxGIo) for a n8n intro and overview of the _Liferay Node_.

  ## Screenshots

  ![n8n Screenshots](/img/screenshots.png?raw=true)

ai_documentation_summary:
  {"purpose":"This n8n node enables workflow automation by interacting with Liferay DXP 7.4+ Headless APIs, allowing users to access REST endpoints and manage custom objects.","capabilities":["Authentication via OAuth2","Authentication via Basic Auth","Access to all REST Application endpoints via Autocomplete","Interaction with Custom Liferay Objects in the GUI","List and execute Headless API operations","Perform Object Definition operations (e.g., getSampleObjectsPage)"],"authentication":"OAuth2 or Basic Auth","commonUseCases":["Automating data retrieval from Liferay instances","Managing custom Liferay objects through GUI","Integrating Liferay Headless APIs into n8n workflows"],"limitations":["Requires Liferay DXP 7.4 or higher","Requires specific OpenAPI scopes (Liferay.Headless.Discovery.OpenAPI, Liferay.Object.Admin.REST) for full functionality","User must have appropriate permissions for the API actions being performed"],"relatedNodes":["n8n HTTP Request node","n8n OAuth2 Credential node"]}


node_type: n8n-nodes-ckan.ckan
package_name: n8n-nodes-ckan
display_name: CKAN
description: Interact with the CKAN API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: siwiat
author_github_url: https://github.com/ondics/
npm_package_name: n8n-nodes-ckan
npm_version: 1.3.1
community_fetched_at: 2026-07-14T14:40:34.333Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "package_search",
      "options": [
        {
          "name": "Datastore Create",
          "value": "datastore_create",
          "description": "Create a new DataStore table for a resource, optionally defining its column schema. If the resource already has a DataStore table this will replace it."
        },
        {
          "name": "Datastore Search",
          "value": "datastore_search",
          "description": "Query rows stored in the CKAN DataStore for a tabular resource. Supports full-text search, column filters and pagination."
        },
        {
          "name": "Datastore Upsert",
          "value": "datastore_upsert",
          "description": "Insert or update rows in an existing DataStore table. The method controls conflict behaviour: \"insert\" errors on duplicates, \"update\" errors if the row does not exist, \"upsert\" handles both."
        },
        {
          "name": "Group Activity List",
          "value": "group_activity_list",
          "description": "Return the activity stream for a group — a chronological list of changes made to it."
        },
        {
          "name": "Group Create",
          "value": "group_create",
          "description": "Create a new group. You must be authorized to create groups."
        },
        {
          "name": "Group Delete",
          "value": "group_delete",
          "description": "Soft-delete a group — it is marked as deleted and removed from listings, but can be restored by a sysadmin."
        },
        {
          "name": "Group List",
          "value": "group_list",
          "description": "Return a list of group names (slugs) on the CKAN instance."
        },
        {
          "name": "Group Member Create",
          "value": "group_member_create",
          "description": "Add a user to a group with a given role, or update their role if already a member."
        },
        {
          "name": "Group Member Delete",
          "value": "group_member_delete",
          "description": "Remove a user from a group."
        },
        {
          "name": "Group Package Show",
          "value": "group_package_show",
          "description": "Return a list of datasets that belong to a group."
        },
        {
          "name": "Group Patch",
          "value": "group_patch",
          "description": "Partially update a group — only the fields you provide are changed, all others are left as-is."
        },
        {
          "name": "Group Purge",
          "value": "group_purge",
          "description": "Permanently and irreversibly delete a group and all references to it. Requires sysadmin rights."
        },
        {
          "name": "Group Show",
          "value": "group_show",
          "description": "Return the full details of a single group, including optional dataset and member information."
        },
        {
          "name": "Group Update",
          "value": "group_update",
          "description": "Update a group. Replaces the entire group record — fields not provided revert to defaults. Use group_patch to change only specific fields."
        },
        {
          "name": "Organization Create",
          "value": "organization_create",
          "description": "Create a new organization. Requires authorization to create organizations."
        },
        {
          "name": "Organization Delete",
          "value": "organization_delete",
          "description": "Soft-delete an organization — marked as deleted and removed from listings, but can be restored by a sysadmin."
        },
        {
          "name": "Organization List",
          "value": "organization_list",
          "description": "Return a list of organization names (slugs) registered on the CKAN instance."
        },
        {
          "name": "Organization Member Create",
          "value": "organization_member_create",
          "description": "Add a user to an organization with a given role, or update their role if already a member."
        },
        {
          "name": "Organization Member Delete",
          "value": "organization_member_delete",
          "description": "Remove a user from an organization."
        },
        {
          "name": "Organization Patch",
          "value": "organization_patch",
          "description": "Partially update an organization — only the fields you provide are changed, all others are left as-is."
        },
        {
          "name": "Organization Purge",
          "value": "organization_purge",
          "description": "Permanently and irreversibly delete an organization and all references to it. Requires sysadmin rights."
        },
        {
          "name": "Organization Show",
          "value": "organization_show",
          "description": "Return the full details of a single organization, including optional dataset and member information."
        },
        {
          "name": "Organization Update",
          "value": "organization_update",
          "description": "Update an organization. Replaces the entire record — fields not provided revert to defaults. Use organization_patch to change only specific fields."
        },
        {
          "name": "Package Activity List",
          "value": "package_activity_list",
          "description": "Return the activity stream for a dataset — a chronological list of who created, updated or deleted it."
        },
        {
          "name": "Package Create",
          "value": "package_create",
          "description": "Create a new dataset on the CKAN instance. Requires an API token with editor or admin rights on the target organization."
        },
        {
          "name": "Package Delete",
          "value": "package_delete",
          "description": "Soft-delete a dataset — it is marked as deleted and removed from search results and listings, but can be restored by a sysadmin. This is not a permanent purge."
        },
        {
          "name": "Package List",
          "value": "package_list",
          "description": "Return a flat list of dataset names (slugs) published on the CKAN instance."
        },
        {
          "name": "Package Patch",
          "value": "package_patch",
          "description": "Partially update an existing dataset — only the fields you provide are changed, all others are left as-is. Safer than a full update."
        },
        {
          "name": "Package Search",
          "value": "package_search",
          "description": "Search for datasets using a Solr query string. Supports filtering, sorting and pagination."
        },
        {
          "name": "Package Show",
          "value": "package_show",
          "description": "Return the full metadata of a single dataset, including its list of resources."
        },
        {
          "name": "Package Update",
          "value": "package_update",
          "description": "Fully replace an existing dataset. All fields not provided revert to their defaults — use package_patch to change only specific fields."
        },
        {
          "name": "Recently Changed Packages Activity List",
          "value": "recently_changed_packages_activity_list",
          "description": "Return the activity stream of all recently created or updated datasets across the whole CKAN instance. Useful for polling workflows."
        },
        {
          "name": "Resource Create",
          "value": "resource_create",
          "description": "Add a new resource (an external link or file reference) to an existing dataset."
        },
        {
          "name": "Resource Patch",
          "value": "resource_patch",
          "description": "Partially update the metadata of an existing resource — only the fields you provide are changed."
        },
        {
          "name": "Resource Search",
          "value": "resource_search",
          "description": "Search for resources across all public datasets by matching field values. Returns a count and a list of matching resource dicts."
        },
        {
          "name": "Resource Show",
          "value": "resource_show",
          "description": "Return the metadata of a single resource (file or link) attached to a dataset."
        },
        {
          "name": "Resource Update",
          "value": "resource_update",
          "description": "Fully replace an existing resource. All fields not provided revert to their defaults — use resource_patch to change only specific fields."
        },
        {
          "name": "Status Show",
          "value": "status_show",
          "description": "Return basic information about the CKAN site — version, installed extensions and site title. Also used internally as a health check."
        },
        {
          "name": "Tag List",
          "value": "tag_list",
          "description": "Return a list of tags used by datasets on the CKAN instance. Free tags (not in a vocabulary) are returned by default."
        },
        {
          "name": "User List",
          "value": "user_list",
          "description": "Return a list of users registered on the CKAN instance."
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Datastore Create",
      "value": "datastore_create",
      "description": "Create a new DataStore table for a resource, optionally defining its column schema. If the resource already has a DataStore table this will replace it."
    },
    {
      "name": "Datastore Search",
      "value": "datastore_search",
      "description": "Query rows stored in the CKAN DataStore for a tabular resource. Supports full-text search, column filters and pagination."
    },
    {
      "name": "Datastore Upsert",
      "value": "datastore_upsert",
      "description": "Insert or update rows in an existing DataStore table. The method controls conflict behaviour: \"insert\" errors on duplicates, \"update\" errors if the row does not exist, \"upsert\" handles both."
    },
    {
      "name": "Group Activity List",
      "value": "group_activity_list",
      "description": "Return the activity stream for a group — a chronological list of changes made to it."
    },
    {
      "name": "Group Create",
      "value": "group_create",
      "description": "Create a new group. You must be authorized to create groups."
    },
    {
      "name": "Group Delete",
      "value": "group_delete",
      "description": "Soft-delete a group — it is marked as deleted and removed from listings, but can be restored by a sysadmin."
    },
    {
      "name": "Group List",
      "value": "group_list",
      "description": "Return a list of group names (slugs) on the CKAN instance."
    },
    {
      "name": "Group Member Create",
      "value": "group_member_create",
      "description": "Add a user to a group with a given role, or update their role if already a member."
    },
    {
      "name": "Group Member Delete",
      "value": "group_member_delete",
      "description": "Remove a user from a group."
    },
    {
      "name": "Group Package Show",
      "value": "group_package_show",
      "description": "Return a list of datasets that belong to a group."
    },
    {
      "name": "Group Patch",
      "value": "group_patch",
      "description": "Partially update a group — only the fields you provide are changed, all others are left as-is."
    },
    {
      "name": "Group Purge",
      "value": "group_purge",
      "description": "Permanently and irreversibly delete a group and all references to it. Requires sysadmin rights."
    },
    {
      "name": "Group Show",
      "value": "group_show",
      "description": "Return the full details of a single group, including optional dataset and member information."
    },
    {
      "name": "Group Update",
      "value": "group_update",
      "description": "Update a group. Replaces the entire group record — fields not provided revert to defaults. Use group_patch to change only specific fields."
    },
    {
      "name": "Organization Create",
      "value": "organization_create",
      "description": "Create a new organization. Requires authorization to create organizations."
    },
    {
      "name": "Organization Delete",
      "value": "organization_delete",
      "description": "Soft-delete an organization — marked as deleted and removed from listings, but can be restored by a sysadmin."
    },
    {
      "name": "Organization List",
      "value": "organization_list",
      "description": "Return a list of organization names (slugs) registered on the CKAN instance."
    },
    {
      "name": "Organization Member Create",
      "value": "organization_member_create",
      "description": "Add a user to an organization with a given role, or update their role if already a member."
    },
    {
      "name": "Organization Member Delete",
      "value": "organization_member_delete",
      "description": "Remove a user from an organization."
    },
    {
      "name": "Organization Patch",
      "value": "organization_patch",
      "description": "Partially update an organization — only the fields you provide are changed, all others are left as-is."
    },
    {
      "name": "Organization Purge",
      "value": "organization_purge",
      "description": "Permanently and irreversibly delete an organization and all references to it. Requires sysadmin rights."
    },
    {
      "name": "Organization Show",
      "value": "organization_show",
      "description": "Return the full details of a single organization, including optional dataset and member information."
    },
    {
      "name": "Organization Update",
      "value": "organization_update",
      "description": "Update an organization. Replaces the entire record — fields not provided revert to defaults. Use organization_patch to change only specific fields."
    },
    {
      "name": "Package Activity List",
      "value": "package_activity_list",
      "description": "Return the activity stream for a dataset — a chronological list of who created, updated or deleted it."
    },
    {
      "name": "Package Create",
      "value": "package_create",
      "description": "Create a new dataset on the CKAN instance. Requires an API token with editor or admin rights on the target organization."
    },
    {
      "name": "Package Delete",
      "value": "package_delete",
      "description": "Soft-delete a dataset — it is marked as deleted and removed from search results and listings, but can be restored by a sysadmin. This is not a permanent purge."
    },
    {
      "name": "Package List",
      "value": "package_list",
      "description": "Return a flat list of dataset names (slugs) published on the CKAN instance."
    },
    {
      "name": "Package Patch",
      "value": "package_patch",
      "description": "Partially update an existing dataset — only the fields you provide are changed, all others are left as-is. Safer than a full update."
    },
    {
      "name": "Package Search",
      "value": "package_search",
      "description": "Search for datasets using a Solr query string. Supports filtering, sorting and pagination."
    },
    {
      "name": "Package Show",
      "value": "package_show",
      "description": "Return the full metadata of a single dataset, including its list of resources."
    },
    {
      "name": "Package Update",
      "value": "package_update",
      "description": "Fully replace an existing dataset. All fields not provided revert to their defaults — use package_patch to change only specific fields."
    },
    {
      "name": "Recently Changed Packages Activity List",
      "value": "recently_changed_packages_activity_list",
      "description": "Return the activity stream of all recently created or updated datasets across the whole CKAN instance. Useful for polling workflows."
    },
    {
      "name": "Resource Create",
      "value": "resource_create",
      "description": "Add a new resource (an external link or file reference) to an existing dataset."
    },
    {
      "name": "Resource Patch",
      "value": "resource_patch",
      "description": "Partially update the metadata of an existing resource — only the fields you provide are changed."
    },
    {
      "name": "Resource Search",
      "value": "resource_search",
      "description": "Search for resources across all public datasets by matching field values. Returns a count and a list of matching resource dicts."
    },
    {
      "name": "Resource Show",
      "value": "resource_show",
      "description": "Return the metadata of a single resource (file or link) attached to a dataset."
    },
    {
      "name": "Resource Update",
      "value": "resource_update",
      "description": "Fully replace an existing resource. All fields not provided revert to their defaults — use resource_patch to change only specific fields."
    },
    {
      "name": "Status Show",
      "value": "status_show",
      "description": "Return basic information about the CKAN site — version, installed extensions and site title. Also used internally as a health check."
    },
    {
      "name": "Tag List",
      "value": "tag_list",
      "description": "Return a list of tags used by datasets on the CKAN instance. Free tags (not in a vocabulary) are returned by default."
    },
    {
      "name": "User List",
      "value": "user_list",
      "description": "Return a list of users registered on the CKAN instance."
    }
  ]

npm_readme:
  # n8n-nodes-ckan

  This n8n node lets you interact with the CKAN API directly in n8n workflows.

  [n8n](https://n8n.io/) is a workflow automation platform.
  [CKAN](https://ckan.org/) is an open-source data portal platform.

  Tested with:
  * **n8n** v2.7.4
  * **ckan** 2.11.4

  ## Installation

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

  ## Features

  Read-only operations require **no** API token. Write operations require a CKAN API token set in the credentials.
  See the [CKAN API docs](https://docs.ckan.org/en/latest/api/) for reference.

  ### Read operations (no API token required)

  **Packages (Datasets)**
  - **Status Show** - Check CKAN instance status
  - **Package List** - List all dataset names on the instance
  - **Package Search** - Search datasets with Solr query, filters, facets and sorting
  - **Package Show** - Get full metadata of a dataset by ID or name
  - **Package Activity List** - Activity stream for a dataset
  - **Recently Changed Packages Activity List** - Site-wide activity stream of recently modified datasets

  **Resources**
  - **Resource Show** - Get metadata of a single resource by ID
  - **Resource Search** - Search resources across all public datasets by field values

  **DataStore**
  - **Datastore Search** - Query rows in a DataStore resource with filters, full-text search, sorting and pagination

  **Organizations**
  - **Organization List** - List organization names (or full objects) on the instance
  - **Organization Show** - Get full details of an organization

  **Groups**
  - **Group List** - List group names (or full objects) on the instance
  - **Group Show** - Get full details of a group
  - **Group Activity List** - Activity stream for a group
  - **Group Package Show** - List datasets belonging to a group

  **Users & Tags**
  - **User List** - List users on the instance
  - **Tag List** - List tags used by datasets, optionally filtered by vocabulary

  ### Write operations (API token required)

  **Packages (Datasets)**
  - **Package Create** - Create a new dataset
  - **Package Update** - Fully replace an existing dataset
  - **Package Patch** - Partially update a dataset (only provided fields change)
  - **Package Delete** - Soft-delete a dataset

  **Resources**
  - **Resource Create** - Add a new resource to a dataset
  - **Resource Update** - Fully replace an existing resource
  - **Resource Patch** - Partially update a resource

  **DataStore**
  - **Datastore Create** - Create or replace a DataStore table with optional schema
  - **Datastore Upsert** - Insert or update rows in a DataStore table

  **Groups**
  - **Group Create** - Create a new group
  - **Group Update** - Fully replace a group
  - **Group Patch** - Partially update a group
  - **Group Delete** - Soft-delete a group
  - **Group Purge** - Permanently delete a group (sysadmin only)
  - **Group Member Create** - Add a user to a group or update their role
  - **Group Member Delete** - Remove a user from a group

  **Organizations**
  - **Organization Create** - Create a new organization
  - **Organization Update** - Fully replace an organization
  - **Organization Patch** - Partially update an organization
  - **Organization Delete** - Soft-delete an organization
  - **Organization Purge** - Permanently delete an organization (sysadmin only)
  - **Organization Member Create** - Add a user to an organization or update their role
  - **Organization Member Delete** - Remove a user from an organization

  ## Usage
  1. Just enter the CKAN URL
  2. Select the CKAN API function
  3. The required and optional parameters will be shown

  **Heads up**: `package_search` returns paged results (max 1000 per request). `datastore_search` returns up to 32 000 rows per request. Use the `offset` parameter to paginate.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [CKAN documentation](https://docs.ckan.org/)
  - [CKAN API reference](https://docs.ckan.org/en/latest/api/)

  ## License

  [MIT](LICENSE)

  ## Credits
  Credits apply to the valuable work of:
  * [n8n](https://n8n.io)
  * [CKAN](https://ckan.org)

  ## Author

  (C) 2026, Ondics GmbH, https://ondics.de/

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the CKAN API to manage datasets, resources, organizations, and datastores within open-source data portals.","capabilities":["Check CKAN instance status","List datasets (packages)","Search datasets with filters, facets, and sorting","Retrieve specific dataset details by ID","Access dataset activity streams","Search recently changed datasets","Retrieve resource details by ID","Search resources across public datasets","Query data from DataStore resources","List organizations"],"authentication":"None for read operations; CKAN API token required for write operations","commonUseCases":["Automated data extraction from CKAN portals","Monitoring dataset activity and changes","Bulk dataset management and updates","Data integration workflows with open data sources"],"limitations":["Search and datastore search operations return paged results with a maximum of 1000 entries per request","Write operations require a CKAN API token configured in credentials","Read-only features do not require authentication but still need the CKAN URL"],"relatedNodes":["HTTP Request","Function Item","Data Store"]}


node_type: @gotohuman/n8n-nodes-gotohuman.gotoHumanTrigger
package_name: @gotohuman/n8n-nodes-gotohuman
display_name: gotoHuman Trigger
description: Triggers when a gotoHuman event occurs
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: gotohuman-admin
author_github_url: https://github.com/gotohuman/n8n-nodes-gotohuman.git
npm_package_name: @gotohuman/n8n-nodes-gotohuman
npm_version: 0.3.0
community_fetched_at: 2026-07-14T14:40:34.335Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  ![Banner Image](https://github.com/user-attachments/assets/4d31e977-018f-47cc-86f5-2caff3fae1d7)

  # n8n-nodes-gotohuman

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

  gotoHuman is a Human-in-the-Loop solution that lets you easily add highly customizable human approvals to your AI workflows.  
  Perfect for long-running workflows or workflows triggered in the background by external triggers like emails, tickets, or webhooks.

  Many built-in features:
  - Ready-to-use web UI
  	- Inbox
  	- Customizable review interface
  	- Controls to approve, reject, or edit AI outputs
  	- Allow retries with instructions
  	- Supports text, markdown, JSON, images, and more
  - Slack integration
  - Notifications
  - Response dataset to use as memory
  - And much more!

  ## Installation

  npm package name:
  ```
  @gotohuman/n8n-nodes-gotohuman
  ```

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

  ## Credentials

  Find your API key in the [gotoHuman dashboard](https://app.gotohuman.com).

  ## Usage

  Refer to our [documentation](https://docs.gotohuman.com/Integrations/n8n/) for detailed information on using this node.

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when a gotoHuman review is completed or a trigger form is submitted, enabling human-in-the-loop approvals for AI workflows.","capabilities":["Trigger on completed gotoHuman reviews","Trigger on submitted trigger forms","Integrate with gotoHuman inbox and review interface","Support text, markdown, JSON, and image content","Enable approve, reject, or edit AI outputs","Allow retries with instructions","Integrate with Slack for notifications","Store responses in a dataset for memory"],"authentication":"API key required (found in gotoHuman dashboard)","commonUseCases":["Human approval for long-running AI workflows","Background task validation via external triggers","Email or ticket-based workflow initiation","Review and edit AI-generated content before deployment"],"limitations":["Community node (may lack official support)","Requires gotoHuman account and API key"],"relatedNodes":["gotoHuman Trigger","gotoHuman Action","gotoHuman Review","gotoHuman Slack"]}


node_type: @carbonvoice/n8n-nodes-carbonvoice.carbonVoice
package_name: @carbonvoice/n8n-nodes-carbonvoice
display_name: Carbon Voice
description: Send messages, voice memos, and manage Carbon Voice resources
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: cristian_murillo
author_github_url: https://github.com/PhononX/cv-n8n-node.git
npm_package_name: @carbonvoice/n8n-nodes-carbonvoice
npm_version: 0.1.9
community_fetched_at: 2026-07-14T14:40:34.336Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "conversation",
      "options": [
        {
          "name": "AI Prompt",
          "value": "aiPrompt"
        },
        {
          "name": "Action Item",
          "value": "actionItem"
        },
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Voice Memo",
          "value": "voiceMemo"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Add Users",
          "value": "addUsers",
          "action": "Add users to a conversation",
          "description": "Add one or more users to an existing conversation"
        },
        {
          "name": "Send Direct Message",
          "value": "sendDirectMessage",
          "action": "Send a direct message to one or more users",
          "description": "Open or reuse a direct conversation with one or more users and post a message"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send a message to a conversation",
          "description": "Post a text message to an existing conversation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addLinkAttachments",
      "options": [
        {
          "name": "Add Link Attachments",
          "value": "addLinkAttachments",
          "action": "Add link attachments to a message",
          "description": "Append one or more URL attachments to an existing message"
        },
        {
          "name": "Create Share Link",
          "value": "createShareLink",
          "action": "Create a share link for a message",
          "description": "Generate a public or specified-access share link"
        },
        {
          "name": "Remove Label",
          "value": "removeLabel",
          "action": "Remove a label from a message",
          "description": "Remove a specific label from a message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a voice memo",
          "description": "Post a voice memo from text or an uploaded audio file"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voiceMemo"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an action item",
          "description": "Create a new action item attached to a conversation or folder"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an action item",
          "description": "Update fields and/or status of an existing action item"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "actionItem"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createResponse",
      "options": [
        {
          "name": "Create Response",
          "value": "createResponse",
          "action": "Create an AI prompt response",
          "description": "Run an AI prompt against one or more messages"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiPrompt"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Users",
      "value": "addUsers",
      "action": "Add users to a conversation",
      "description": "Add one or more users to an existing conversation",
      "resource": "conversation"
    },
    {
      "name": "Send Direct Message",
      "value": "sendDirectMessage",
      "action": "Send a direct message to one or more users",
      "description": "Open or reuse a direct conversation with one or more users and post a message",
      "resource": "conversation"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send a message to a conversation",
      "description": "Post a text message to an existing conversation",
      "resource": "conversation"
    },
    {
      "name": "Add Link Attachments",
      "value": "addLinkAttachments",
      "action": "Add link attachments to a message",
      "description": "Append one or more URL attachments to an existing message",
      "resource": "message"
    },
    {
      "name": "Create Share Link",
      "value": "createShareLink",
      "action": "Create a share link for a message",
      "description": "Generate a public or specified-access share link",
      "resource": "message"
    },
    {
      "name": "Remove Label",
      "value": "removeLabel",
      "action": "Remove a label from a message",
      "description": "Remove a specific label from a message",
      "resource": "message"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a voice memo",
      "description": "Post a voice memo from text or an uploaded audio file",
      "resource": "voiceMemo"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an action item",
      "description": "Create a new action item attached to a conversation or folder",
      "resource": "actionItem"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an action item",
      "description": "Update fields and/or status of an existing action item",
      "resource": "actionItem"
    },
    {
      "name": "Create Response",
      "value": "createResponse",
      "action": "Create an AI prompt response",
      "description": "Run an AI prompt against one or more messages",
      "resource": "aiPrompt"
    }
  ]

npm_readme:
  # @carbonvoice/n8n-nodes-carbonvoice

  [![npm version](https://img.shields.io/npm/v/@carbonvoice/n8n-nodes-carbonvoice.svg)](https://www.npmjs.com/package/@carbonvoice/n8n-nodes-carbonvoice)
  [![license](https://img.shields.io/npm/l/@carbonvoice/n8n-nodes-carbonvoice.svg)](https://github.com/PhononX/cv-n8n-node/blob/main/LICENSE.md)

  Official [Carbon Voice](https://carbonvoice.app) community node for [n8n](https://n8n.io). Send messages, post voice memos, manage action items, run AI prompts, and react to events across your Carbon Voice workspaces — all from your n8n workflows.

  > **Note:** This is a community node. Self-hosted n8n users can install it from the Community Nodes panel. n8n Cloud users need to enable community nodes in their account settings.

  ---

  ## What's included

  ### Trigger node — `Carbon Voice Trigger`

  Starts a workflow when an event fires in Carbon Voice. One node, ten event types:

  | Event | Fires when |
  |---|---|
  | New Message Received | Someone other than you posts a message in a conversation you're part of |
  | Message Posted to Conversation | Any message lands in a specific conversation |
  | New Voice Memo Posted | A new voice memo is posted (optionally scoped to workspace / folder) |
  | Label Added to Message | A specific label is applied to a message |
  | AI Response Generated | An AI prompt produces a response |
  | AI System Response Generated | A curated system prompt produces a response |
  | Action Item Created | A new action item is created |
  | Action Item Updated | An action item is updated |
  | Action Item Deleted | An action item is deleted |
  | Action Item Status Changed | An action item's status changes (suggested → todo → done) |

  Most events accept optional filters (workspace, folder, conversation, assigned user, etc.) so you only receive the events that match.

  ### Action node — `Carbon Voice`

  A single action node with five resources and ten operations:

  | Resource | Operation |
  |---|---|
  | **Conversation** | Send Message |
  | | Send Direct Message (to one or more users by ID or email) |
  | | Add Users |
  | **Message** | Add Link Attachments |
  | | Remove Label |
  | | Create Share Link (public or specified-access) |
  | **Voice Memo** | Create (text-to-voice **or** upload audio binary) |
  | **Action Item** | Create |
  | | Update (fields and/or status) |
  | **AI Prompt** | Create Response |

  Dynamic dropdowns power the workspace, conversation, user, folder, label and AI prompt fields — no copy/pasting IDs.

  ---

  ## Install

  ### n8n self-hosted

  1. Open **Settings → Community Nodes**.
  2. Click **Install**.
  3. Paste `@carbonvoice/n8n-nodes-carbonvoice` and confirm.

  After the package installs, restart n8n. Both `Carbon Voice` and `Carbon Voice Trigger` appear in the node picker.

  ### n8n Cloud

  Community nodes need to be enabled for your Cloud account. See the [n8n docs](https://docs.n8n.io/integrations/community-nodes/installation/) for the current process.

  ---

  ## Authentication

  This node authenticates with a **Personal Access Token (PAT)**.

  1. Sign in at [carbonvoice.app](https://carbonvoice.app).
  2. Open the [Developer Portal](https://developer.carbonvoice.app) → **Personal Access Tokens**.
  3. Click **New token**, give it a name (e.g. `n8n`), and copy the value. **The token is shown once — copy it before closing the dialog.**
  4. In n8n: **Credentials → New → Carbon Voice API** → paste the token → **Save**.

  The credential test will hit `/whoami` immediately so you'll know it worked.

  The same credential is used by both the action node and the trigger node.

  ---

  ## Quick start — your first workflow

  **Example: relay every new Carbon Voice voice memo into Slack**

  1. Drop a `Carbon Voice Trigger` node.
  2. Pick the credential you just created.
  3. Event: **New Voice Memo Posted**. Optionally pick a workspace / folder to filter.
  4. Save → **Publish** the workflow.
  5. Connect a Slack node next to it that posts the `transcript_txt` field to a channel.

  Whenever someone records a new voice memo in the chosen workspace, the workflow runs.

  ---

  ## Trigger test mode

  n8n's **Test this trigger** button works end-to-end with Carbon Voice — clicking it registers a short-lived subscription, waits for the next matching event, and shows you the raw payload.

  For workflows that should run continuously (not just for testing), use **Publish** instead — that registers a persistent subscription that survives n8n restarts.

  ---

  ## Configuration tips

  - **Workspace filter** on triggers is optional. If you leave it blank, the trigger fires for events across every workspace your user has access to.
  - **Send Direct Message** accepts either user IDs (from the dropdown) **or** comma-separated emails. Use emails for recipients who aren't yet in your contacts.
  - **Create Voice Memo** has two source modes: type the text and the server reads it aloud, or hand it a binary property from a previous node (e.g. a `Read Binary File` or an upstream HTTP download) and the audio is uploaded directly.
  - **Create Share Link** defaults to public. Pick **Specified** if you want to limit access to certain users, workspaces, or conversations.

  ---

  ## Troubleshooting

  **"The credential is incorrect" when saving**
  The PAT may have been revoked or copied incorrectly. Generate a new one in the developer portal.

  **Trigger activates but no events arrive**
  Open the n8n executions tab — the trigger may have fired but the workflow had an error downstream. Also double-check that messages are being sent from a different Carbon Voice user; the **New Message Received** event filters out events whose creator matches the authenticated user (no self-loops).

  **`Bad request - please check your parameters` when activating a trigger**
  Almost always a filter shape mismatch. Open an issue with the request body so we can adjust the filter schema — Carbon Voice validates filter keys + operator combinations strictly.

  **Webhook arrives in ngrok but n8n shows no execution**
  Make sure the workflow is **Published** (not just saved). Test-mode subscriptions expire after the first matching event.

  ---

  ## Versioning & contributing

  This package follows [Semantic Versioning](https://semver.org). Breaking changes bump the major.

  Issues and PRs welcome: [github.com/PhononX/cv-n8n-node](https://github.com/PhononX/cv-n8n-node).

  ---

  ## License

  [MIT](./LICENSE.md) © Carbon Voice
  # Published via GitHub Actions with npm provenance
  # Published via GitHub Actions with npm provenance
  # Published via GitHub Actions with npm provenance

ai_documentation_summary:
  {"purpose":"This n8n community node enables interaction with Carbon Voice by sending messages, managing voice memos, creating action items, and listening for events like new messages or AI responses.","capabilities":["Send messages to conversations or direct messages to users","Add link attachments to messages","Manage message labels and create share links","Create voice memos via text-to-voice or audio file upload","Create and update action items with status changes","Generate AI prompt responses","Trigger workflows on events: new messages, voice memos, labels, AI responses, and action item changes","Filter events by workspace, folder, conversation, or assigned user"],"authentication":"Personal Access Token (PAT) via n8n Credentials","commonUseCases":["Automatically post voice memo transcripts to Slack or other communication tools","Monitor AI-generated responses from Carbon Voice and trigger follow-up actions","Track action item status changes across workspaces","Receive notifications for new messages or labels applied to conversations"],"limitations":["Community node only (requires enabling in n8n Cloud settings)","Triggers do not fire for events created by the authenticated user (no self-loops)","Filter parameters are strictly validated and may require specific key/operator combinations"],"relatedNodes":["n8n Trigger Node","n8n Slack Node","n8n Binary File Node","n8n HTTP Request Node"]}


node_type: @carbonvoice/n8n-nodes-carbonvoice.carbonVoiceTrigger
package_name: @carbonvoice/n8n-nodes-carbonvoice
display_name: Carbon Voice Trigger
description: Starts the workflow when a Carbon Voice event fires
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: cristian_murillo
author_github_url: https://github.com/PhononX/cv-n8n-node.git
npm_package_name: @carbonvoice/n8n-nodes-carbonvoice
npm_version: 0.1.9
community_fetched_at: 2026-07-14T14:40:34.337Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # @carbonvoice/n8n-nodes-carbonvoice

  [![npm version](https://img.shields.io/npm/v/@carbonvoice/n8n-nodes-carbonvoice.svg)](https://www.npmjs.com/package/@carbonvoice/n8n-nodes-carbonvoice)
  [![license](https://img.shields.io/npm/l/@carbonvoice/n8n-nodes-carbonvoice.svg)](https://github.com/PhononX/cv-n8n-node/blob/main/LICENSE.md)

  Official [Carbon Voice](https://carbonvoice.app) community node for [n8n](https://n8n.io). Send messages, post voice memos, manage action items, run AI prompts, and react to events across your Carbon Voice workspaces — all from your n8n workflows.

  > **Note:** This is a community node. Self-hosted n8n users can install it from the Community Nodes panel. n8n Cloud users need to enable community nodes in their account settings.

  ---

  ## What's included

  ### Trigger node — `Carbon Voice Trigger`

  Starts a workflow when an event fires in Carbon Voice. One node, ten event types:

  | Event | Fires when |
  |---|---|
  | New Message Received | Someone other than you posts a message in a conversation you're part of |
  | Message Posted to Conversation | Any message lands in a specific conversation |
  | New Voice Memo Posted | A new voice memo is posted (optionally scoped to workspace / folder) |
  | Label Added to Message | A specific label is applied to a message |
  | AI Response Generated | An AI prompt produces a response |
  | AI System Response Generated | A curated system prompt produces a response |
  | Action Item Created | A new action item is created |
  | Action Item Updated | An action item is updated |
  | Action Item Deleted | An action item is deleted |
  | Action Item Status Changed | An action item's status changes (suggested → todo → done) |

  Most events accept optional filters (workspace, folder, conversation, assigned user, etc.) so you only receive the events that match.

  ### Action node — `Carbon Voice`

  A single action node with five resources and ten operations:

  | Resource | Operation |
  |---|---|
  | **Conversation** | Send Message |
  | | Send Direct Message (to one or more users by ID or email) |
  | | Add Users |
  | **Message** | Add Link Attachments |
  | | Remove Label |
  | | Create Share Link (public or specified-access) |
  | **Voice Memo** | Create (text-to-voice **or** upload audio binary) |
  | **Action Item** | Create |
  | | Update (fields and/or status) |
  | **AI Prompt** | Create Response |

  Dynamic dropdowns power the workspace, conversation, user, folder, label and AI prompt fields — no copy/pasting IDs.

  ---

  ## Install

  ### n8n self-hosted

  1. Open **Settings → Community Nodes**.
  2. Click **Install**.
  3. Paste `@carbonvoice/n8n-nodes-carbonvoice` and confirm.

  After the package installs, restart n8n. Both `Carbon Voice` and `Carbon Voice Trigger` appear in the node picker.

  ### n8n Cloud

  Community nodes need to be enabled for your Cloud account. See the [n8n docs](https://docs.n8n.io/integrations/community-nodes/installation/) for the current process.

  ---

  ## Authentication

  This node authenticates with a **Personal Access Token (PAT)**.

  1. Sign in at [carbonvoice.app](https://carbonvoice.app).
  2. Open the [Developer Portal](https://developer.carbonvoice.app) → **Personal Access Tokens**.
  3. Click **New token**, give it a name (e.g. `n8n`), and copy the value. **The token is shown once — copy it before closing the dialog.**
  4. In n8n: **Credentials → New → Carbon Voice API** → paste the token → **Save**.

  The credential test will hit `/whoami` immediately so you'll know it worked.

  The same credential is used by both the action node and the trigger node.

  ---

  ## Quick start — your first workflow

  **Example: relay every new Carbon Voice voice memo into Slack**

  1. Drop a `Carbon Voice Trigger` node.
  2. Pick the credential you just created.
  3. Event: **New Voice Memo Posted**. Optionally pick a workspace / folder to filter.
  4. Save → **Publish** the workflow.
  5. Connect a Slack node next to it that posts the `transcript_txt` field to a channel.

  Whenever someone records a new voice memo in the chosen workspace, the workflow runs.

  ---

  ## Trigger test mode

  n8n's **Test this trigger** button works end-to-end with Carbon Voice — clicking it registers a short-lived subscription, waits for the next matching event, and shows you the raw payload.

  For workflows that should run continuously (not just for testing), use **Publish** instead — that registers a persistent subscription that survives n8n restarts.

  ---

  ## Configuration tips

  - **Workspace filter** on triggers is optional. If you leave it blank, the trigger fires for events across every workspace your user has access to.
  - **Send Direct Message** accepts either user IDs (from the dropdown) **or** comma-separated emails. Use emails for recipients who aren't yet in your contacts.
  - **Create Voice Memo** has two source modes: type the text and the server reads it aloud, or hand it a binary property from a previous node (e.g. a `Read Binary File` or an upstream HTTP download) and the audio is uploaded directly.
  - **Create Share Link** defaults to public. Pick **Specified** if you want to limit access to certain users, workspaces, or conversations.

  ---

  ## Troubleshooting

  **"The credential is incorrect" when saving**
  The PAT may have been revoked or copied incorrectly. Generate a new one in the developer portal.

  **Trigger activates but no events arrive**
  Open the n8n executions tab — the trigger may have fired but the workflow had an error downstream. Also double-check that messages are being sent from a different Carbon Voice user; the **New Message Received** event filters out events whose creator matches the authenticated user (no self-loops).

  **`Bad request - please check your parameters` when activating a trigger**
  Almost always a filter shape mismatch. Open an issue with the request body so we can adjust the filter schema — Carbon Voice validates filter keys + operator combinations strictly.

  **Webhook arrives in ngrok but n8n shows no execution**
  Make sure the workflow is **Published** (not just saved). Test-mode subscriptions expire after the first matching event.

  ---

  ## Versioning & contributing

  This package follows [Semantic Versioning](https://semver.org). Breaking changes bump the major.

  Issues and PRs welcome: [github.com/PhononX/cv-n8n-node](https://github.com/PhononX/cv-n8n-node).

  ---

  ## License

  [MIT](./LICENSE.md) © Carbon Voice
  # Published via GitHub Actions with npm provenance
  # Published via GitHub Actions with npm provenance
  # Published via GitHub Actions with npm provenance

ai_documentation_summary:
  {"purpose":"A community n8n node that triggers workflows on specific Carbon Voice events (messages, voice memos, action items, AI responses) and allows performing actions like sending messages, creating voice memos, or updating action items.","capabilities":["Trigger on New Message Received","Trigger on Message Posted to Conversation","Trigger on New Voice Memo Posted","Trigger on Label Added to Message","Trigger on AI Response Generated","Trigger on AI System Response Generated","Trigger on Action Item Created/Updated/Deleted/Status Changed","Send Messages to Conversations or Direct Messages","Add Link Attachments to Messages","Manage Message Labels"],"authentication":"Personal Access Token (PAT) via n8n Credentials","commonUseCases":["Relay voice memos from Carbon Voice to Slack or other chat platforms","Automate action item creation based on incoming messages","Generate AI responses to prompts posted in Carbon Voice","Send direct notifications to specific users when new messages arrive","Create voice memos programmatically using text or uploaded audio files"],"limitations":["New Message Received event filters out events from the authenticated user (no self-loops)","Requires manual installation via npm package for self-hosted n8n","Community nodes must be enabled in n8n Cloud account settings","Trigger filter schema validation is strict and may cause 'Bad request' errors if parameters are mismatched"],"relatedNodes":["Slack","Email","HTTP Request","Read Binary File","Generic Webhook"]}


node_type: @finlight/n8n-nodes-finlight.finlightWebhookTrigger
package_name: @finlight/n8n-nodes-finlight
display_name: finlight Webhook Trigger
description: Triggers on new webhook events from finlight
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: jubelon
author_github_url: https://github.com/jubeiargh/n8n-nodes-finlight.git
npm_package_name: @finlight/n8n-nodes-finlight
npm_version: 0.2.2
community_fetched_at: 2026-07-14T14:40:34.338Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # @finlight/n8n-nodes-finlight

  **Official n8n integration for [finlight](https://finlight.me)** — a real-time news and finance API for geopolitics, markets, and macro headlines.

  This package adds native nodes to [n8n](https://n8n.io) to let you consume and query finlight data inside your automated workflows.

  ---

  ## ✨ Features

  - ✅ `finlight Webhook Trigger` — Listen to live streaming events
  - ✅ `finlight Article Search` — Query articles via REST API with flexible filters
  - 🔐 Supports API Key and Basic Auth

  ---

  ## 🚀 Installation

  If you're using a self-hosted n8n instance:

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

  Then set the custom extension path in your environment or config:

  ```env
  N8N_CUSTOM_EXTENSIONS=/path/to/node_modules/@finlight/n8n-nodes-finlight
  ```

  Restart n8n and you'll see the `finlight` nodes available in the editor.

  ---

  ## 🧪 Included Nodes

  ### 🔔 `finlight Webhook Trigger`

  Listen to webhook events sent from finlight (e.g. breaking news, alerts, geopolitical headlines).

  **Manual webhook registration is required.**

  You can create webhooks in your account at:
  🔧 [app.finlight.me](https://app.finlight.me)

  Authentication options:

  * `x-finlight-key` header
  * Basic Auth

  ---

  ### 📡 `finlight Article Search`

  Fetch news articles from the finlight `/v2/articles` REST API using a flexible set of parameters:

  * `query`
  * `sources` (array)
  * `excludeSources` (array)
  * `tickers` (array)
  * `from`, `to`, `language`, `order`, `page`, `pageSize`
  * `includeContent`, `includeEntities`, `excludeEmptyContent`

  See full API reference at:
  📚 [docs.finlight.me](https://docs.finlight.me)

  ---

  ## 📦 Development

  Clone the repo and build:

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

  To test with your local n8n instance:

  ```bash
  export N8N_CUSTOM_EXTENSIONS=/absolute/path/to/dist
  n8n start
  ```

  Or map `dist/` into Docker if using a container setup.

  ---

  ## 📘 License

  [MIT](./LICENSE) – by [finlight](https://finlight.me)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows on new events from finlight, a real-time news and finance API for geopolitics, markets, and macro headlines.","capabilities":["Listen to live streaming webhook events","Receive breaking news alerts","Capture geopolitical headlines","Process market updates","Handle macro economic news","Support manual webhook registration"],"authentication":"API Key (x-finlight-key header) or Basic Auth","commonUseCases":["Real-time monitoring of geopolitical events","Automated alerts for breaking financial news","Market data ingestion for trading systems","Macroeconomic trend tracking"],"limitations":["Manual webhook registration is required before use","Requires manual setup of custom extension path in n8n"],"relatedNodes":["finlight Article Search","REST Request","Webhook Trigger"]}


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

updated_at: 2026-07-14 14:40:34
author_name: jubelon
author_github_url: https://github.com/jubeiargh/n8n-nodes-finlight.git
npm_package_name: @finlight/n8n-nodes-finlight
npm_version: 0.2.2
community_fetched_at: 2026-07-14T14:40:34.339Z
ai_summary_generated_at: 2026-05-22 10:26:01
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search Articles",
          "value": "search",
          "action": "Search articles",
          "description": "Search articles using the finlight REST API"
        },
        {
          "name": "Get Article by Link",
          "value": "getByLink",
          "action": "Get article by link",
          "description": "Get a specific article by its URL"
        },
        {
          "name": "List Sources",
          "value": "listSources",
          "action": "List sources",
          "description": "Get all available news sources"
        }
      ],
      "displayName": "Operation"
    }
  ]

operations:
  [
    {
      "name": "Search Articles",
      "value": "search",
      "action": "Search articles",
      "description": "Search articles using the finlight REST API"
    },
    {
      "name": "Get Article by Link",
      "value": "getByLink",
      "action": "Get article by link",
      "description": "Get a specific article by its URL"
    },
    {
      "name": "List Sources",
      "value": "listSources",
      "action": "List sources",
      "description": "Get all available news sources"
    }
  ]

npm_readme:
  # @finlight/n8n-nodes-finlight

  **Official n8n integration for [finlight](https://finlight.me)** — a real-time news and finance API for geopolitics, markets, and macro headlines.

  This package adds native nodes to [n8n](https://n8n.io) to let you consume and query finlight data inside your automated workflows.

  ---

  ## ✨ Features

  - ✅ `finlight Webhook Trigger` — Listen to live streaming events
  - ✅ `finlight Article Search` — Query articles via REST API with flexible filters
  - 🔐 Supports API Key and Basic Auth

  ---

  ## 🚀 Installation

  If you're using a self-hosted n8n instance:

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

  Then set the custom extension path in your environment or config:

  ```env
  N8N_CUSTOM_EXTENSIONS=/path/to/node_modules/@finlight/n8n-nodes-finlight
  ```

  Restart n8n and you'll see the `finlight` nodes available in the editor.

  ---

  ## 🧪 Included Nodes

  ### 🔔 `finlight Webhook Trigger`

  Listen to webhook events sent from finlight (e.g. breaking news, alerts, geopolitical headlines).

  **Manual webhook registration is required.**

  You can create webhooks in your account at:
  🔧 [app.finlight.me](https://app.finlight.me)

  Authentication options:

  * `x-finlight-key` header
  * Basic Auth

  ---

  ### 📡 `finlight Article Search`

  Fetch news articles from the finlight `/v2/articles` REST API using a flexible set of parameters:

  * `query`
  * `sources` (array)
  * `excludeSources` (array)
  * `tickers` (array)
  * `from`, `to`, `language`, `order`, `page`, `pageSize`
  * `includeContent`, `includeEntities`, `excludeEmptyContent`

  See full API reference at:
  📚 [docs.finlight.me](https://docs.finlight.me)

  ---

  ## 📦 Development

  Clone the repo and build:

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

  To test with your local n8n instance:

  ```bash
  export N8N_CUSTOM_EXTENSIONS=/absolute/path/to/dist
  n8n start
  ```

  Or map `dist/` into Docker if using a container setup.

  ---

  ## 📘 License

  [MIT](./LICENSE) – by [finlight](https://finlight.me)

ai_documentation_summary:
  {"purpose":"This n8n node package enables interaction with the finlight REST API to consume real-time news and finance data for geopolitics, markets, and macro headlines.","capabilities":["Webhook Trigger for listening to live streaming events","Article Search with flexible REST API filters","Support for x-finlight-key header authentication","Support for Basic Auth authentication","Filtering by sources, tickers, language, date range, and order"],"authentication":"API Key (x-finlight-key header) or Basic Auth","commonUseCases":["Automated monitoring of breaking news and geopolitical headlines","Real-time alerts for market movements and macro headlines","Scheduled news aggregation and analysis workflows"],"limitations":["Manual webhook registration is required for the Webhook Trigger node"],"relatedNodes":["Webhook Trigger","REST Request","HTTP Request"]}


node_type: n8n-nodes-wawcd.wawcdSendMessage
package_name: n8n-nodes-wawcd
display_name: WAWCD Plugin Send Message
description: Send WhatsApp messages through WAWCD (text, media, audio, location, delays, scheduling)
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: wawcd
author_github_url: https://github.com/WAWCD-LLC/wawcd-n8n-node.git
npm_package_name: n8n-nodes-wawcd
npm_version: 1.2.0
community_fetched_at: 2026-07-14T14:40:34.340Z
ai_summary_generated_at: 2026-05-22 10:26:01
npm_readme:
  # n8n-nodes-wawcd

  Official **WAWCD** community nodes for [n8n](https://n8n.io). Connect WhatsApp automation in n8n to your WAWCD account — send messages from workflows and trigger workflows when customers message you on WhatsApp.

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-wawcd)](https://www.npmjs.com/package/n8n-nodes-wawcd)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

  ---

  ## Table of contents

  - [What this package does](#what-this-package-does)
  - [How it works](#how-it-works)
  - [Features](#features)
  - [Prerequisites](#prerequisites)
  - [Installation](#installation)
  - [Quick start](#quick-start)
  - [Credentials (WAWCD API)](#credentials-wawcd-api)
  - [Nodes](#nodes)
  - [WAWCD WhatsApp Receice Message (Trigger)](#wawcd-whatsapp-receice-message-trigger)
  - [WAWCD WhatsApp Send Message](#wawcd-whatsapp-send-message)
  - [Example workflows](#example-workflows)
  - [Common use cases](#common-use-cases)
  - [Debugging & troubleshooting](#debugging--troubleshooting)
  - [Development](#development)
  - [Publishing to npm](#publishing-to-npm)
  - [Submit for n8n verification](#submit-for-n8n-verification)
  - [Support & links](#support--links)
  - [License](#license)

  ---

  ## What this package does

  This npm package adds two n8n nodes that bridge **n8n workflows** and **WAWCD** (WhatsApp automation via the WAWCD browser extension):

  | Direction | Node | What happens |
  |-----------|------|--------------|
  | **Inbound** (WhatsApp → n8n) | **WAWCD WhatsApp Receice Message** | WAWCD POSTs a JSON payload to your n8n webhook when someone messages your connected WhatsApp line. The workflow starts automatically. |
  | **Outbound** (n8n → WhatsApp) | **WAWCD WhatsApp Send Message** | n8n calls the WAWCD API to deliver text, media, audio, location, or scheduled messages to one or more WhatsApp numbers. |

  You can use either node alone or chain them — for example, receive a customer message, run AI or CRM logic, then reply with **Send Message**.

  ---

  ## How it works

  ```mermaid
  sequenceDiagram
      participant WA as WhatsApp contact
      participant WAWCD as WAWCD extension + API
      participant n8n as n8n workflow

      Note over WA,n8n: Inbound — Receive Message (Trigger)
      WA->>WAWCD: Customer sends message
      WAWCD->>n8n: POST JSON to webhook URL
      n8n->>n8n: Workflow runs (AI, CRM, etc.)

      Note over WA,n8n: Outbound — Send Message
      n8n->>WAWCD: POST /webhooks/send-message (Bearer token)
      WAWCD->>WA: Message delivered via WhatsApp Web
  ```

  **Inbound flow**

  1. You add **WAWCD WhatsApp Receice Message** to a workflow and copy its webhook URL.
  2. In WAWCD → **Outgoing Webhooks**, you register that URL (POST).
  3. When a contact messages your WAWCD-connected WhatsApp account, WAWCD sends JSON to n8n.
  4. The node normalizes field names (including `reciver-*` → `receiver-*`) and passes data to the next nodes.

  **Outbound flow**

  1. You create **WAWCD API** credentials in n8n (API base URL + incoming webhook token).
  2. You add **WAWCD WhatsApp Send Message** and configure recipient(s) and content.
  3. The node POSTs to `{API Base URL}/webhooks/send-message` with `Authorization: Bearer <token>`.
  4. WAWCD delivers the message through WhatsApp Web (extension must be online).

  The WhatsApp account is tied to your **incoming webhook token** on the WAWCD backend — you do not pass a separate account ID in the send body.

  ---

  ## Features

  ### WAWCD WhatsApp Receice Message (Trigger)

  - Webhook trigger with **Test URL** (while editing) and **Production URL** (when workflow is active)
  - Optional custom **Path** segment for the webhook URL
  - **Incoming Authentication** — none, or shared secret via `Authorization: Bearer` or `X-WAWCD-Token`
  - **Strict Payload Validation** — reject requests that do not look like WAWCD JSON
  - Normalizes WAWCD’s `reciver-*` typo fields to canonical `receiver-*` keys
  - Supports nested `body` objects in the payload
  - Preserves all other WAWCD fields unchanged

  ### WAWCD WhatsApp Send Message

  - Send to **one or many** recipients (comma or newline separated)
  - **Text** messages with `{first_name}` placeholder support
  - **Media URLs** (images, documents, etc.) with optional caption
  - **Audio URLs**
  - **Location** pins (latitude / longitude)
  - **Random delay** range (`minDelay` / `maxDelay` in seconds)
  - **Scheduled send** via `schedule-timestamp`
  - Personalization fields: `first_name`, `last_name`
  - Built-in **credential test** (validates API reachability and token)
  - **60 second** request timeout; bearer tokens are never echoed in error messages
  - Usable as an **AI tool** in n8n agent workflows

  ### Security

  - Credential tokens stored as password fields in n8n
  - Send errors redact `Bearer` token values
  - Optional webhook shared secret on the trigger node

  ---

  ## Prerequisites

  Before using these nodes you need:

  1. A **[WAWCD](https://wawcd.com)** account with the browser extension installed
  2. **WhatsApp Web** connected and the WAWCD extension **online** (required for outbound delivery)
  3. A **self-hosted n8n** instance or n8n Cloud with [community nodes](https://docs.n8n.io/integrations/community-nodes/installation/) enabled
  4. An **Incoming Webhook Token** from WAWCD → Webhooks → Incoming (for Send Message)
  5. An **Outgoing Webhook** configured in WAWCD (for Receive Message)

  ---

  ## Installation

  ### From npm (after the package is published)

  ```bash
  npm install n8n-nodes-wawcd
  ```

  In n8n Cloud or self-hosted with community nodes UI: search for **WAWCD** in **Settings → Community nodes → Install** and install `n8n-nodes-wawcd`.

  > **Note:** If you get `404 Not Found`, the package has not been published to npm yet. Use [local installation](#local-installation-before-publish) below.

  ### Self-hosted — custom extensions directory

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

  ```bash
  # Example: install into n8n's custom node directory
  cd ~/.n8n/custom
  npm install n8n-nodes-wawcd
  ```

  Restart n8n after installing.

  ### Local installation (before publish)

  Use this while developing or before the first npm release.

  **Option 1 — install from this repository folder**

  ```bash
  cd /path/to/wawcd-n8n-node
  npm install
  npm run build

  # In your n8n project or custom nodes folder:
  npm install /path/to/wawcd-n8n-node
  ```

  **Option 2 — npm link**

  ```bash
  # In this repo
  cd /path/to/wawcd-n8n-node
  npm install
  npm run build
  npm link

  # In your n8n install directory
  npm link n8n-nodes-wawcd
  ```

  Restart n8n. You should see **WAWCD WhatsApp Receice Message** and **WAWCD WhatsApp Send Message** in the node panel.

  ### Environment variable (Docker / server installs)

  Set n8n’s community nodes environment variable as described in the [n8n docs](https://docs.n8n.io/hosting/configuration/environment-variables/nodes/):

  ```bash
  N8N_COMMUNITY_PACKAGES=n8n-nodes-wawcd
  ```

  ---

  ## Quick start

  ### 1. Create credentials

  1. In n8n, go to **Credentials → Add credential → WAWCD API**.
  2. Set **API Base URL** (default: `https://backend.wawcd.com`).
  3. Paste your **Incoming Webhook Token** from WAWCD → Webhooks → Incoming.
  4. Click **Test** — you should see *Connection successful*.

  ### 2. Send a test message

  1. Create a workflow with a **Manual Trigger** → **WAWCD WhatsApp Send Message**.
  2. Select your WAWCD API credentials.
  3. Set **Receiver WhatsApp Number** (e.g. `923009897989`).
  4. Set **Message** (e.g. `Hello from n8n!`).
  5. Execute the workflow. Ensure WhatsApp Web + WAWCD extension are online.

  ### 3. Receive a message

  1. Create a workflow with **WAWCD WhatsApp Receice Message**.
  2. Copy the **Test URL** from the node panel.
  3. In WAWCD → **Outgoing Webhooks**, add a webhook: method **POST**, paste the URL.
  4. Send a WhatsApp message to your connected line — the workflow should execute.

  ---

  ## Credentials (WAWCD API)

  | Field | Required | Description |
  |-------|----------|-------------|
  | **API Base URL** | Yes | WAWCD API host. Default: `https://backend.wawcd.com`. No trailing slash. |
  | **Incoming Webhook Token** | Yes | Token from WAWCD extension → Webhooks → Incoming. Used as `Authorization: Bearer <token>` on send requests. Paste the token only, or a full `Bearer …` line. |

  **Credential test behavior**

  | Result | Meaning |
  |--------|---------|
  | Connection successful | API reachable and token accepted |
  | Invalid token or access denied | HTTP 401/403 — check your token |
  | Host reachable (404 on root is acceptable) | Server responds; root path may 404 |
  | Could not reach WAWCD API | Wrong URL, network issue, or firewall |

  ---

  ## Nodes

  ### WAWCD WhatsApp Receice Message (Trigger)

  Starts a workflow when WAWCD POSTs JSON to your n8n webhook URL.

  #### Setup steps

  1. Add the node to a workflow.
  2. (Optional) Set a custom **Path** — leave empty to use the auto-generated webhook ID.
  3. (Optional) Enable **Incoming Authentication → Shared Secret** and set **Webhook Token** to match WAWCD Outgoing → Bearer.
  4. (Optional) Enable **Strict Payload Validation** to reject non-WAWCD payloads.
  5. Copy **Test URL** while building, or **Production URL** after activating the workflow.
  6. Register the URL in WAWCD → **Outgoing Webhooks** (POST).

  #### Output fields (after normalization)

  | Field | Description |
  |-------|-------------|
  | `user-whatsapp-number` | Your WAWCD-connected WhatsApp line |
  | `receiver-whatsapp-number` | Contact who sent the message |
  | `receiver-display-name` | Contact display name |
  | `receiver-saved-name` | Saved contact name |
  | `receiver-message` | Message text |
  | `receiver-message-timestamp` | Message timestamp |
  | `receiver-country` / `receiver-country-code` | Contact country info |
  | `whatsapp_account_id` | Account ID when present |

  Example output:

  ```json
  {
    "user-whatsapp-number": "+12456784545",
    "receiver-whatsapp-number": "96234343434",
    "receiver-display-name": "John Doe",
    "receiver-message": "Hello, I completed the payment online.",
    "receiver-message-timestamp": "2025-02-26T00:00:00Z"
  }
  ```

  #### Reply to the sender

  Connect to **WAWCD WhatsApp Send Message** and set:

  ```
  Receiver WhatsApp Number: {{ $json['receiver-whatsapp-number'] }}
  Message: {{ $json['receiver-message'] }}
  ```

  ---

  ### WAWCD WhatsApp Send Message

  Sends WhatsApp messages via `POST {API Base URL}/webhooks/send-message`.

  #### Parameters

  | Parameter | Required | Description |
  |-----------|----------|-------------|
  | **Receiver WhatsApp Number** | Yes | One or more numbers with country code. Comma or newline separated. Accepts `+923…` or `923…`. |
  | **Message** | Conditional | Text body. Required unless sending media, audio, or location. Supports `{first_name}`. |
  | **Additional Fields** | No | See table below. |

  #### Additional fields

  | Field | Description |
  |-------|-------------|
  | **Media URLs** | One or more image/document URLs |
  | **Audio URLs** | One or more audio file URLs |
  | **Caption** | Caption when sending media |
  | **Send Location** | Enable location pin |
  | **Latitude / Longitude** | Required when Send Location is enabled |
  | **First Name / Last Name** | Personalization for `{first_name}` |
  | **Min Delay / Max Delay** | Random delay range in seconds before sending |
  | **Schedule Timestamp** | ISO-style datetime to schedule the message |

  #### Example API payload (simple text)

  ```json
  {
    "receiver-whatsapp-number": ["923009897989"],
    "message": "hello"
  }
  ```

  #### Example API payload (media + delay)

  ```json
  {
    "receiver-whatsapp-number": ["923009897989", "923001234567"],
    "message": "Hi {first_name}!",
    "first_name": "Ali",
    "mediaUrl": ["https://example.com/image.jpg"],
    "caption": "Your order receipt",
    "minDelay": 2,
    "maxDelay": 5
  }
  ```

  ---


  ## Example workflows

  Import JSON files from the [`examples/`](examples/) folder in n8n (**Workflows → Import from file**):

  | File | Description |
  |------|-------------|
  | [`shopify-order.json`](examples/shopify-order.json) | Manual trigger with sample order data → **Send Message** (order notification) |
  | [`ai-support.json`](examples/ai-support.json) | **Receive Message** → processing stub → **Send Message** (auto-reply pattern) |
  | [`lead-capture.json`](examples/lead-capture.json) | **Receive Message** with strict validation → field mapping stub |

  Replace placeholder credentials and webhook URLs before running in production.

  ---

  ## Common use cases

  | Use case | Workflow pattern |
  |----------|------------------|
  | Order notifications | Shopify/WooCommerce trigger → **Send Message** |
  | AI customer support | **Receive Message** → OpenAI/AI Agent → **Send Message** |
  | Lead capture | **Receive Message** (strict validation) → CRM node (HubSpot, Airtable, etc.) |
  | Appointment reminders | Schedule trigger → **Send Message** |
  | Two-way chat bot | **Receive Message** → logic/Code node → **Send Message** with `{{ $json['receiver-whatsapp-number'] }}` |

  ---

  ## Debugging & troubleshooting

  ### Send Message issues

  | Symptom | Check |
  |---------|-------|
  | Credential test fails | Verify **API Base URL** and **Incoming Webhook Token** in WAWCD → Webhooks → Incoming |
  | 401 / access denied | Token expired or wrong — regenerate in WAWCD |
  | Message not delivered | WhatsApp Web must be open; WAWCD extension must be online |
  | Timeout after 60s | Network or WAWCD API slow — check `https://backend.wawcd.com` reachability |
  | "At least one receiver required" | Set **Receiver WhatsApp Number** with country code |
  | "Provide at least one of: Message, Media…" | Add text, media URL, audio URL, or location |

  **Debug commands (local development)**

  ```bash
  cd /path/to/wawcd-n8n-node
  npm run lint          # Check n8n community node standards
  npm run build         # Compile TypeScript → dist/
  npm run dev           # Run n8n locally with this node loaded (hot reload)
  ```

  Use n8n’s **Executions** panel to inspect input/output JSON for each node run. Enable **Continue On Fail** on Send Message to capture per-item errors without stopping the workflow.

  ### Receive Message (Trigger) issues

  | Symptom | Check |
  |---------|-------|
  | Workflow never triggers | Workflow must be **active** for Production URL; use Test URL while editing |
  | 401 Unauthorized | **Webhook Token** in n8n must match WAWCD Outgoing → Bearer |
  | 400 Invalid payload | Enable/disable **Strict Payload Validation**; confirm WAWCD sends JSON with expected fields |
  | Wrong field names | Node auto-normalizes `reciver-*` → `receiver-*`; use `$json['receiver-whatsapp-number']` in expressions |
  | Webhook URL not reachable | n8n must be publicly accessible (or use ngrok/tunnel for local dev) |

  **Testing the webhook manually**

  ```bash
  curl -X POST "https://your-n8n.example.com/webhook-test/your-path" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_WEBHOOK_TOKEN" \
    -d '{
      "user-whatsapp-number": "+12456784545",
      "receiver-whatsapp-number": "96234343434",
      "receiver-message": "Test message"
    }'
  ```

  ### npm install returns 404

  The package is not on npm yet. Use [local installation](#local-installation-before-publish) or wait until the first release is published via GitHub Actions.

  ### Node not visible in n8n

  1. Confirm install: `npm list n8n-nodes-wawcd` in your n8n directory
  2. Restart n8n
  3. Search for **WAWCD** in the node panel
  4. For Docker: rebuild/restart the container after installing the package

  ---

  ## Development

  ### Requirements

  - Node.js LTS
  - npm

  ### Commands

  | Command | Description |
  |---------|-------------|
  | `npm install` | Install dependencies |
  | `npm run lint` | Run n8n community node linter |
  | `npm run lint:fix` | Auto-fix lint issues where possible |
  | `npm run build` | Compile TypeScript to `dist/` |
  | `npm run build:watch` | Watch mode TypeScript compile |
  | `npm run dev` | Start local n8n with this node (hot reload) |
  | `npm run release` | Bump version, tag, push — triggers npm publish workflow |

  ### Project structure

  ```
  wawcd-n8n-node/
  ├── credentials/          # WAWCD API credential type
  ├── nodes/
  │   ├── WawcdSendMessage/ # Send Message node
  │   ├── WawcdTrigger/     # Receive Message trigger
  │   └── shared/           # Shared payload & HTTP logic
  ├── examples/             # Sample workflow JSON files
  ├── dist/                 # Compiled output (generated by build)
  ├── package.json
  └── README.md
  ```

  ### Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Run `npm run lint && npm run build`
  4. Open a pull request against [WAWCD-LLC/wawcd-n8n-node](https://github.com/WAWCD-LLC/wawcd-n8n-node)

  ---

  ## Publishing to npm

  This package is published via GitHub Actions with [npm provenance](https://docs.npmjs.com/generating-provenance-statements), as required by n8n for verified community nodes (from May 2026).

  ### One-time setup

  1. Create the package on [npmjs.com](https://www.npmjs.com/) (or it is created on first publish if the name is free).
  2. On npm → package **Settings → Publish access → Trusted Publishers → Add publisher**:
     - **Repository owner:** `WAWCD-LLC`
     - **Repository name:** `wawcd-n8n-node`
     - **Workflow name:** `publish.yml`
  3. Alternatively, set an `NPM_TOKEN` secret in GitHub Actions (see [`.github/workflows/publish.yml`](.github/workflows/publish.yml)).

  ### Release

  ```bash
  npm run release
  ```

  This lints, builds, prompts for a version bump, commits, tags (e.g. `0.1.1`), and pushes. The [`publish.yml`](.github/workflows/publish.yml) workflow publishes to npm when a version tag is pushed.

  After publish, install with:

  ```bash
  npm install n8n-nodes-wawcd
  ```

  ---

  ## Submit for n8n verification

  To appear in n8n’s verified community nodes panel:

  1. Ensure `npm run lint` passes and the package has no runtime dependencies
  2. Publish to npm via GitHub Actions (see above)
  3. Submit at the [n8n Creator Portal](https://creators.n8n.io/nodes)

  Requirements: [Submit community nodes](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/) · [Verification guidelines](https://docs.n8n.io/integrations/creating-nodes/build/reference/verification-guidelines/) · [UX guidelines](https://docs.n8n.io/integrations/creating-nodes/build/reference/ux-guidelines/)

  ---

  ## Support & links

  | Resource | URL |
  |----------|-----|
  | WAWCD website | [wawcd.com](https://wawcd.com) |
  | GitHub issues | [github.com/WAWCD-LLC/wawcd-n8n-node/issues](https://github.com/WAWCD-LLC/wawcd-n8n-node/issues) |
  | n8n community nodes docs | [docs.n8n.io/integrations/community-nodes](https://docs.n8n.io/integrations/community-nodes/installation/) |
  | n8n Creator Portal | [creators.n8n.io/nodes](https://creators.n8n.io/nodes) |
  | npm package | [npmjs.com/package/n8n-nodes-wawcd](https://www.npmjs.com/package/n8n-nodes-wawcd) |

  ---

  ## License

  [MIT](LICENSE) — Copyright (c) WAWCD

ai_documentation_summary:
  {"purpose":"This n8n node sends WhatsApp messages (text, media, audio, location) to one or multiple recipients via the WAWCD API, supporting scheduling, random delays, and personalization.","capabilities":["Send text messages with {first_name} placeholder support","Send media URLs (images, documents) with optional captions","Send audio URLs","Send location pins (latitude/longitude)","Send to multiple recipients (comma or newline separated)","Apply random delay range (minDelay/maxDelay)","Schedule message delivery via timestamp","Personalize messages using first_name/last_name fields","Built-in credential test for API reachability","Usable as an AI tool in agent workflows"],"authentication":"API key required (Bearer token from WAWCD Incoming Webhook Token)","commonUseCases":["Automated customer support replies via WhatsApp","Marketing campaigns with personalized messages","Scheduled notifications and reminders","Location sharing for business or events","Media delivery (images/documents) to customers"],"limitations":["Requires WAWCD browser extension to be online for outbound delivery","Requires WhatsApp Web connected to the WAWCD account","60-second request timeout","Does not support sending a separate account ID in the send body (uses incoming webhook token)","Token values are redacted in error messages but not echoed in logs"],"relatedNodes":["WAWCD Plugin Receive Message (Trigger)","WAWCD API Credentials","Webhook Node","AI Agent Tool Node"]}


