# nodes

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

updated_at: 2026-02-19 14:41:52
author_name: superchat-ben
author_github_url: https://github.com/super-chat/
npm_package_name: n8n-nodes-superchat
npm_version: 0.3.0
community_fetched_at: 2026-02-19T14:41:52.482Z
ai_summary_generated_at: 2026-02-19 16:43:57
description:
  Receive and send messages from WhatsApp, Instagram, Messenger, E-Mail, SMS, via Live Chat and Telegram.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "User",
          "value": "user",
          "description": "A user"
        },
        {
          "name": "Contact",
          "value": "contact",
          "description": "A contact"
        },
        {
          "name": "Message",
          "value": "message",
          "description": "A message"
        },
        {
          "name": "Conversation",
          "value": "conversation",
          "description": "A conversation"
        },
        {
          "name": "Note",
          "value": "note",
          "description": "A note"
        },
        {
          "name": "File",
          "value": "file",
          "description": "A file"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "me",
      "options": [
        {
          "name": "Identify Yourself",
          "value": "me",
          "action": "Retrieve information about yourself as a Superchat user"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search For Contact",
          "value": "search",
          "action": "Search for a contact"
        },
        {
          "name": "Delete Contact",
          "value": "delete",
          "action": "Delete a contact"
        },
        {
          "name": "Create Contact",
          "value": "create",
          "action": "Create a new contact"
        },
        {
          "name": "Update Contact",
          "value": "update",
          "action": "Update an existing contact"
        },
        {
          "name": "Get Many Conversations",
          "value": "listConversations",
          "action": "Get many conversations of a contact"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send a message"
        },
        {
          "name": "Send Email",
          "value": "sendMail",
          "action": "Send an email"
        },
        {
          "name": "Send WhatsApp Template",
          "value": "sendWhatsAppTemplate",
          "action": "Send a WhatsApp template"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Conversation By ID",
          "value": "get",
          "action": "Retrieve a conversation"
        },
        {
          "name": "Update Labels",
          "value": "updateLabels",
          "action": "Update the labels of a conversation"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update the status of a conversation"
        },
        {
          "name": "Update Assigned Users",
          "value": "updateAssignees",
          "action": "Update the assignees of a conversation"
        },
        {
          "name": "Delete Conversation",
          "value": "delete",
          "action": "Delete a conversation"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Conversation Note",
          "value": "create",
          "action": "Create a conversation note"
        },
        {
          "name": "Get Conversation Note By ID",
          "value": "get",
          "action": "Retrieve a conversation note"
        },
        {
          "name": "Delete Conversation Note",
          "value": "delete",
          "action": "Delete a conversation note"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create File",
          "value": "create",
          "action": "Create a file"
        },
        {
          "name": "Delete File",
          "value": "delete",
          "action": "Delete a file"
        },
        {
          "name": "Download File",
          "value": "download",
          "action": "Download a file"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Identify Yourself",
      "value": "me",
      "action": "Retrieve information about yourself as a Superchat user"
    },
    {
      "name": "Search For Contact",
      "value": "search",
      "action": "Search for a contact"
    },
    {
      "name": "Delete Contact",
      "value": "delete",
      "action": "Delete a contact"
    },
    {
      "name": "Create Contact",
      "value": "create",
      "action": "Create a new contact"
    },
    {
      "name": "Update Contact",
      "value": "update",
      "action": "Update an existing contact"
    },
    {
      "name": "Get Many Conversations",
      "value": "listConversations",
      "action": "Get many conversations of a contact"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send a message"
    },
    {
      "name": "Send Email",
      "value": "sendMail",
      "action": "Send an email"
    },
    {
      "name": "Send WhatsApp Template",
      "value": "sendWhatsAppTemplate",
      "action": "Send a WhatsApp template"
    },
    {
      "name": "Get Conversation By ID",
      "value": "get",
      "action": "Retrieve a conversation"
    },
    {
      "name": "Update Labels",
      "value": "updateLabels",
      "action": "Update the labels of a conversation"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update the status of a conversation"
    },
    {
      "name": "Update Assigned Users",
      "value": "updateAssignees",
      "action": "Update the assignees of a conversation"
    },
    {
      "name": "Delete Conversation",
      "value": "delete",
      "action": "Delete a conversation"
    },
    {
      "name": "Create Conversation Note",
      "value": "create",
      "action": "Create a conversation note"
    },
    {
      "name": "Get Conversation Note By ID",
      "value": "get",
      "action": "Retrieve a conversation note"
    },
    {
      "name": "Delete Conversation Note",
      "value": "delete",
      "action": "Delete a conversation note"
    },
    {
      "name": "Create File",
      "value": "create",
      "action": "Create a file"
    },
    {
      "name": "Delete File",
      "value": "delete",
      "action": "Delete a file"
    },
    {
      "name": "Download File",
      "value": "download",
      "action": "Download a file"
    }
  ]

npm_readme:
  # n8n-nodes-superchat
  ![](./superchat.png)

  This is an n8n community node. It lets you integrate **Superchat** into your n8n workflows.

  **Superchat** is a unified messaging platform that enables sending and receiving messages across WhatsApp, Instagram Direct, Facebook Messenger, SMS, email, Live Chat, and more. Our Superchat app in n8n supports managing contacts, conversations, notes, files, channels, labels, and more.

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

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

  ---

  ## Installation

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

  ---

  ## Operations

  This node supports operations on the following six resources:

  ### User
  - **Me** — Retrieve details about the authenticated Superchat user.

  ### Contact
  - **Create** — Create a new contact.
  - **Search** — Search for contacts by email, phone, or Instagram handle.
  - **Update** — Update a contact's information.
  - **Delete** — Delete a contact by its ID.
  - **Get Conversations** — Fetch all conversations associated with a contact.

  ### Message
  - **Send Message** — Send a text or media message to a contact.
  - **Send Mail** — Send an email, with optional attachments, to a contact.
  - **Send WhatsApp Template** — Send a pre-approved WhatsApp template message.

  ### Conversation
  - **Get** — Retrieve a conversation by its ID.
  - **Delete** — Delete a conversation by its ID.
  - **Update Labels** — Update the labels for a conversation.
  - **Update Status** — Update the status of a conversation (e.g., open, done, snoozed).
  - **Update Assignees** — Update the users assigned to a conversation.

  ### Note
  - **Create** — Add a new note to a conversation.
  - **Get** — Retrieve a specific note from a conversation.
  - **Delete** — Delete a specific note from a conversation.

  ### File
  - **Create (upload)** — Upload a binary file to Superchat.
  - **Download** — Download a file by its ID.
  - **Delete** — Delete a file by its ID.

  ---

  ## Credentials

  **Superchat API**

  1. Log into your Superchat Account.
  2. Go to Settings > Explore Integrations > Click the n8n card
  3. Click 'Add' and copy the API key.
  4. Add a n8n action or trigger and enter your Superchat API key in the credentials section.

  ---

  ## Compatibility

  Tested with:
  - **n8n v1.97.1**

  ---

  ## Usage

  1. Install n8n-nodes-superchat via the community nodes installer.
  2. Add the Superchat node to your n8n workflow.
  3. Configure credentials using your Superchat API key.
  4. Select a resource (User, Contact, Message, Conversation, Note, or File).
  5. Choose the desired operation.
  6. Fill in required fields (e.g. recipient info, message content).
  7. Execute the workflow to send messages, manage contacts/conversations, and upload/download files.

  ---

  ## Resources

  - [Superchat API Documentation](https://developers.superchat.com/) 
  - [Getting Started Guide](https://developers.superchat.com/docs/getting-started-send-your-first-message)
  - [Superchat Help Centre](https://help.superchat.com)

ai_documentation_summary:
  {"purpose":"Integrate Superchat into n8n workflows to send and receive messages across multiple channels (WhatsApp, Instagram Direct, Messenger, SMS, Email, Live Chat, Telegram) and to manage contacts, conversations, files, notes, and related metadata.","capabilities":["Retrieve authenticated user details (Me)","Create, search, update, and delete contacts","Fetch all conversations for a contact","Send text or media messages to contacts","Send emails with optional attachments (Send Mail)","Send pre-approved WhatsApp template messages","Retrieve, delete, and update conversations","Update conversation labels, status (open/done/snoozed), and assignees","Create, get, and delete notes on conversations","Upload (create) binary files, download files by ID, and delete files"],"authentication":"API key required (Superchat API key added in node credentials)","commonUseCases":["Automate outbound messaging across WhatsApp, Instagram, Messenger, SMS, email, Live Chat, and Telegram","Sync and enrich contact records from external sources into Superchat","Manage and route conversations: fetch conversation details, update status, labels, and assignees","Send emails or media messages with attachments from workflows","Upload or retrieve files associated with conversations and contacts"],"limitations":[],"relatedNodes":[]}


node_type: @fibery/n8n-nodes-fibery.fibery
package_name: @fibery/n8n-nodes-fibery
display_name: Fibery
description: Read, update, write and delete data from Fibery
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: gaswelder
author_github_url: https://github.com/Fibery-inc/n8n-nodes-fibery.git
npm_package_name: @fibery/n8n-nodes-fibery
npm_version: 0.1.19
community_fetched_at: 2026-02-19T14:41:52.483Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "entity",
      "options": [
        {
          "name": "Database",
          "value": "database"
        },
        {
          "name": "Entity",
          "value": "entity"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many databases",
          "description": "Get many databases from the workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an entity",
          "description": "Create a new entity"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an entity",
          "description": "Delete an entity"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an entity",
          "description": "Get an entity"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many entities",
          "description": "Get many entities from a database"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an entity",
          "description": "Update an entity"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "entity"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many databases",
      "description": "Get many databases from the workspace"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an entity",
      "description": "Create a new entity"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an entity",
      "description": "Delete an entity"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an entity",
      "description": "Get an entity"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many entities",
      "description": "Get many entities from a database"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an entity",
      "description": "Update an entity"
    }
  ]

npm_readme:
  # n8n-nodes-fibery

  ![Fibery x n8n](./fibery-x-n8n.png)

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

  Fibery is your company’s operating system
  It's a work platform that replaces scattered tools and connects teams. Chosen by nerds, appreciated by everyone (almost).

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

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

  ## Installation

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

  1. Go to **Settings** > **Community Nodes**.
  2. Select **Install**.
  3. Enter `@fibery/n8n-nodes-fibery` in **npm Package name**.
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes: select **I understand the risks of installing unverified code from a public source**.
  5. Select **Install**.

  ## Operations

  ### Database

  - **get many**. List all databases in the workspace.

  ### Entity

  - **create**. Create a new entity.
  - **delete**. Delete an entity.
  - **get**. Get an entity.s
  - **get many**. Search and list entities from a database.
  - **update**. Update an entity.

  ### Triggers

  - **default**. Handle Fibery events to Database from webhooks.

  ## Credentials

  At the moment this node supports only one authentication method: **API Key**.

  ### Using API Key

  1. Enter the name of your Fibery workspace in the **Workspace** field. It can be obtained from the URL of your workspace. For example, if your workspace URL is `https://my-company.fibery.io`, then the workspace name is `my-company`.
  2. Obtain an API key from your Fibery workspace. Please follow the [Fibery API keys](https://the.fibery.io/@public/User_Guide/Guide/Fibery-API-keys-252) guide.
  3. Enter API key in the **API Key** field.

  ## Compatibility

  Tested on: 1.111.0

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [Fibery](https://www.fibery.io/)
  - [Fibery API documentation](https://the.fibery.io/@public/User_Guide/Guide/Fibery-API-overview-279)

ai_documentation_summary:
  {"purpose":"Provides n8n nodes to read, create, update, and delete Fibery data and to trigger n8n workflows from Fibery events (via webhooks).","capabilities":["List all databases in a workspace (Database: get many)","Create an entity (Entity: create)","Delete an entity (Entity: delete)","Get a single entity (Entity: get)","Search and list entities from a database (Entity: get many)","Update an entity (Entity: update)","Trigger workflows on Fibery events using webhooks (Triggers: default)"],"authentication":"API key required (provide Workspace name and Fibery API Key)","commonUseCases":["Sync or migrate records between Fibery and other systems","Automate creation and updates of Fibery entities from external workflows","Search and list entities for reporting or downstream processing","Start n8n workflows when Fibery events occur via webhook triggers","Discover workspace structure by listing databases"],"limitations":["Only supports API Key authentication (no OAuth2 or alternative auth methods)","Operations are limited to Database (list), Entity CRUD/search and a default webhook trigger — other Fibery features/resources are not listed","Published as an n8n community node (requires accepting risks of unverified code)","Compatibility explicitly tested on Fibery version 1.111.0 (behavior on other versions not guaranteed)"],"relatedNodes":[]}


node_type: n8n-nodes-upcellapi.upcellApi
package_name: n8n-nodes-upcellapi
display_name: upcell API
description: Get data from the upcell API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: justinsweeney
author_github_url: https://github.com/UpCell/n8n-node.git
npm_package_name: n8n-nodes-upcellapi
npm_version: 0.3.0
community_fetched_at: 2026-02-19T14:41:52.484Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "enrichMobile",
      "options": [
        {
          "name": "Enrich Mobile",
          "value": "enrichMobile"
        },
        {
          "name": "Enrich Email",
          "value": "enrichEmail"
        },
        {
          "name": "Enrich Social URL",
          "value": "enrichSocialUrl"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post",
          "action": "Enrich mobile",
          "routing": {
            "request": {
              "url": "/enrich/contact",
              "body": {
                "fields": "={{[\"mobile\"]}}",
                "linkedinUrl": "={{ $parameter.linkedinUrl }}"
              },
              "method": "POST"
            }
          },
          "description": "Enrich contact with mobile phone"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichMobile"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post",
          "action": "Enrich email",
          "routing": {
            "request": {
              "url": "/enrich/email",
              "body": {
                "last_name": "={{ $parameter.lastName }}",
                "first_name": "={{ $parameter.firstName }}",
                "company_domain": "={{ $parameter.companyDomain }}"
              },
              "method": "POST"
            }
          },
          "description": "Enrich contact with email address"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichEmail"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Post",
          "value": "post",
          "action": "Enrich social url",
          "routing": {
            "request": {
              "url": "/enrich/socialurl",
              "body": {
                "email": "={{ $parameter.email }}",
                "title": "={{ $parameter.title }}",
                "last_name": "={{ $parameter.lastName }}",
                "first_name": "={{ $parameter.firstName }}",
                "company_name": "={{ $parameter.companyName }}",
                "mobile_phone": "={{ $parameter.mobilePhone }}",
                "company_domain": "={{ $parameter.companyDomain }}",
                "company_social_url": "={{ $parameter.companySocialUrl }}"
              },
              "method": "POST"
            }
          },
          "description": "Enrich contact with social URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichSocialUrl"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Post",
      "value": "post",
      "action": "Enrich mobile",
      "routing": {
        "request": {
          "url": "/enrich/contact",
          "body": {
            "fields": "={{[\"mobile\"]}}",
            "linkedinUrl": "={{ $parameter.linkedinUrl }}"
          },
          "method": "POST"
        }
      },
      "description": "Enrich contact with mobile phone"
    },
    {
      "name": "Post",
      "value": "post",
      "action": "Enrich email",
      "routing": {
        "request": {
          "url": "/enrich/email",
          "body": {
            "last_name": "={{ $parameter.lastName }}",
            "first_name": "={{ $parameter.firstName }}",
            "company_domain": "={{ $parameter.companyDomain }}"
          },
          "method": "POST"
        }
      },
      "description": "Enrich contact with email address"
    },
    {
      "name": "Post",
      "value": "post",
      "action": "Enrich social url",
      "routing": {
        "request": {
          "url": "/enrich/socialurl",
          "body": {
            "email": "={{ $parameter.email }}",
            "title": "={{ $parameter.title }}",
            "last_name": "={{ $parameter.lastName }}",
            "first_name": "={{ $parameter.firstName }}",
            "company_name": "={{ $parameter.companyName }}",
            "mobile_phone": "={{ $parameter.mobilePhone }}",
            "company_domain": "={{ $parameter.companyDomain }}",
            "company_social_url": "={{ $parameter.companySocialUrl }}"
          },
          "method": "POST"
        }
      },
      "description": "Enrich contact with social URL"
    }
  ]

npm_readme:
  # n8n-nodes-upcellapi

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

  upcell provides B2B contact and sales intelligence data.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage)  <!-- delete if not using this section -->  
  [Resources](#resources)  
  [Version history](#version-history)  <!-- delete if not using this section -->

  ## Installation

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

  ## Operations

  * Enrich Contact - enrich a contact with mobile data
  * Enrich Email - enrich a contact with a verified email address
  * Enrich Social URL - enrich a contact with a social url

  ## Credentials

  In order to use the upcell node, you will need to first obtain an upcell API key by contacting [sales@upcell.io](mailto:sales@upcell.io).

  ## Compatibility

  This has been tested against n8n version 1.115.3.

  ## Usage

  To understand more about the APIs available from upcell, visit https://api.upcell.io.

  If you are new to n8n and community nodes, you can [Try it out](https://docs.n8n.io/try-it-out/) to get started.

  ## Resources

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

ai_documentation_summary:
  {"purpose":"Provides access to upcell's B2B contact and sales intelligence APIs from n8n workflows, allowing enrichment of contact records with email, mobile, and social data.","capabilities":["Enrich Contact — enrich a contact with mobile data","Enrich Email — enrich/verify a contact with a verified email address","Enrich Social URL — enrich a contact with a social profile URL","Make API requests to upcell endpoints (via the upcell API)"],"authentication":"API key required (obtain upcell API key by contacting sales@upcell.io)","commonUseCases":["Enrich lead or contact records with mobile numbers for outreach","Verify or populate email addresses for contacts","Add social profile URLs to contact records for sales and research workflows","Enhance CRM or marketing lists with B2B sales intelligence data"],"limitations":["Requires obtaining an API key by contacting sales@upcell.io","README documents only three enrichment operations (Contact, Email, Social URL); other endpoints or broader functionality are not described"],"relatedNodes":[]}


node_type: n8n-nodes-docuprox.docuProx
package_name: n8n-nodes-docuprox
display_name: DocuProx
description: Process documents using DocuProx API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: docuprox
author_github_url: https://github.com/docuprox/n8n-docuprox.git
npm_package_name: n8n-nodes-docuprox
npm_version: 1.0.6
community_fetched_at: 2026-02-19T14:41:52.484Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Document",
          "value": "document",
          "description": "Work with documents using DocuProx"
        }
      ],
      "required": true,
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "process",
      "options": [
        {
          "name": "Process",
          "value": "process",
          "action": "Process a document",
          "description": "Process a document with a template"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Process",
      "value": "process",
      "action": "Process a document",
      "description": "Process a document with a template"
    }
  ]

npm_readme:
  # n8n-nodes-docuprox

  An n8n custom node for integrating with the DocuProx API to process documents using AI-powered document processing templates.

  ## Description

  This n8n node allows you to process documents by providing a template ID and an image (either as a binary file upload or base64 encoded string). The node communicates with the DocuProx API to extract structured data from documents based on predefined templates.

  ## Installation

  1. Clone or download this repository
  2. Navigate to the project directory
  3. Install dependencies:
     ```bash
     npm install
     ```
  4. Build the project:
     ```bash
     npm run build
     ```
  5. Copy the `dist` folder to your n8n custom nodes directory
  6. Restart n8n

  ## Usage

  1. Add the "DocuProx" node to your n8n workflow
  2. Configure your DocuProx API credentials (see Configuration section)
  3. Set the Template ID for the document processing template you want to use
  4. Choose your image source:
     - **Upload Image File**: Provide the binary property name containing the image file
     - **Base64 String**: Directly input the base64 encoded image data
  5. Execute the workflow

  The node will return the processed document data from the DocuProx API.

  ## Configuration

  ### Credentials Setup

  Before using the node, you need to set up your DocuProx API credentials:

  1. Go to your n8n instance
  2. Navigate to Settings > Credentials
  3. Create a new credential of type "DocuProx API"
  4. Enter your DocuProx API key
  5. Save the credential

  ### Node Properties

  - **Template ID** (required): The ID of the template to use for document processing
  - **Image Source** (required):
    - Upload Image File: Upload an image file from binary data
    - Base64 String: Provide image as Base64 encoded string
  - **Binary Property Name** (required when using Upload): Name of the binary property containing the image file
  - **Base64 Image** (required when using Base64): The base64 encoded image data

  ## API Reference

  ### Input
  - Template ID: String
  - Image: Binary file or Base64 string

  ### Output
  - Success status
  - Template ID used
  - API response data
  - Timestamp

  ### Error Handling
  The node includes comprehensive error handling and will return error details if the API call fails. You can configure the node to continue on failure or stop the workflow.

  ## Development

  ### Prerequisites
  - Node.js
  - npm
  - n8n instance

  ### Scripts
  - `npm run build`: Build the TypeScript code and copy assets
  - `npm run dev`: Watch mode for development
  - `npm run format`: Format code with Prettier
  - `npm run lint`: Lint code with ESLint

  ### Project Structure
  ```
  ├── credentials/
  │   └── DocuProxApi.credentials.ts    # API credentials definition
  ├── nodes/
  │   └── DocuProx/
  │       ├── DocuProx.node.ts          # Main node implementation
  │       └── douprox-logo.svg          # Node icon
  ├── dist/                             # Built files
  ├── package.json
  ├── tsconfig.json
  └── README.md
  ```

  ## License

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

ai_documentation_summary:
  {"purpose":"Send an image to the DocuProx API using a specified template ID to extract structured data from documents and return the processed data to n8n workflows.","capabilities":["Process a document image using a specified DocuProx template ID","Accept image input as a binary file (via a named binary property)","Accept image input as a Base64-encoded string","Return API response including success status, template ID used, response data, and timestamp","Configure binary property name and template ID within the node","Error handling with option to continue on failure or stop the workflow"],"authentication":"API key required (DocuProx API credential stored in n8n Credentials)","commonUseCases":["Extract structured fields from documents such as invoices, receipts, forms, or IDs","Automate data entry by converting document images into structured data for downstream processing","Validate or route documents based on extracted template fields within n8n workflows","Integrate AI-powered document processing into larger automation pipelines"],"limitations":["Requires an existing DocuProx template ID (Template ID is mandatory)","Input is limited to images provided as a binary property or Base64 string — README does not mention native PDF or multi-page document support","No explicit mention of batch or multi-file processing in the node documentation"],"relatedNodes":[]}


node_type: n8n-nodes-mfr.mfr
package_name: n8n-nodes-mfr
display_name: mfr - Field Service Management
description: Field service management app for scheduling technicians.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: apps_makeitfuture
author_github_url: https://github.com/anemesMakeitfuture/mfr-field-service-management.git
npm_package_name: n8n-nodes-mfr
npm_version: 0.1.13
community_fetched_at: 2026-02-19T14:41:52.485Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "company",
      "options": [
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Appointment",
          "value": "appointment"
        },
        {
          "name": "Item Type",
          "value": "itemType"
        },
        {
          "name": "Service Object",
          "value": "serviceObject"
        },
        {
          "name": "Service Request",
          "value": "serviceRequest"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Report",
          "value": "report"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a company",
          "description": "Get a company"
        },
        {
          "name": "Get Many",
          "value": "listCompanies",
          "action": "List companies",
          "description": "List Companies"
        },
        {
          "name": "Create One",
          "value": "createCompany",
          "action": "Create a company",
          "description": "Create a Company"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listContacts",
      "options": [
        {
          "name": "Get Many",
          "value": "listContacts",
          "action": "List contacts",
          "description": "List Contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAppointment",
      "options": [
        {
          "name": "Create One",
          "value": "createAppointment",
          "action": "Create an appointment",
          "description": "Create an Appointment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appointment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createItemType",
      "options": [
        {
          "name": "Create One",
          "value": "createItemType",
          "action": "Create an item type",
          "description": "Create an Item Type"
        },
        {
          "name": "Get One",
          "value": "getItemType",
          "action": "Get an item type",
          "description": "Get an Item Type"
        },
        {
          "name": "Get Many",
          "value": "listItemTypes",
          "action": "List item types",
          "description": "List Item Types"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "itemType"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createServiceObject",
      "options": [
        {
          "name": "Create One",
          "value": "createServiceObject",
          "action": "Create a service object",
          "description": "Create a Service Object"
        },
        {
          "name": "Get One Service Object",
          "value": "getServiceObject",
          "action": "Get a service object by id",
          "description": "Get a Service Object by ID"
        },
        {
          "name": "Get Many Service Objects",
          "value": "listServiceObjects",
          "action": "Get all service objects",
          "description": "Get all Service Objects"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceObject"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createServiceRequest",
      "options": [
        {
          "name": "Create One",
          "value": "createServiceRequest",
          "action": "Create a service request",
          "description": "Create a Service Request"
        },
        {
          "name": "Get One",
          "value": "getServiceRequest",
          "action": "Get a service request by id",
          "description": "Get a Service Request by ID"
        },
        {
          "name": "Delete One",
          "value": "deleteServiceRequest",
          "action": "Delete a service request",
          "description": "Delete a Service Request"
        },
        {
          "name": "Add Tags to Service Request",
          "value": "addTagsToServiceRequest",
          "action": "Add a tag to a service request",
          "description": "Add a tag to a service request"
        },
        {
          "name": "Remove Tag From Service Request",
          "value": "removeTagFromServiceRequest",
          "action": "Remove a tag from service request",
          "description": "Remove a tag from service request"
        },
        {
          "name": "Get Many Service Requests",
          "value": "listServiceRequests",
          "action": "Get a list of all service requests",
          "description": "Get a list of all service requests, with Service Objects and Products, Steps, Reports, Appointments and Items expanded"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceRequest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadDocument",
      "options": [
        {
          "name": "Upload One",
          "value": "uploadDocument",
          "action": "Upload document",
          "description": "Upload Document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listUsers",
      "options": [
        {
          "name": "Get Many Users",
          "value": "listUsers",
          "action": "Get all users",
          "description": "Get all Users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateReportFromReportDefinition",
      "options": [
        {
          "name": "Generate Report",
          "value": "generateReportFromReportDefinition",
          "action": "Generate report from report definition",
          "description": "Generate Report from Report Definition"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get a company",
      "description": "Get a company"
    },
    {
      "name": "Get Many",
      "value": "listCompanies",
      "action": "List companies",
      "description": "List Companies"
    },
    {
      "name": "Create One",
      "value": "createCompany",
      "action": "Create a company",
      "description": "Create a Company"
    },
    {
      "name": "Get Many",
      "value": "listContacts",
      "action": "List contacts",
      "description": "List Contacts"
    },
    {
      "name": "Create One",
      "value": "createAppointment",
      "action": "Create an appointment",
      "description": "Create an Appointment"
    },
    {
      "name": "Create One",
      "value": "createItemType",
      "action": "Create an item type",
      "description": "Create an Item Type"
    },
    {
      "name": "Get One",
      "value": "getItemType",
      "action": "Get an item type",
      "description": "Get an Item Type"
    },
    {
      "name": "Get Many",
      "value": "listItemTypes",
      "action": "List item types",
      "description": "List Item Types"
    },
    {
      "name": "Create One",
      "value": "createServiceObject",
      "action": "Create a service object",
      "description": "Create a Service Object"
    },
    {
      "name": "Get One Service Object",
      "value": "getServiceObject",
      "action": "Get a service object by id",
      "description": "Get a Service Object by ID"
    },
    {
      "name": "Get Many Service Objects",
      "value": "listServiceObjects",
      "action": "Get all service objects",
      "description": "Get all Service Objects"
    },
    {
      "name": "Create One",
      "value": "createServiceRequest",
      "action": "Create a service request",
      "description": "Create a Service Request"
    },
    {
      "name": "Get One",
      "value": "getServiceRequest",
      "action": "Get a service request by id",
      "description": "Get a Service Request by ID"
    },
    {
      "name": "Delete One",
      "value": "deleteServiceRequest",
      "action": "Delete a service request",
      "description": "Delete a Service Request"
    },
    {
      "name": "Add Tags to Service Request",
      "value": "addTagsToServiceRequest",
      "action": "Add a tag to a service request",
      "description": "Add a tag to a service request"
    },
    {
      "name": "Remove Tag From Service Request",
      "value": "removeTagFromServiceRequest",
      "action": "Remove a tag from service request",
      "description": "Remove a tag from service request"
    },
    {
      "name": "Get Many Service Requests",
      "value": "listServiceRequests",
      "action": "Get a list of all service requests",
      "description": "Get a list of all service requests, with Service Objects and Products, Steps, Reports, Appointments and Items expanded"
    },
    {
      "name": "Upload One",
      "value": "uploadDocument",
      "action": "Upload document",
      "description": "Upload Document"
    },
    {
      "name": "Get Many Users",
      "value": "listUsers",
      "action": "Get all users",
      "description": "Get all Users"
    },
    {
      "name": "Generate Report",
      "value": "generateReportFromReportDefinition",
      "action": "Generate report from report definition",
      "description": "Generate Report from Report Definition"
    }
  ]

npm_readme:
  # n8n-nodes-mfr

  This is an n8n community node. It lets you use mfr – Field Service Management in your n8n workflows.

  mfr – Field Service Management is a cloud platform for creating, scheduling and tracking service requests, assets, appointments, technicians, reports and related documents.


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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  <!-- delete if no auth needed -->  
  [Compatibility](#compatibility)  
  [Usage](#usage)  <!-- delete if not using this section -->  
  [Resources](#resources)  

  ## Installation

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

  ## Operations


  - Get a Company
  - Create a Company
  - List Companies
  - Create a Service Request
  - Get a Service Request
  - List Service Requests
  - Delete a Service Request
  - Generate Report
  - Add Tags to Service Request
  - Remove Tag from Service Request
  - Upload Document
  - Appointment
  - Create an Appointment
  - Create an Item Type
  - Get an Item Type
  - List Item Types
  - Create a Service Object
  - Get a Service Object
  - List Service Objects
  - List Users
  - Watch Events Trigger – subscribe to real‑time change events from mfr

  ## Credentials

  The basic auth method is used for the requests.

  ## Compatibility

  1.98.0

  ## Usage

  Add the mfr Field Service node to your workflow and choose a Resource and Operation from the dropdown. Map the required fields using n8n data‑pinning or expressions.

  Example ideas:

  Create a Service Request when a support ticket is opened

  Trigger: Zendesk, Freshdesk, etc.

  Node: Create a Company (if customer doesn’t exist)

  Node: Create a Service Request

  Node: Slack / Email → notify dispatcher.

  Generate a PDF report nightly for completed service requests

  Trigger: Cron (daily 02:00)

  Node: List Service Requests (filter status = completed, updatedYesterday)

  Loop: Generate Report → store in S3 / email to customer.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [mfr API Documentation and Auth](https://documenter.getpostman.com/view/3999268/TVYCAzpK#intro)

ai_documentation_summary:
  {"purpose":"Provides access to mfr Field Service Management from n8n workflows to create, schedule and track service requests, companies, assets, appointments, technicians, reports and related documents.","capabilities":["Get a Company","Create a Company","List Companies","Create a Service Request","Get a Service Request","List Service Requests","Delete a Service Request","Generate Report","Add Tags to Service Request","Remove Tag from Service Request"],"authentication":"Basic Auth (username/password)","commonUseCases":["Create a Service Request automatically when a support ticket is opened (integrate with Zendesk/Freshdesk)","Create a Company record if a customer doesn’t exist before creating service requests","Generate and export PDF reports for completed service requests on a schedule (Cron → List Service Requests → Generate Report → store/email)","Upload documents to service requests and add/remove tags for workflow automation","Schedule appointments and assign technicians, and react to real‑time mfr events via the Watch Events Trigger"],"limitations":[],"relatedNodes":["Zendesk","Freshdesk","Slack","Email","Cron"]}


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

updated_at: 2026-02-19 14:41:52
author_name: zachperigon
author_github_url: https://github.com/goperigon/n8n-nodes-perigon.git
npm_package_name: @goperigon/n8n-nodes-perigon
npm_version: 0.1.4
community_fetched_at: 2026-02-19T14:41:52.486Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "articles",
      "options": [
        {
          "name": "Article",
          "value": "articles",
          "description": "Search and filter news articles"
        },
        {
          "name": "Company",
          "value": "companies",
          "description": "Search for companies in the Perigon database"
        },
        {
          "name": "Journalist",
          "value": "journalists",
          "description": "Search journalists and reporters"
        },
        {
          "name": "Person",
          "value": "people",
          "description": "Search for public figures and newsworthy individuals"
        },
        {
          "name": "Source",
          "value": "sources",
          "description": "Search media sources and publications"
        },
        {
          "name": "Story",
          "value": "stories",
          "description": "Track evolving narratives and news story clusters"
        },
        {
          "name": "Summarize",
          "value": "summarize",
          "description": "Generate AI-powered summaries of search results"
        },
        {
          "name": "Topic",
          "value": "topics",
          "description": "Browse available topics"
        },
        {
          "name": "Wikipedia",
          "value": "wikipedia",
          "description": "Search Wikipedia articles"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search articles using keywords",
          "routing": {
            "request": {
              "url": "/articles/all",
              "method": "GET"
            }
          },
          "description": "Search articles using keyword queries with Boolean operators"
        },
        {
          "name": "Vector Search",
          "value": "vectorSearch",
          "action": "Search articles using vector similarity",
          "routing": {
            "request": {
              "url": "/vector/news/all",
              "method": "POST"
            }
          },
          "description": "Search articles using semantic similarity with natural language queries (best for LLM workflows)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "articles"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search news stories",
          "routing": {
            "request": {
              "url": "/stories/all",
              "method": "GET"
            }
          },
          "description": "Track evolving narratives and top news headlines with story clusters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stories"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search people",
          "routing": {
            "request": {
              "url": "/people/all",
              "method": "GET"
            }
          },
          "description": "Search for public figures, politicians, celebrities, and newsworthy individuals"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "people"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search sources",
          "routing": {
            "request": {
              "url": "/sources/all",
              "method": "GET"
            }
          },
          "description": "Search and filter 142,000+ media sources available via the Perigon API"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sources"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Get by ID",
          "value": "getById",
          "action": "Get journalist by ID",
          "routing": {
            "request": {
              "url": "=/journalists/{{$parameter.journalistId}}",
              "method": "GET"
            }
          },
          "description": "Find additional details on a journalist by their unique ID"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search journalists",
          "routing": {
            "request": {
              "url": "/journalists/all",
              "method": "GET"
            }
          },
          "description": "Search 230,000+ journalists from around the world"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "journalists"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search companies",
          "routing": {
            "request": {
              "url": "/companies/all",
              "method": "GET"
            }
          },
          "description": "Browse or search for companies Perigon tracks by name, domain, ticker, and more"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "companies"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search topics",
          "routing": {
            "request": {
              "url": "/topics/all",
              "method": "GET"
            }
          },
          "description": "Search through all available topics in the Perigon database"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "topics"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Search wikipedia using keywords",
          "routing": {
            "request": {
              "url": "/wikipedia/all",
              "method": "GET"
            }
          },
          "description": "Search Wikipedia articles using keyword queries with Boolean operators"
        },
        {
          "name": "Vector Search",
          "value": "vectorSearch",
          "action": "Search wikipedia using vector similarity",
          "routing": {
            "request": {
              "url": "/vector/wikipedia/all",
              "method": "POST"
            }
          },
          "description": "Search Wikipedia articles using semantic similarity with natural language queries (best for LLM workflows)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "wikipedia"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "summarize",
      "options": [
        {
          "name": "Summarize",
          "value": "summarize",
          "action": "Summarize search results",
          "routing": {
            "request": {
              "url": "/summarize",
              "method": "POST"
            }
          },
          "description": "Produce a concise AI-powered summary over articles matching your filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "summarize"
          ]
        }
      },
      "credentialTypes": [
        "has:authenticate"
      ],
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "search",
      "action": "Search articles using keywords",
      "routing": {
        "request": {
          "url": "/articles/all",
          "method": "GET"
        }
      },
      "description": "Search articles using keyword queries with Boolean operators"
    },
    {
      "name": "Vector Search",
      "value": "vectorSearch",
      "action": "Search articles using vector similarity",
      "routing": {
        "request": {
          "url": "/vector/news/all",
          "method": "POST"
        }
      },
      "description": "Search articles using semantic similarity with natural language queries (best for LLM workflows)"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search news stories",
      "routing": {
        "request": {
          "url": "/stories/all",
          "method": "GET"
        }
      },
      "description": "Track evolving narratives and top news headlines with story clusters"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search people",
      "routing": {
        "request": {
          "url": "/people/all",
          "method": "GET"
        }
      },
      "description": "Search for public figures, politicians, celebrities, and newsworthy individuals"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search sources",
      "routing": {
        "request": {
          "url": "/sources/all",
          "method": "GET"
        }
      },
      "description": "Search and filter 142,000+ media sources available via the Perigon API"
    },
    {
      "name": "Get by ID",
      "value": "getById",
      "action": "Get journalist by ID",
      "routing": {
        "request": {
          "url": "=/journalists/{{$parameter.journalistId}}",
          "method": "GET"
        }
      },
      "description": "Find additional details on a journalist by their unique ID"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search journalists",
      "routing": {
        "request": {
          "url": "/journalists/all",
          "method": "GET"
        }
      },
      "description": "Search 230,000+ journalists from around the world"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search companies",
      "routing": {
        "request": {
          "url": "/companies/all",
          "method": "GET"
        }
      },
      "description": "Browse or search for companies Perigon tracks by name, domain, ticker, and more"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search topics",
      "routing": {
        "request": {
          "url": "/topics/all",
          "method": "GET"
        }
      },
      "description": "Search through all available topics in the Perigon database"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search wikipedia using keywords",
      "routing": {
        "request": {
          "url": "/wikipedia/all",
          "method": "GET"
        }
      },
      "description": "Search Wikipedia articles using keyword queries with Boolean operators"
    },
    {
      "name": "Vector Search",
      "value": "vectorSearch",
      "action": "Search wikipedia using vector similarity",
      "routing": {
        "request": {
          "url": "/vector/wikipedia/all",
          "method": "POST"
        }
      },
      "description": "Search Wikipedia articles using semantic similarity with natural language queries (best for LLM workflows)"
    },
    {
      "name": "Summarize",
      "value": "summarize",
      "action": "Summarize search results",
      "routing": {
        "request": {
          "url": "/summarize",
          "method": "POST"
        }
      },
      "description": "Produce a concise AI-powered summary over articles matching your filters"
    }
  ]

npm_readme:
  # n8n-nodes-perigon

  This is the official n8n community node for the Perigon API. It provides comprehensive access to news intelligence APIs, including news articles, story clusters, companies, public figures, journalists, media sources, topics, Wikipedia data, and AI-powered summarization capabilities.

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

  [Perigon](https://www.perigon.io/) provides contextual news intelligence APIs trusted by leading organizations for real-time news monitoring, media analysis, and AI-powered insights.

  ## Installation

  Follow these steps to install this node in your n8n instance:

  1. Go to **Settings > Community Nodes**
  2. Select **Install Another Node**
  3. Enter `@goperigon/n8n-nodes-perigon`
  4. Click **Install**

  Alternatively, you can install it using npm:

  ```bash
  npm install @goperigon/n8n-nodes-perigon
  ```

  ## Documentation

  For complete documentation about the Perigon API and its capabilities, visit:

  - **[API Documentation](https://perigon.io/docs)** - Comprehensive guides and tutorials
  - **[API Reference](https://perigon.io/reference)** - Detailed endpoint documentation
  - **[Perigon Website](https://www.perigon.io/)** - Product information and use cases

  ## Credentials

  To use this node, you need a Perigon API key.

  ### Getting Your API Key

  1. Visit [Perigon's website](https://www.perigon.io)
  2. Sign up for an account or log in
  3. Navigate to your dashboard to retrieve your API key

  ### Adding Credentials to n8n

  1. In n8n, go to **Credentials > New Credential**
  2. Search for "Perigon API"
  3. Enter your API key
  4. Save the credential

  Your credentials will be securely stored and automatically used for all Perigon node operations.

  ## Resources and Operations

  The Perigon node supports the following resources:

  ### 📰 Article

  Search and filter news articles from over 140,000 sources worldwide with comprehensive filtering capabilities.

  **Operations:**

  - **Search**: Keyword-based article search with advanced Boolean operators (AND, OR, NOT)
  - **Vector Search**: Semantic similarity search using natural language queries (optimized for AI and LLM workflows)

  **Key Features:**

  - **Query Filtering**: Full Boolean operator support with exact phrase matching using quotes
  - **Content Filtering**: Search within article titles, descriptions, and full content
  - **Categorical Filtering**: Filter by categories (Tech, Business, Politics, etc.) and granular topics
  - **Geographic Filtering**: Filter by country, state, or city
  - **Temporal Filtering**: Date range filtering with `from` and `to` parameters
  - **Source Filtering**: Filter by specific publisher domains (supports wildcards)
  - **Language Support**: Multi-language article filtering
  - **Sorting Options**: Sort by date, relevance, publication date, refresh date, or add date
  - **Pagination**: Retrieve up to 1,000 results per page with 0-based pagination
  - **Result Count**: Optional total result count display

  **Common Use Cases:**

  - Real-time news monitoring and alerting
  - Media analysis and trend detection
  - Competitive intelligence gathering
  - Content aggregation for research
  - AI-powered news summarization pipelines

  ### 📚 Story

  Track evolving news narratives through automatically clustered headlines from multiple sources.

  **Operations:**

  - **Search**: Discover and monitor story clusters to understand how news narratives develop over time

  **Key Features:**

  - **Query Filtering**: Search within story names, summaries, and key points using Boolean operators
  - **Cluster Configuration**: Set minimum cluster size and required number of unique sources
  - **Categorical Filtering**: Filter by categories, countries, and topics
  - **Temporal Filtering**: Date range filtering to track story evolution
  - **Source Filtering**: Filter by specific publisher domains
  - **Sorting Options**: Sort by article count, creation date, relevance, total count, or last update
  - **Pagination**: Navigate through results with configurable page size
  - **Result Count**: Optional display of total matching stories

  **Common Use Cases:**

  - Breaking news monitoring and narrative tracking
  - Understanding media coverage patterns across sources
  - Crisis communications and reputation management
  - Competitive intelligence on industry developments
  - Research on how stories evolve in the media

  ### 🌐 Wikipedia

  Search and analyze Wikipedia articles with advanced filtering and semantic capabilities.

  **Operations:**

  - **Search**: Keyword-based Wikipedia search with Boolean operators
  - **Vector Search**: Semantic similarity search using natural language queries

  **Key Features:**

  - **Multi-Field Search**: Search across article queries, titles, summaries, full text, and references
  - **Category Filtering**: Filter by Wikipedia categories
  - **Wikidata Integration**: Filter by Wikidata entity IDs and instance types
  - **Popularity Metrics**: Filter by page view statistics (minimum and maximum)
  - **Wiki Project Filtering**: Filter by wiki codes (currently supports English Wikipedia - `enwiki`)
  - **Sorting Options**: Sort by relevance, creation date, or last update date
  - **Pagination**: Navigate results with configurable page size
  - **Pageview Statistics**: Option to include only pages with viewership data

  **Common Use Cases:**

  - Knowledge base enrichment and fact-checking
  - Entity disambiguation and research
  - Background information gathering for news stories
  - Educational content creation
  - Semantic search for related topics and concepts

  ### 👤 Person

  Search for public figures, politicians, celebrities, business leaders, and other newsworthy individuals.

  **Operations:**

  - **Search**: Discover people by name, occupation, or unique identifiers

  **Key Features:**

  - **Name Search**: Search by person name with full Boolean operator support and wildcards
  - **Occupation Filtering**: Filter by occupation label (e.g., "politician", "CEO", "actor") or Wikidata occupation IDs
  - **Wikidata Integration**: Filter by Wikidata entity IDs for precise identification
  - **Pagination**: Navigate results with configurable page size

  **Common Use Cases:**

  - Media monitoring for specific individuals
  - Building contact databases for PR and outreach
  - Research on public figures and their activities
  - Identifying experts and thought leaders in specific fields
  - Enriching CRM data with public figure information

  ### 🏢 Company

  Search and discover companies with detailed business information and filtering options.

  **Operations:**

  - **Search**: Find companies by name, domain, ticker symbol, industry, and various business attributes

  **Key Features:**

  - **Query Search**: Search across company names, alternative names, domains, and ticker symbols
  - **Name-Specific Search**: Direct filtering by company name with Boolean operator support
  - **Geographic Filtering**: Filter by headquarters country
  - **Domain Filtering**: Filter by company website domains
  - **Stock Market Data**: Filter by stock exchange (NASDAQ, NYSE, etc.) and ticker symbols
  - **Industry Classification**: Filter by industry and sector with Boolean operators
  - **Company Size**: Filter by employee count ranges
  - **Direct ID Lookup**: Filter by specific company IDs
  - **Pagination**: Navigate results with configurable page size

  **Common Use Cases:**

  - Competitive intelligence and market research
  - Lead generation and prospecting
  - Investment research and due diligence
  - Building company databases for sales and marketing
  - Monitoring industry trends and company developments

  ### ✍️ Journalist

  Search through over 230,000 journalists and reporters from around the world.

  **Operations:**

  - **Search**: Find journalists by name, publication, coverage area, or activity level
  - **Get by ID**: Retrieve comprehensive details about a specific journalist using their unique identifier

  **Key Features:**

  - **Query Search**: Search across journalist names, titles, and Twitter biographies with Boolean operators
  - **Name-Specific Search**: Direct filtering by journalist name
  - **Coverage Filtering**: Filter by categories (Tech, Business, Politics, etc.) and granular topics
  - **Geographic Focus**: Filter by countries they commonly cover in their reporting
  - **Publication Filtering**: Filter by publisher domains and news sources
  - **Activity Metrics**: Filter by monthly posting activity (minimum and maximum thresholds)
  - **Direct ID Lookup**: Find specific journalists by their unique IDs
  - **Result Count**: Optional display of total matching journalists
  - **Pagination**: Navigate results with configurable page size (up to 1,000 per page)

  **Common Use Cases:**

  - Building media lists and PR contact databases
  - Finding subject matter experts for interviews
  - Monitoring journalist coverage and beats
  - Analyzing media landscape and journalist activity
  - Targeted outreach for press releases and stories

  ### 📡 Source

  Discover and analyze over 140,000 media sources and publications worldwide.

  **Operations:**

  - **Search**: Search and filter news sources with comprehensive criteria

  **Key Features:**

  - **Name Search**: Search by source name with full Boolean operator support
  - **Domain Filtering**: Filter by publisher domains with wildcard support (e.g., `*.cnn.com`)
  - **Category Filtering**: Filter by primary content categories
  - **Geographic Filtering**: Filter by country coverage
  - **Traffic Metrics**: Filter by monthly visit ranges (minimum and maximum)
  - **Paywall Status**: Filter sources by paywall presence
  - **Source Groups**: Filter by predefined publisher bundles (e.g., "top100")
  - **Sorting Options**: Sort by relevance, global rank, monthly visits, or average monthly posts
  - **Result Count**: Optional display of total matching sources
  - **Pagination**: Navigate results with configurable page size

  **Common Use Cases:**

  - Building media monitoring source lists
  - Analyzing media landscape and publication reach
  - Identifying authoritative sources for specific topics
  - Filtering sources by audience size and engagement
  - Creating custom news feeds from trusted publications

  ### 🏷️ Topic

  Browse and discover topics available in the Perigon database for precise content filtering.

  **Operations:**

  - **Search**: Search through all available topics with hierarchical filtering

  **Key Features:**

  - **Name Search**: Search topics by exact name or partial text match
  - **Category Filtering**: Filter topics by broad article categories (Tech, Business, Politics, etc.)
  - **Subcategory Filtering**: Filter by specific subcategories for granular topic discovery
  - **Pagination**: Navigate results with configurable page size

  **Common Use Cases:**

  - Discovering available topics for content filtering
  - Understanding topic taxonomy and structure
  - Building topic-based content categorization systems
  - Exploring related topics within categories
  - Creating targeted news feeds by topic

  ### 🤖 Summarize

  Generate AI-powered summaries of news articles using state-of-the-art language models.

  **Operations:**

  - **Summarize**: Produce intelligent, concise summaries from articles matching your search criteria

  **Key Features:**

  - **Query Filtering**: Filter articles using Boolean operators before summarization
  - **Custom Prompts**: Provide detailed instructions (up to 2,048 characters) to guide summary generation
  - **Model Selection**: Choose from multiple leading AI models:
    - GPT-4.1, GPT-4.1 Mini, GPT-4.1 Nano
    - GPT-4o, GPT-4o Mini
    - Llama 3.3 70B Versatile
    - DeepSeek R1 Distill Llama 70B
  - **Article Limits**: Control the number of articles to include (max 100) and return
  - **Summarization Methods**:
    - **ARTICLES**: Include all matching articles
    - **CLUSTERS**: Select one representative article per story cluster
  - **Field Selection**: Choose which article fields to summarize (title, content, summary)
  - **Token Control**: Set maximum token limits for generated summaries
  - **Article Filtering**: Apply all standard filters (category, country, source, date range)

  **Common Use Cases:**

  - Automated news briefings and digests
  - Competitive intelligence reports
  - Market research summaries
  - Crisis monitoring and alerts
  - Content curation for newsletters
  - AI-powered research assistance

  ## Example Usage

  ### Search Recent Tech News

  1. Add the Perigon node to your workflow
  2. Select **Article** as the resource
  3. Select **Search** as the operation
  4. Enter your search query: `"artificial intelligence" AND technology`
  5. In Additional Options:
     - Category: `Tech`
     - From Date: `2024-01-01`
     - Size: `20`
  6. Run the workflow

  ### Find News Stories About Climate Change

  1. Add the Perigon node
  2. Select **Story** as the resource
  3. Select **Search** as the operation
  4. Enter query: `climate change`
  5. Set minimum unique sources: `3`
  6. Run the workflow

  ### Search for Journalists Covering Finance

  1. Add the Perigon node
  2. Select **Journalist** as the resource
  3. Select **Search** as the operation
  4. Enter query: `finance`
  5. In Additional Options:
     - Category: `Business,Finance`
     - Min Monthly Posts: `10`
  6. Run the workflow

  ### Semantic Search for Similar Articles (LLM Workflows)

  1. Add the Perigon node
  2. Select **Article** as the resource
  3. Select **Vector Search** as the operation
  4. Enter natural language query: `Articles about renewable energy innovations and their impact on climate policy`
  5. Set size to desired number of results
  6. Run the workflow

  ### Generate AI Summary of News

  1. Add the Perigon node
  2. Select **Summarize** as the resource
  3. Select **Summarize** as the operation
  4. Enter query: `electric vehicles`
  5. Customize the prompt field with your summary instructions
  6. In Additional Options:
     - Category: `Tech,Business`
     - Max Article Count: `20`
     - Model: `gpt-4.1`
  7. Run the workflow

  ### Search Companies by Industry

  1. Add the Perigon node
  2. Select **Company** as the resource
  3. Select **Search** as the operation
  4. Enter query: `Tesla OR Apple OR Microsoft`
  5. In Additional Options:
     - Industry: `Technology OR Auto Manufacturers`
     - Num Employees From: `1000`
  6. Run the workflow

  ### Find Journalist Contacts for PR Campaign

  1. Add the Perigon node
  2. Select **Journalist** as the resource
  3. Select **Search** as the operation
  4. Enter query: `technology reporter`
  5. In Additional Options:
     - Category: `Tech`
     - Min Monthly Posts: `5`
     - Source: `techcrunch.com,theverge.com,wired.com`
  6. Run the workflow

  ### Get Detailed Journalist Information

  1. Add the Perigon node
  2. Select **Journalist** as the resource
  3. Select **Get by ID** as the operation
  4. Enter the journalist ID (obtained from a previous search)
  5. Run the workflow to retrieve full profile details

  ## AI Agent Compatibility

  This node is compatible with n8n's AI agent functionality (`usableAsTool: true`), allowing it to be used as a tool within AI agent workflows. This enables:

  - Dynamic news retrieval based on agent decisions
  - Automated research and fact-checking
  - Context-aware content generation
  - Multi-step information gathering workflows

  ## Advanced Features

  ### Boolean Search Syntax

  Many search fields support advanced Boolean operators for precise querying:

  - **AND**: Both terms must be present (e.g., `climate AND policy`)
  - **OR**: Either term can be present (e.g., `Biden OR Trump`)
  - **NOT**: Exclude terms (e.g., `energy NOT fossil`)
  - **Wildcards**: Use `*` for multiple characters, `?` for single character (e.g., `climat*`, `wom?n`)
  - **Grouping**: Use parentheses to group terms (e.g., `(renewable OR clean) AND energy`)
  - **Exact Phrases**: Use double quotes for exact matching (e.g., `"climate change"`)

  **Example Complex Query:**

  ```
  ("artificial intelligence" OR AI OR "machine learning") AND (healthcare OR medical) NOT cryptocurrency
  ```

  ### Semantic Vector Search

  Both Article and Wikipedia resources support vector search for semantic similarity matching:

  - Use natural language queries instead of keywords
  - Find conceptually related content even without exact keyword matches
  - Ideal for AI/LLM workflows and exploratory research
  - Better results for complex, multi-faceted queries

  ## Resources

  - **[Perigon Website](https://www.perigon.io/)** - Product information and pricing
  - **[API Documentation](https://www.perigon.io/docs)** - Complete API guides
  - **[API Reference](https://www.perigon.io/reference)** - Endpoint documentation
  - **[n8n Documentation](https://docs.n8n.io/)** - Learn about n8n workflows
  - **[Community Nodes](https://docs.n8n.io/integrations/community-nodes/)** - n8n community node information

  ## Support

  For issues, questions, or feature requests:

  - **GitHub Issues**: [Report bugs or request features](https://github.com/goperigon/n8n-nodes-perigon/issues)
  - **Perigon Support**: Contact support@perigon.io
  - **n8n Community**: [Join the n8n community](https://community.n8n.io/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provide n8n workflow access to Perigon's news intelligence APIs for searching and analyzing news articles, story clusters, people, Wikipedia content, and other media intelligence, plus AI-powered summarization and semantic (vector) search.","capabilities":["Article: Search (keyword + advanced Boolean operators) and Vector Search (semantic similarity)","Article: Query, content, categorical, geographic, temporal, source, and language filtering; sorting and pagination","Story: Search story clusters, configure cluster size and unique source requirements, filtering, sorting and pagination","Wikipedia: Search and Vector Search across titles, summaries, full text and references with category, Wikidata, and pageview filters","Person (public figures): Search by name, occupation, or identifiers","Additional resources: access/search for companies, journalists, media sources, topics, and other Perigon resources (search/filter operations)","AI-powered summarization for news content (summarize articles/stories for downstream workflows)"],"authentication":"API key required (Perigon API key stored in n8n credentials)","commonUseCases":["Real-time news monitoring and alerting","Media analysis and trend detection","Competitive intelligence and industry monitoring","Content aggregation and research pipelines","AI-powered news summarization and LLM enrichment"],"limitations":["Pagination is 0-based and results per page can be up to 1,000","Wikipedia wiki-project filtering currently notes support for English Wikipedia (enwiki) only"],"relatedNodes":[]}


node_type: n8n-nodes-csvbox.csvboxTrigger
package_name: n8n-nodes-csvbox
display_name: CSVBox Trigger
description: Starts a workflow when a new row is imported to a CSVBox Sheet
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: sumit_yewale
author_github_url: https://github.com/csvbox-io/
npm_package_name: n8n-nodes-csvbox
npm_version: 0.1.7
community_fetched_at: 2026-02-19T14:41:52.486Z
ai_summary_generated_at: 2026-02-19 16:43:57
npm_readme:
  ![CSVBox for n8n](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-csvbox
  ## Overview

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

  CSVBox is a platform for importing CSV data into your applications with ease. This node allows you to trigger n8n workflows when new rows are imported into a CSVBox Importer.

  [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)
  - [Usage](#usage)
  - [Resources](#resources)
  - [License](#license)

  ---

  ## Installation

  You can install this node as a community package in your n8n instance.

  ### Steps

  1. Go to **Settings → Community Nodes** in your n8n instance.
  2. Click **Install a community node** and enter:
     ```
     n8n-nodes-csvbox
     ```
  3. Check the warning button.
  4. Click on the **Install** and wait for the installation to complete.
  4. Restart n8n if prompted.

  After installation, you’ll find the **CSVBox Trigger** node available in your n8n workflow editor.

  ---

  ## Operations

  This package provides the following node:

  - **CSVBox Trigger**: Starts a workflow when a new row is imported to a CSVBox Sheet.

  ---

  ## Credentials

  Create an API Key and Secret Key from the CSVBox API Key Page, then add them as a credential in n8n using the following fields:

  - **API Key:** Your CSVBox API Key.
  - **API Secret Key:** Your CSVBox Secret Key.

  ---

  ## Compatibility

  - **Minimum n8n version:** 1.x
  - **Node.js version:** >= 20.15
  - Tested on latest n8n and Node.js LTS.

  ---

  ## Usage

  1. In your n8n workflow editor, add the **CSVBox Trigger** node.
  2. Choose your CSVBox credential from the dropdown (set up your API Key and Secret in n8n Credentials first).
  3. Select the Sheet name you want to monitor for new imports.
  4. Click **Fetch and execute** to test the trigger and preview sample data from your sheet.
  5. Once you see the sample data, connect and map it to the next node in your workflow.
  6. Activate your workflow. Now, whenever new rows are imported into your selected CSVBox sheet, your workflow will run automatically.

  ---

  ## Resources

  - [CSVBox Documentation](https://help.csvbox.io/destinations/n8n)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

  ---

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Starts an n8n workflow when new rows are imported into a selected CSVBox sheet (CSVBox Importer).","capabilities":["Trigger a workflow when new rows are imported to a specified CSVBox sheet","Select which CSVBox Sheet (Importer) to monitor","Fetch and execute to preview sample row data from the sheet for mapping/testing","Use CSVBox API credentials configured in n8n to authenticate the trigger"],"authentication":"API Key and API Secret (provided as CSVBox credentials in n8n)","commonUseCases":["Automatically ingest imported CSV rows into databases, CRMs, or other apps","Run data transformation, validation, or enrichment pipelines when new CSV data arrives","Send notifications or alerts when new CSV imports occur","Map imported CSV rows into downstream workflow nodes for automation or processing"],"limitations":["This package only provides a trigger node (CSVBox Trigger); no action/read/write nodes for CSVBox are included","Triggers on new row imports only (no mention of update/delete events)","Requires n8n >= 1.x and Node.js >= 20.15","Must be installed as a community node and n8n may need to be restarted after installation"],"relatedNodes":[]}


node_type: n8n-nodes-belakeai.belakeAi
package_name: n8n-nodes-belakeai
display_name: Belake.ai
description: Belake.ai API operations
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: rique29
author_github_url: https://github.com/belakeaiservicos/
npm_package_name: n8n-nodes-belakeai
npm_version: 1.0.4
community_fetched_at: 2026-02-19T14:41:52.487Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "chat",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Chat",
          "value": "chat"
        },
        {
          "name": "Datasource",
          "value": "datasource"
        },
        {
          "name": "Department",
          "value": "department"
        },
        {
          "name": "Language Model",
          "value": "languageModel"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Agents",
      "options": [
        {
          "name": "Get Agent by ID",
          "value": "Get Agent by ID",
          "action": "Get agent by id"
        },
        {
          "name": "Get Agents",
          "value": "Get Agents",
          "action": "Get agents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Send Message",
      "options": [
        {
          "name": "Get Chat by ID",
          "value": "Get Chat by ID",
          "action": "Get chat by id"
        },
        {
          "name": "Get Chats",
          "value": "Get Chats",
          "action": "Get chats"
        },
        {
          "name": "Send Message",
          "value": "Send Message",
          "action": "Send message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Datasources",
      "options": [
        {
          "name": "Get Datasource by ID",
          "value": "Get Datasource by ID",
          "action": "Get datasource by id"
        },
        {
          "name": "Get Datasources",
          "value": "Get Datasources",
          "action": "Get datasources"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datasource"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Departments",
      "options": [
        {
          "name": "Get Department by ID",
          "value": "Get Department by ID",
          "action": "Get department by id"
        },
        {
          "name": "Get Departments",
          "value": "Get Departments",
          "action": "Get departments"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "department"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "Get Language Models",
      "options": [
        {
          "name": "Get Language Model by ID",
          "value": "Get Language Model by ID",
          "action": "Get language model by id"
        },
        {
          "name": "Get Language Models",
          "value": "Get Language Models",
          "action": "Get language models"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "languageModel"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Agent by ID",
      "value": "Get Agent by ID",
      "action": "Get agent by id"
    },
    {
      "name": "Get Agents",
      "value": "Get Agents",
      "action": "Get agents"
    },
    {
      "name": "Get Chat by ID",
      "value": "Get Chat by ID",
      "action": "Get chat by id"
    },
    {
      "name": "Get Chats",
      "value": "Get Chats",
      "action": "Get chats"
    },
    {
      "name": "Send Message",
      "value": "Send Message",
      "action": "Send message"
    },
    {
      "name": "Get Datasource by ID",
      "value": "Get Datasource by ID",
      "action": "Get datasource by id"
    },
    {
      "name": "Get Datasources",
      "value": "Get Datasources",
      "action": "Get datasources"
    },
    {
      "name": "Get Department by ID",
      "value": "Get Department by ID",
      "action": "Get department by id"
    },
    {
      "name": "Get Departments",
      "value": "Get Departments",
      "action": "Get departments"
    },
    {
      "name": "Get Language Model by ID",
      "value": "Get Language Model by ID",
      "action": "Get language model by id"
    },
    {
      "name": "Get Language Models",
      "value": "Get Language Models",
      "action": "Get language models"
    }
  ]

npm_readme:
  # n8n-nodes-belakeai

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

  Belake.ai is an AI platform that provides intelligent agents, chat interactions, data source management, department organization, and language model integration to enhance your automation workflows.

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

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

  ## Installation

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

  ## Operations

  ### Agent

  * **Get Agent by ID** - Retrieves detailed information about a specific agent using its identifier
  * **Get Agents** - Retrieves a list of all available agents

  ### Chat

  * **Get Chat by ID** - Retrieves a specific chat conversation using its identifier
  * **Get Chats** - Retrieves a list of all chats
  * **Send Message** - Sends a message to AI agents, with support for multiple agents, language specification, optional chat continuation, and chat visibility control

  ### Datasource

  * **Get Datasource by ID** - Retrieves detailed information about a specific datasource using its identifier
  * **Get Datasources** - Retrieves a list of all available datasources

  ### Department

  * **Get Department by ID** - Retrieves detailed information about a specific department using its identifier
  * **Get Departments** - Retrieves a list of all departments

  ### Language Model

  * **Get Language Model by ID** - Retrieves detailed information about a specific language model using its identifier
  * **Get Language Models** - Retrieves a list of all available language models

  ## Credentials

  To use this node, you need to authenticate with Belake.ai using API key authentication.

  ### Prerequisites

  1. **Belake.ai Account**: You need an active Belake.ai account. If you don't have one, sign up at [https://www.belake.ai/](https://www.belake.ai/)
  2. **Backend URL**: Your Belake.ai backend instance URL (e.g., `https://[instance].belake.ai`)
  3. **API Key**: Obtain your API key from the Belake.ai portal

  ### Authentication Method

  **API Key Authentication** - This node uses API key-based authentication where:

  * You provide your Backend URL and API Key in the credential configuration
  * The credentials securely store your API key (no HTTP requests are made at credential level)
  * When executing a workflow, the node automatically exchanges your API key for a bearer token using n8n's built-in HTTP helpers
  * The bearer token is then used for all subsequent API requests within that execution
  * Authentication is handled transparently on each workflow execution

  ### Setting Up Credentials

  1. In n8n, create a new credential and select "Belake API"
  2. Enter your **Backend URL** (must include protocol, e.g., `https://[your-instance].belake.ai`)
  3. Enter your **API Key** from the Belake.ai portal
  4. Click "Test" to verify your credentials work correctly
  5. Save the credential

  For detailed credential setup instructions, see the [credentials documentation](credentials/README.md).

  ## Compatibility

  This node requires n8n version 1.0.0 or higher. It has been tested with n8n versions 1.0.0 and above.

  The node uses the n8n Nodes API version 1 with strict mode enabled.

  ### Technical Implementation

  * **Credentials**: Store API key and backend URL without making HTTP requests (compliant with n8n best practices)
  * **Authentication**: Token exchange is performed at node execution time using `this.helpers.httpRequest()`
  * **Request Handling**: Declarative operations map with centralized authentication helper
  * **Type Safety**: Full TypeScript support with `IDataObject` types (no `any` types)
  * **Error Handling**: Proper error handling with support for "Continue on Fail" mode

  ## Usage

  ### Basic Workflow Example

  A common use case is to send a message to AI agents and process the response:

  1. Add a Belake.ai node to your workflow
  2. Select your Belake API credentials
  3. Choose the **Chat** resource and **Send Message** operation
  4. Configure the message parameters:

     * **Message**: The message content to send
     * **Agent IDs**: Array of agent IDs to send the message to
     * **Language**: Language code (default: `pt-br`)
     * **Chat ID** (optional): For continuing an existing conversation
     * **Hide Chat**: Boolean to control chat visibility in response
  5. Execute the workflow

  ### Retrieving Information

  To retrieve information about available resources:

  1. Select the appropriate resource (Agent, Datasource, Department, or Language Model)
  2. Choose **Get [Resource]s** to list all available items
  3. Use **Get [Resource] by ID** to retrieve specific item details using its identifier

  ### Best Practices

  * Use descriptive names for your credentials to distinguish between different Belake.ai instances or environments
  * Store sensitive information like API keys securely
  * Handle errors appropriately in your workflows
  * Use the chat continuation feature (Chat ID) to maintain conversation context across multiple messages

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Belake.ai homepage](https://www.belake.ai/)
  * [Belake.ai API credentials documentation](credentials/README.md)

  ## Version history

  * **v1.0.2** - Architecture improvements (current)
    * Refactored authentication to comply with n8n best practices
    * Moved token exchange from credentials to node execution
    * Implemented declarative operations map for cleaner code
    * Enhanced type safety (removed `any` types)
    * Improved error handling and code maintainability

  * **v1.0.1** - Repository updates
    * Renamed repository references and added lint file

  * **v1.0.0** - First release
    * Support for Agent, Chat, Datasource, Department, and Language Model resources
    * API key authentication
    * Operations for retrieving and managing Belake.ai resources
    * Chat message sending with multi-agent support and language specification

ai_documentation_summary:
  {"purpose":"Provides n8n workflow access to Belake.ai APIs to retrieve agents, chats, datasources, departments and language models, and to send messages to AI agents for conversational interactions.","capabilities":["Get Agent by ID","Get Agents (list)","Get Chat by ID","Get Chats (list)","Send Message to AI agents (supports multiple agent IDs, language selection, optional chat continuation via Chat ID, and chat visibility control)","Get Datasource by ID","Get Datasources (list)","Get Department by ID","Get Departments (list)","Get Language Model by ID"],"authentication":"API key required (provide Backend URL and API Key). The node exchanges the API key for a bearer token at workflow execution and uses that token for subsequent requests.","commonUseCases":["Send messages to one or more Belake.ai agents and process their responses in a workflow","List or retrieve details about agents, chats, datasources, departments, or language models for orchestration/monitoring","Continue an existing chat conversation by providing a Chat ID to maintain context","Control chat visibility when sending messages (hide/show in responses)","Integrate Belake.ai responses into automation workflows (e.g., triage, notifications, data lookups)"],"limitations":["Requires n8n version 1.0.0 or higher","Exposes primarily read/list operations and a Send Message action; no create/update/delete management endpoints are documented in the README","Must supply a Backend URL that includes the protocol (e.g., https://...) and a valid Belake.ai account/API key"],"relatedNodes":[]}


node_type: @solution25/n8n-nodes-shopware.shopware
package_name: @solution25/n8n-nodes-shopware
display_name: Shopware
description: Read, update, write and delete data from Shopware
category: Community
development_style: declarative
version: 1.4.5
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: fatjon-gashi1
author_github_url: https://github.com/solution25com/n8n-nodes-shopware.git
npm_package_name: @solution25/n8n-nodes-shopware
npm_version: 1.4.5
community_fetched_at: 2026-02-19T14:41:52.488Z
ai_summary_generated_at: 2026-02-19 16:43:57
npm_readme:
  # @solution25/n8n-nodes-shopware

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

  Shopware 6 is a modern, open-source, headless e-commerce platform designed for flexibility and scalability. With this node, you can connect your Shopware store to other services and automate tasks such as product management, order processing, and customer handling.

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

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

  ## Installation

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

  ## Operations

  This node currently supports the following resources and operations:

  | Resource | Get | Get Many | Create | Update | Delete |
  |----------|-----|----------|--------|--------|--------|
  | Product  |  ✓  |     ✓    |    ✓   |    ✓   |    ✓   |
  | Customer |  ✓  |     ✓    |    ✓   |    ✓   |    ✓   |
  | Order    |  ✓  |     ✓    |    ✓   |    ✓   |    ✓   |

  ## Credentials

  Authentication is handled via a [Shopware Integration](https://docs.shopware.com/en/shopware-6-en/settings/system/integrationen), which you can create in the Shopware admin panel.
  Required fields:

  * Domain (your Shopware 6 store URL)

  * Client ID

  * Client Secret

  Once configured, the node uses these credentials to authenticate against the Shopware Admin API.

  ## Compatibility

  n8n version: tested with the latest n8n release (keep n8n updated for best compatibility).

  Shopware version: compatible with Shopware 6.6.x.x.

  ## Usage

  Here are a few examples of what you can do with this node:

  * Automatically create a new customer in Shopware when a signup happens in another system.

  * Sync products between Shopware and an external inventory tool.

  * Fetch new orders and send notifications to Slack, email, or other channels.

  For general n8n usage, see the [Try it out guide](https://docs.n8n.io/try-it-out/).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Shopware 6 Admin API reference](https://shopware.stoplight.io/docs/admin-api/twpxvnspkg3yu-quick-start-guide)
  * [Shopware documentation](https://docs.shopware.com)
  * [Shopware official site](https://www.shopware.com)

  ## Version history

  | Version         | Description                                                              |
  | --------------- | ------------------------------------------------------------------------ |
  | **0.1.0-alpha** | Pre-release with basic product, customer, and order support.             |
  | **1.0.0**       | Initial release with full product resource support.                      |
  | **1.1.0**       | Added full support for customer resource.                                |
  | **1.2.0**       | Added full support for order resource.                                   |
  | **1.2.1**       | Fixed order creation using node-created customers.                       |
  | **1.3.0**       | Added advanced filtering for all resources.                              |
  | **1.3.1**       | Added base unit testing for all resources.                               |
  | **1.4.0**       | Added full support for categories resource.                              |
  | **1.4.1**       | Removed deprecated transport method, options and types.                  |
  | **1.4.2**       | Fixed missing credentials in package definition and resolved icon paths. |
  | **1.4.3**       | Added credentials explicitly to the base versioned node.                 |
  | **1.4.4**       | Added line-items, currency, deliveries and transactions data to order. Changed node icon format to SVG.|
  | **1.4.5**       | Removed debug statements from code.                                        |

ai_documentation_summary:
  {"purpose":"Connect Shopware 6 to n8n workflows to read, create, update and delete store data (products, customers, orders, etc.), enabling automation between Shopware and other services.","capabilities":["Products: get (single), getMany (list), create, update, delete","Customers: get (single), getMany (list), create, update, delete","Orders: get (single), getMany (list), create, update, delete","Categories: full resource support (added in v1.4.0)","Advanced filtering for resources (added in v1.3.0)","Order detailed data support (line-items, currency, deliveries, transactions — added in v1.4.4)","Authenticate and call Shopware Admin API using Shopware Integration credentials"],"authentication":"Shopware Integration credentials (Domain / Client ID / Client Secret) for authenticating to the Shopware Admin API","commonUseCases":["Automatically create a Shopware customer when a signup occurs in another system","Sync products between Shopware and an external inventory or PIM system","Fetch new orders and forward notifications to Slack, email, or other channels","Automate order processing and update order-related data (line items, deliveries, transactions)"],"limitations":["Compatible with Shopware 6 only (tested with Shopware 6.6.x.x)","Node is a community node and must be installed separately (follow community nodes installation guide)","Tested with latest n8n release — keep n8n updated for best compatibility"],"relatedNodes":[]}


node_type: n8n-nodes-olostep.olostepScrape
package_name: n8n-nodes-olostep
display_name: Olostep Web Scraper
description: Search, extract, and structure web data using Olostep's Web search, scraping, and crawling API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: olostep
author_github_url: https://github.com/olostep/
npm_package_name: n8n-nodes-olostep
npm_version: 0.2.7
community_fetched_at: 2026-02-19T14:41:52.488Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "scrape",
      "options": [
        {
          "name": "Answer",
          "value": "answer"
        },
        {
          "name": "Batch",
          "value": "batch"
        },
        {
          "name": "Crawl",
          "value": "crawl"
        },
        {
          "name": "Map",
          "value": "map"
        },
        {
          "name": "Scrape",
          "value": "scrape"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Scrape Website",
          "value": "create",
          "action": "Scrape a URL",
          "description": "Extract content from a single URL"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search",
          "description": "Search the Web and get structured results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "scrape"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Batch Scrape URLs",
          "value": "create",
          "action": "Batch scrape urls",
          "description": "Scrape up to 10k URLs at the same time"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "batch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Crawl",
          "value": "create",
          "action": "Create a crawl",
          "description": "Get the content of subpages of a URL"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "crawl"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Map",
          "value": "create",
          "action": "Create a map",
          "description": "Get all URLs on a website"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "map"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Answer",
          "value": "create",
          "action": "Create answer",
          "description": "Search the web and return AI-powered answers with sources"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "answer"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Scrape Website",
      "value": "create",
      "action": "Scrape a URL",
      "description": "Extract content from a single URL"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search",
      "description": "Search the Web and get structured results"
    },
    {
      "name": "Batch Scrape URLs",
      "value": "create",
      "action": "Batch scrape urls",
      "description": "Scrape up to 10k URLs at the same time"
    },
    {
      "name": "Create Crawl",
      "value": "create",
      "action": "Create a crawl",
      "description": "Get the content of subpages of a URL"
    },
    {
      "name": "Create Map",
      "value": "create",
      "action": "Create a map",
      "description": "Get all URLs on a website"
    },
    {
      "name": "Create Answer",
      "value": "create",
      "action": "Create answer",
      "description": "Search the web and return AI-powered answers with sources"
    }
  ]

npm_readme:
  # n8n-nodes-olostep

  The Olostep n8n integration brings powerful web search, scraping, and crawling capabilities to n8n workflows. Build automated workflows that search, extract, and structure web data from any website without writing code.

  Olostep is a web search, scraping, and crawling API that extracts structured web data from any website in real time. Perfect for automating research workflows, monitoring competitors, and collecting data at scale.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Workflow Template](#workflow-template)  
  [Testing Locally](#testing-locally)  
  [Publishing to npm](#publishing-to-npm)  
  [Compatibility](#compatibility)  
  [Resources](#resources)

  ## Installation

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

  Or install directly via npm:

  ```bash
  npm install n8n-nodes-olostep
  ```

  Then restart n8n to load the new node.

  ## Operations

  ### Scrape Website

  Extract content from a single URL. Supports multiple formats and JavaScript rendering.

  **Use Cases:**
  - Monitor specific pages for changes
  - Extract product information from e-commerce sites
  - Gather data from news articles or blog posts
  - Pull content for content aggregation

  **Parameters:**
  - **URL to Scrape** (required): The URL of the website you want to scrape
  - **Output Format**: Choose format (HTML, Markdown, JSON, or Plain Text) - default: Markdown
  - **Country Code**: Optional country code (e.g., US, GB, CA) for location-specific scraping
  - **Wait Before Scraping**: Wait time in milliseconds before scraping (0-10000) - useful for dynamic content
  - **Parser**: Optional parser ID for specialized extraction (e.g., @olostep/amazon-product)

  **Output Fields:**
  - `id`: Scrape ID
  - `url`: Scraped URL
  - `markdown_content`: Markdown formatted content
  - `html_content`: HTML formatted content
  - `json_content`: JSON formatted content
  - `text_content`: Plain text content
  - `status`: Status of the scrape
  - `timestamp`: Timestamp of the scrape
  - `screenshot_hosted_url`: URL to screenshot (if available)
  - `page_metadata`: Page metadata

  ### Search

  Search the Web for a given query and get structured results (non-AI, parser-based search results).

  **Use Cases:**
  - Automated research workflows
  - Lead discovery and enrichment
  - Competitive analysis
  - Content research

  **Parameters:**
  - **Query** (required): Search query

  **Output:** Returns structured search results as JSON.

  ### Answers (AI)

  Search the web and return AI-powered answers in the JSON structure you want, with sources and citations.

  **Use Cases:**
  - Enrich spreadsheets or records with web-sourced facts
  - Ground AI applications on real-world data and sources
  - Research tasks that require verified outputs with citations

  **Parameters:**
  - **Task** (required): Question or task to answer using web data
  - **JSON Schema (Optional)**: JSON schema/object or a short description of the desired output shape

    Examples:
    - Object schema: `{ "book_title": "", "author": "", "release_date": "" }`
    - Description string: `"Return a list of the top 5 competitors with name and homepage URL"`

  **Output Fields:**
  - `answer_id`: Answer ID
  - `object`: Object type
  - `task`: Original task
  - `result`: Parsed JSON if `json` was provided; otherwise the answer object
  - `sources`: Array of source URLs used
  - `created`: Creation timestamp

  ### Batch Scrape URLs

  Scrape up to 10k urls at the same time. Perfect for large-scale data extraction.

  **Use Cases:**
  - Scrape entire product catalogs
  - Extract data from multiple search results
  - Process lists of URLs from spreadsheets
  - Bulk content extraction

  **Parameters:**
  - **URLs to Scrape** (required): JSON array of objects with `url` and `custom_id` fields
    - Example: `[{"url":"https://example.com","custom_id":"site1"}]`
  - **Output Format**: Choose format for all URLs - default: Markdown
  - **Country Code**: Optional country code for location-specific scraping
  - **Wait Before Scraping**: Wait time in milliseconds before scraping each URL
  - **Parser**: Optional parser ID for specialized extraction

  **Output Fields:**
  - `batch_id`: Batch ID (use this to retrieve results later)
  - `status`: Status of the batch
  - `total_urls`: Total number of URLs in the batch
  - `created_at`: Creation timestamp
  - `formats`: Requested format
  - `country`: Country code used
  - `parser`: Parser used
  - `urls`: Array of URLs in the batch

  ### Create Crawl

  Get the content of subpages of a URL. Autonomously discover and scrape entire websites by following links. Perfect for documentation sites, blogs, and content repositories.

  **Use Cases:**
  - Crawl and archive entire documentation sites
  - Extract all blog posts from a website
  - Build knowledge bases from web content
  - Monitor website structure changes

  **Parameters:**
  - **Start URL** (required): Starting URL for the crawl
  - **Maximum Pages**: Maximum number of pages to crawl (default: 10)
  - **Follow Links**: Whether to follow links found on pages (default: true)
  - **Output Format**: Format for scraped content - default: Markdown
  - **Country Code**: Optional country code for location-specific crawling
  - **Parser**: Optional parser ID for specialized content extraction

  **Output Fields:**
  - `crawl_id`: Crawl ID (use this to retrieve results later)
  - `object`: Object type
  - `status`: Status of the crawl
  - `start_url`: Starting URL
  - `max_pages`: Maximum pages
  - `follow_links`: Whether links are followed
  - `created`: Creation timestamp
  - `formats`: Formats requested
  - `country`: Country code used
  - `parser`: Parser used

  ### Create Map

  Get all URLs on a website. Extract all URLs from a website for content discovery and site structure analysis.

  **Use Cases:**
  - Build sitemaps and site structure diagrams
  - Discover all pages before batch scraping
  - Find broken or missing pages
  - SEO audits and analysis

  **Parameters:**
  - **Website URL** (required): Website URL to extract links from
  - **Search Query**: Optional search query to filter URLs (e.g., "blog")
  - **Top N URLs**: Limit the number of URLs returned
  - **Include URL Patterns**: Glob patterns to include specific paths (e.g., "/blog/**")
  - **Exclude URL Patterns**: Glob patterns to exclude specific paths (e.g., "/admin/**")

  **Output Fields:**
  - `map_id`: Map ID
  - `object`: Object type
  - `url`: Website URL
  - `total_urls`: Total URLs found
  - `urls`: Array of discovered URLs
  - `search_query`: Search query used
  - `top_n`: Top N limit

  ## Credentials

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

  1. Sign up for an account on [olostep.com](https://www.olostep.com) to get an API key.
  2. Get your API key from the [Olostep Dashboard](https://olostep.com/dashboard).
  3. Add a new credential in n8n for the Olostep Scrape API.
  4. Enter your API key in the 'API Key' field.

  ## Workflow Template

  A sample workflow template is included in `workflow-template.json`. To use it:

  1. Open n8n
  2. Click on "Workflows" in the sidebar
  3. Click the three dots menu and select "Import from File"
  4. Select the `workflow-template.json` file
  5. Configure the Olostep credentials
  6. Customize the workflow as needed

  The template includes a basic workflow that scrapes a website using the Olostep Scrape Website operation.

  ## Testing Locally

  To test your node locally before publishing:

  ### Prerequisites

  - Node.js version 20.15 or higher
  - npm installed

  ### Steps

  1. **Build the node:**
     ```bash
     npm run build
     ```

  2. **Link the node locally:**
     ```bash
     npm link
     ```

  3. **Install n8n globally (if not already installed):**
     ```bash
     npm install n8n -g
     ```

  4. **Link the node to n8n:**
     ```bash
     # Find your n8n custom nodes directory (usually ~/.n8n/custom/)
     # Or if using n8n locally, navigate to the n8n installation directory
     cd ~/.n8n/custom
     npm link n8n-nodes-olostep
     ```

  5. **Start n8n:**
     ```bash
     n8n start
     ```

  6. **Test the node:**
     - Open n8n in your browser (usually http://localhost:5678)
     - Create a new workflow
     - Add the "Olostep Scrape" node
     - Configure it with your API credentials
     - Test each operation to ensure they work correctly

  ### Running Linter

  Before publishing, make sure your code passes linting:

  ```bash
  npm run lint
  ```

  If there are any issues, fix them:

  ```bash
  npm run lintfix
  ```

  ## Publishing to npm

  Once your node is tested and ready:

  ### Prerequisites

  - npm account (create one at [npmjs.com](https://www.npmjs.com/signup) if needed)
  - Node.js version 20.15 or higher

  ### Steps

  1. **Ensure package.json is correct:**
     - Verify version number
     - Check that all required fields are filled
     - Ensure the package name is `n8n-nodes-olostep`

  2. **Build the package:**
     ```bash
     npm run build
     ```

  3. **Run prepublish checks:**
     ```bash
     npm run prepublishOnly
     ```
     This will build and lint your code.

  4. **Login to npm:**
     ```bash
     npm login
     ```
     Enter your npm username, password, and email when prompted.

  5. **Publish to npm:**
     ```bash
     npm publish
     ```

  6. **Verify publication:**
     - Visit https://www.npmjs.com/package/n8n-nodes-olostep
     - Check that your latest version is published

  ### Version Management

  When making updates:

  1. Update the version in `package.json` following [semantic versioning](https://semver.org/):
     - **Patch** (1.0.0 → 1.0.1): Bug fixes
     - **Minor** (1.0.0 → 1.1.0): New features, backward compatible
     - **Major** (1.0.0 → 2.0.0): Breaking changes

  2. Update the CHANGELOG.md (if you have one)

  3. Build and publish:
     ```bash
     npm run build
     npm publish
     ```

  ## Compatibility

  This node is tested against n8n version 1.x and requires Node.js version 20.15 or higher.

  ## Specialized Parsers

  Olostep provides pre-built parsers for popular websites and tasks. Use them with the `Parser` parameter:

  - **@olostep/amazon-product** - Extract product details, prices, reviews, images, variants
  - **@olostep/google-search** - Extract search results, titles, snippets, URLs
  - **@olostep/google-maps** - Extract business info, reviews, ratings, location
  - **@olostep/extract-emails** - Extract emails from pages and contact sections
  - **@olostep/extract-socials** - Extract social profile links (X/Twitter, GitHub, etc.)
  - **@olostep/extract-calendars** - Extract calendar links (Google Calendar, ICS)

  ## Resources

  * [Olostep API Documentation](https://docs.olostep.com)
  * [Olostep Dashboard](https://olostep.com/dashboard) - Get your API key and manage usage
  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [n8n Node Development Guide](https://docs.n8n.io/integrations/creating-nodes/)

  ## Support

  Need help with the n8n integration?

  * **Documentation:** [docs.olostep.com](https://docs.olostep.com)
  * **Support Email:** info@olostep.com
  * **Website:** [olostep.com](https://www.olostep.com)

ai_documentation_summary:
  {"purpose":"Provide web search, scraping, and crawling operations through Olostep's API to extract and structure content from single pages, batches, or entire sites for use in n8n workflows.","capabilities":["Scrape a single URL with optional JavaScript rendering and return HTML, Markdown, JSON, or plain text","Search the web and return structured (parser-based) JSON search results","AI-powered Answers: search the web and produce JSON-shaped answers with sources and citations (supports JSON schema or description)","Batch scrape up to 10,000 URLs in one job and retrieve batch results","Create crawls to autonomously discover and scrape subpages (site crawling)","Create a site map to extract all URLs from a website","Specify country code for location-specific scraping","Set wait-before-scraping delay (for dynamic content)","Use parser IDs for specialized extraction (e.g., @olostep/amazon-product)","Receive metadata outputs such as scrape/crawl IDs, status, timestamps, screenshots (hosted URL), and page metadata"],"authentication":"API key required (Olostep credentials configured in n8n)","commonUseCases":["Monitor web pages for changes (page monitoring/alerts)","Extract product data from e-commerce sites and bulk product catalogs","Large-scale content extraction and aggregation from lists of URLs","Automated research, competitive analysis, and lead discovery","Enrich records or spreadsheets with web-sourced facts and cited sources"],"limitations":["Batch Scrape limit: up to 10,000 URLs per batch","Wait Before Scraping delay limited to 0–10,000 milliseconds","Create Crawl default maximum pages: 10 (default can be adjusted via parameter)"],"relatedNodes":[]}


node_type: n8n-nodes-authentica.authentica
package_name: n8n-nodes-authentica
display_name: Authentica
description: OTP and account balance via Authentica
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: authenticasa
author_github_url: https://github.com/AuthenticaSA/n8n-node-authentica.git
npm_package_name: n8n-nodes-authentica
npm_version: 0.1.3
community_fetched_at: 2026-02-19T14:41:52.489Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "otp",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "OTP",
          "value": "otp"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an OTP",
          "description": "Send an OTP"
        },
        {
          "name": "Verify",
          "value": "verify",
          "action": "Verify an OTP",
          "description": "Verify an OTP"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "otp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getBalance",
      "options": [
        {
          "name": "Get Balance",
          "value": "getBalance",
          "action": "Get balance"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send",
      "value": "send",
      "action": "Send an OTP",
      "description": "Send an OTP"
    },
    {
      "name": "Verify",
      "value": "verify",
      "action": "Verify an OTP",
      "description": "Verify an OTP"
    },
    {
      "name": "Get Balance",
      "value": "getBalance",
      "action": "Get balance"
    }
  ]

npm_readme:
  <p align="center">
    <img src="nodes/Authentica/authentica.svg" alt="Authentica" width="120" />
  </p>

  <h1 align="center">Authentica for n8n</h1>

  <p align="center">
    Saudi identity & communications APIs for OTP and balance — packaged as an n8n Community Node.
  </p>

  ---

  ## ✨ What’s included in v0.1.0

  This first release focuses on the essentials:

  * **Account → Get Balance**
  * **OTP → Send** (SMS / WhatsApp / Email)
  * **OTP → Verify**


  ---

  ## 🧰 Requirements

  * n8n **v1.x** (self‑hosted or desktop)
  * Node.js **>= 20** (for local development)
  * An **Authentica API key** (header: `X-Authorization`)

  ---

  ## 🚀 Install

  ### Install from the n8n editor (Community Nodes)

  1. Open the n8n editor → **Settings → Community Nodes → Install**.
  2. Search for **Authentica** (package **`n8n-nodes-authentica`**).
  3. Click **Install** and confirm the warning screen.
  4. n8n downloads the package from npm and reloads. You’ll now see **Authentica** in the Nodes panel.

  ### Update / Uninstall

  * **Update:** Settings → Community Nodes → find *Authentica* → **Update**.
  * **Uninstall:** Settings → Community Nodes → find *Authentica* → **Uninstall**.

  ### Offline / Self‑hosted without Community Nodes

  If Community Nodes is disabled in your environment, install via npm on the host that runs n8n and point the extensions path:

  ```bash
  npm i n8n-nodes-authentica
  export N8N_CUSTOM_EXTENSIONS="/absolute/path/to/node_modules/n8n-nodes-authentica"
  n8n start
  ```

  ---

  ## 🔐 Credentials — *Authentica API*

  Create a new credential in **Credentials → New → Authentica API**.

  **Fields**

  * **API Key** *(required)*: your Authentica key (sent as `X-Authorization`) 
  * **Base URL** *(optional)*: defaults to `https://api.authentica.sa`

  **Test**

  * Click **Test** to call `/api/v2/balance` — you should see **Success**.

  ---

  ## 🧩 Node usage

  ### 1) Account → Get Balance

  * **Resource:** `Account`
  * **Operation:** `Get Balance`
  * **Output:** `{ balance: number }`

  ### 2) OTP → Send

  * **Resource:** `OTP`
  * **Operation:** `Send`
  * **Channel:** `SMS` | `WhatsApp` | `Email`
  * **Phone** *(required for SMS/WhatsApp)*: **E.164** format, e.g. `+9665XXXXXXX`
  * **Email** *(required for Email)*: valid email
  * **Optional:** message/template fields as supported by your Authentica app

  **Output (example)**

  ```json
  {
  	"success": true,
  	"data": null,
  	"message": "OTP send successfully"
  }
  ```

  ### 3) OTP → Verify

  * **Resource:** `OTP`
  * **Operation:** `Verify`
  * **Verify With:** `Phone` or `Email`
  * **Code:** the OTP the user received

  **Output (example)**

  ```json
  {
  	"status": true,
  	"message": "OTP verified successfully"
  }
  ```

  > **Validation built‑in:**
  >
  > * Phone must be E.164 (`+<country><number>`). Example KSA mobile: `+9665…`
  > * Email must be a well‑formed address.

  ---

  ## 🐞 Troubleshooting

  * **401 Unauthorized** → API key missing/invalid. Recheck the *Authentica API* credential, header `X-Authorization`.
  * **422 Unprocessable Entity** → A required field is missing or invalid (e.g., non‑E.164 phone). Fix inputs and retry.
  * **Rate limiting** → If you expect bursts, add a **Wait** or **Rate Limit** node before the Authentica node.
  * **Large execution data** → Run with the top‑bar **Execute workflow** button, or enable on‑disk binaries.

  ---

  ## 📦 Build locally (contributors)

  ```bash
  npm ci
  npm run lint
  npm run build
  # local load
  export N8N_CUSTOM_EXTENSIONS="$PWD"
  n8n start
  ```


  ---

  ## 🔒 Security & privacy

  * Keep API keys in **Credentials** (never hardcode in workflows).
  * Use **E.164** phones and never log sensitive PII in plaintext nodes.

  ---


  ## 🙌 Thanks

  Built by the **Authentica** team to help developers verify users and reduce fraud in Saudi Arabia.

  * Website: [https://authentica.sa](https://authentica.sa)
  * Issues / Feedback: [Support Email](mailto:support@authentica.sa)

  ---

  ## 📄 License (MIT)

  ```
  MIT License

  Copyright (c) 2025 Authentica

  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.

  ```

  ---

  ### File layout (what gets published)

  ```
  .
  ├─ dist/                               # compiled node + credentials + svg
  ├─ README.md                           # this file
  ├─ LICENSE
  ├─ CHANGELOG.md
  └─ package.json
  ```

ai_documentation_summary:
  {"purpose":"Provides Authentica integration for n8n to send and verify OTPs (SMS/WhatsApp/Email) and to retrieve the Authentica account balance, enabling user verification and usage monitoring.","capabilities":["Account → Get Balance (returns { balance: number })","OTP → Send (channels: SMS, WhatsApp, Email)","OTP → Verify (verify by Phone or Email using code)","Built-in input validation: E.164 phone format and well-formed email addresses","Supports supplying message/template fields as supported by your Authentica app"],"authentication":"API key required (Authentica API key sent in X-Authorization header). Optional Base URL override; credentials managed via n8n Credentials → Authentica API.","commonUseCases":["Send OTP to users for phone or email verification (SMS, WhatsApp, Email)","Verify OTP codes submitted by users for login, signup, or 2FA","Check Authentica account balance to monitor SMS/OTP credit usage","Build fraud-reduction and user verification flows focused on Saudi Arabia (E.164 phone handling)"],"limitations":["Initial v0.1.0 release: only three operations (Get Balance, OTP Send, OTP Verify)","Channels limited to SMS, WhatsApp, and Email — no other messaging channels documented","No documented support for delivery receipts, message status polling, or OTP logs","Template/message support is limited to fields 'as supported by your Authentica app' (no advanced template management in node)","Rate limiting is not enforced by the node — add Wait or Rate Limit nodes externally if needed"],"relatedNodes":["Credentials (create Authentica API credential)","HTTP Request (for custom/advanced API calls)","Wait (to space out requests and avoid bursts)","Rate Limit (to control throughput to the Authentica API)","Execute Workflow (for running large executions or manual runs)"]}


node_type: n8n-nodes-peliqan.peliqan
package_name: n8n-nodes-peliqan
display_name: Peliqan
description: Get data from Peliqan
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: peliqan-dev
author_github_url: https://github.com/Peliqan-io/
npm_package_name: n8n-nodes-peliqan
npm_version: 0.0.6
community_fetched_at: 2026-02-19T14:41:52.490Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "table",
      "options": [
        {
          "name": "Endpoint",
          "value": "endpoint"
        },
        {
          "name": "Pipeline",
          "value": "pipeline"
        },
        {
          "name": "Query",
          "value": "query"
        },
        {
          "name": "Script",
          "value": "script"
        },
        {
          "name": "Table",
          "value": "table"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "exec",
      "options": [
        {
          "name": "Execute",
          "value": "exec",
          "action": "Execute endpoint",
          "description": "Execute selected endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "endpoint"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run a pipeline",
          "description": "Start pipeline sync on server"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pipeline"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create SQL Query",
          "value": "create",
          "action": "Create sql view",
          "description": "Create sql view in Peliqan"
        },
        {
          "name": "Execute SQL Query",
          "value": "exec",
          "action": "Execute sql query",
          "description": "Create sql view in Peliqan"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "query"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run script",
          "description": "Run a script"
        },
        {
          "name": "Logs",
          "value": "logs",
          "action": "Return logs of script",
          "description": "Return logs of script"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "script"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get records",
          "description": "Get data from a Peliqan table"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List tables",
          "description": "List all available tables"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "table"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Execute",
      "value": "exec",
      "action": "Execute endpoint",
      "description": "Execute selected endpoint"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run a pipeline",
      "description": "Start pipeline sync on server"
    },
    {
      "name": "Create SQL Query",
      "value": "create",
      "action": "Create sql view",
      "description": "Create sql view in Peliqan"
    },
    {
      "name": "Execute SQL Query",
      "value": "exec",
      "action": "Execute sql query",
      "description": "Create sql view in Peliqan"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run script",
      "description": "Run a script"
    },
    {
      "name": "Logs",
      "value": "logs",
      "action": "Return logs of script",
      "description": "Return logs of script"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get records",
      "description": "Get data from a Peliqan table"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List tables",
      "description": "List all available tables"
    }
  ]

npm_readme:
  # n8n-nodes-peliqan

  This is an **n8n community node** that lets you use [Peliqan](https://peliqan.io) in your [n8n](https://n8n.io) workflows.  

  Peliqan.io is an all-in-one data platform with **ELT**, a **built-in data warehouse**, **data transformations**, and a **data cockpit**.  

  ## Table of contents

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


  ## Installation

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


  ## Operations

  The node currently supports:

  - **List tables** – Retrieve available tables  
  - **Get data from table** – Query records from a Peliqan table  
  - **Run pipeline** – Trigger an existing pipeline  
  - **Execute endpoint** – Call an API endpoint defined in Peliqan  
  - **Create SQL query** – Create a new SQL query in Peliqan  
  - **Execute SQL query** – Run a query against Peliqan’s data warehouse  
  - **Run script** – Execute a script stored in Peliqan  
  - **Get script logs** – Retrieve execution logs of a script  

  ## Credentials

  1. Log in to [Peliqan.io](https://peliqan.io).  
  2. Go to **Settings → API Token**.  
  3. Copy your API Token.  
  4. In n8n, go to **Credentials → New → Peliqan API** and paste your Token.  

  🔑 More details here: [Configure credentials in n8n](https://help.peliqan.io/build-ai-agents-with-n8n-and-peliqan#2401aa9b38798047ad22e353042f5d74).  


  ## Usage

  - Visit the [Peliqan Documentation](https://help.peliqan.io) for guides and tutorials:
      - To set up **AI Agents in n8n** with RAG and SQL: [step-by-step guide](https://help.peliqan.io/build-ai-agents-with-n8n-and-peliqan).  

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)  
  - [Peliqan.io](https://peliqan.io)  
  - [Peliqan Documentation](https://help.peliqan.io)  


  ## Version history

  - **May 2025** – `v0.0.1` initial implementation  
  - **June 2025** – `v0.0.3` add table list operation  
  - **June 2025** – `v0.0.4` enable tool usage of node  
  - **September 2025** – `v0.0.5` UX fixes and code overhaul
  - **October 2025** – `v0.0.6` replace deprecated functions

ai_documentation_summary:
  {"purpose":"Provides actions to interact with Peliqan from n8n workflows — query tables, run pipelines/scripts, execute endpoints and SQL against Peliqan's data platform.","capabilities":["List tables (retrieve available Peliqan tables)","Get data from table (query records from a Peliqan table)","Run pipeline (trigger an existing pipeline)","Execute endpoint (call an API endpoint defined in Peliqan)","Create SQL query (create a new SQL query in Peliqan)","Execute SQL query (run a query against Peliqan's data warehouse)","Run script (execute a script stored in Peliqan)","Get script logs (retrieve execution logs of a script)"],"authentication":"API Token required (configure Peliqan API credentials in n8n by pasting the API Token)","commonUseCases":["Pull data from Peliqan tables into n8n workflows for processing or transfer","Trigger and monitor ETL/data pipelines managed in Peliqan","Execute and manage SQL queries against Peliqan's built-in data warehouse","Call Peliqan-defined API endpoints as part of automation workflows","Run stored scripts and fetch execution logs for automation and debugging"],"limitations":[],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: sendpulse.com
author_github_url: https://github.com/sendpulse/n8n-nodes-sendpulse.git
npm_package_name: @sendpulse/n8n-nodes-sendpulse
npm_version: 0.0.3
community_fetched_at: 2026-02-19T14:41:52.491Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "flow",
      "options": [
        {
          "name": "Flow",
          "value": "flow"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many automation flows",
          "routing": {
            "request": {
              "qs": {
                "limit": "={{ $parameter.additionalFields.limit }}",
                "offset": "={{ $parameter.additionalFields.offset }}"
              },
              "url": "=/autoresponders/list",
              "method": "GET"
            }
          },
          "description": "Get a list of automation flows"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a automation flow",
          "routing": {
            "request": {
              "url": "=/autoresponders/{{ $parameter.flowId }}",
              "method": "GET"
            }
          },
          "description": "Get a automation flow by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "flow"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many automation flows",
      "routing": {
        "request": {
          "qs": {
            "limit": "={{ $parameter.additionalFields.limit }}",
            "offset": "={{ $parameter.additionalFields.offset }}"
          },
          "url": "=/autoresponders/list",
          "method": "GET"
        }
      },
      "description": "Get a list of automation flows"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a automation flow",
      "routing": {
        "request": {
          "url": "=/autoresponders/{{ $parameter.flowId }}",
          "method": "GET"
        }
      },
      "description": "Get a automation flow by ID"
    }
  ]

npm_readme:
  # 🚀 n8n-nodes-sendpulse

  ![SendPulse Logo](icons/sendpulse.svg)

  Official [SendPulse](https://sendpulse.com) integration for [n8n](https://n8n.io).

  SendPulse is an all-in-one multichannel marketing and communication platform.
  It combines email campaigns, SMS, web push, and chatbots with CRM, automation flows, and transactional messaging.
  Using the n8n integration, teams can sync customer data, trigger personalized journeys from any app, and centralize product and growth experiments in one flexible workflow.

  This repo contains SendPulse Automation360, SendPulse Chatbots, SendPulse CRM, SendPulse Email, SendPulse FileManager,
  SendPulse Pop-ups, SendPulse SMS, SendPulse SMTP, SendPulse Verifier and SendPulse Web Push community nodes for n8n.

  These nodes currently only supports the most popular SendPulse APIs.
  If there's an API missing that you would like to use, please let us know.
  In the meantime, you can also use the generic [HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) node to construct your requests.

  ## 📚 Table of Contents

  * [Installation](#installation)
  * [Credentials](#credentials)
  * [Usage](#usage)
  * [Operations](#operations)
  * [Workflow Examples](#workflow-examples)
  * [Compatibility](#compatibility)
  * [Resources](#resources)
  * [License](#license)

  ## 📦 Installation

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

  ## 🔐 Credentials

  ### Client ID & Client Secret

  1. Log in to your **[SendPulse account](https://sendpulse.com)**
  2. Navigate to **Account settings > API**
  3. Copy your **Client ID**
  4. Copy your **Client Secret**

  ### Access Token

  The authorization process requires an access token for signing each further API request.

  The necessary parameters to obtain an access token can be found in the private account settings page found on the following URL in the [API tab](https://login.sendpulse.com/settings/#api).

  To get an access token you have to send a POST request to:

  ```
  https://api.sendpulse.com/oauth/access_token
  ```

  Request parameters:

  | Parameter     | Type   | Description                             |
  |---------------|--------|-----------------------------------------|
  | grant_type    | string | Has to be equal to `client_credentials` |
  | client_id     | string | Your ID                                 |
  | client_secret | string | Your Secret                             |

  ## 🧩 Usage

  Add any SendPulse node to a workflow:

  ![Add SendPulse to Workflow](images/node.png)

  Configure a basic query and hit "Execute step" to execute the query:

  ![Test a Google Search through SerpApi](images/mailing-list-operation.png)

  ## 🛠️ Operations

  All operations are documented in the [SendPulse REST API Documentation](https://sendpulse.com/integrations/api).

  ### 🔄 SendPulse Automation360 Node

  | Resource | Operation                                                        |
  |----------|------------------------------------------------------------------|
  | Flow     | [Get Many](https://sendpulse.com/integrations/api/a360#get-flows) |
  | Flow     | [Get](https://sendpulse.com/integrations/api/a360#get-info-flow)  |

  ### 🤖 SendPulse Chatbots Node

  | Resource | Operation                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  |----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | Bot      | [Get Many](https://sendpulse.com/integrations/api/chatbot#/bots/get_bots)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | Dialog   | [Get Many](https://sendpulse.com/integrations/api/chatbot#/dialogs/get_dialogs)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | Contact  | Get ([Telegram](https://sendpulse.com/integrations/api/chatbot/telegram#/contacts/get_contacts_get), [Facebook Messenger](https://sendpulse.com/integrations/api/chatbot/facebook#/contacts/get_contacts_get), [WhatsApp](https://sendpulse.com/integrations/api/chatbot/whatsapp#/contacts/get_contacts_get), [LiveChat](https://sendpulse.com/integrations/api/chatbot/live-chat#/contacts/get_contacts_get), [Instagram](https://sendpulse.com/integrations/api/chatbot/instagram#/contacts/get_contacts_get), [Viber](https://sendpulse.com/integrations/api/chatbot/viber#/contacts/get_contacts_get), [TikTok](https://sendpulse.com/integrations/api/chatbot/tiktok#/contacts/get_contacts_get))                        |
  | Contact  | Send Message ([Telegram](https://sendpulse.com/integrations/api/chatbot/telegram#/contacts/post_contacts_send), [Facebook Messenger](https://sendpulse.com/integrations/api/chatbot/facebook#/contacts/post_contacts_send), [WhatsApp](https://sendpulse.com/integrations/api/chatbot/whatsapp#/contacts/post_contacts_send), [LiveChat](https://sendpulse.com/integrations/api/chatbot/live-chat#/contacts/post_contacts_send), [Instagram](https://sendpulse.com/integrations/api/chatbot/instagram#/contacts/post_contacts_send), [Viber](https://sendpulse.com/integrations/api/chatbot/viber#/contacts/post_contacts_send), [TikTok](https://sendpulse.com/integrations/api/chatbot/tiktok#/contacts/post_contacts_send)) |
  | Flow     | Run ([Telegram](https://sendpulse.com/integrations/api/chatbot/telegram#/flows/post_flows_run), [Facebook Messenger](https://sendpulse.com/integrations/api/chatbot/facebook#/flows/post_flows_run), [WhatsApp](https://sendpulse.com/integrations/api/chatbot/whatsapp#/flows/post_flows_run), [LiveChat](https://sendpulse.com/integrations/api/chatbot/live-chat#/flows/post_flows_run), [Instagram](https://sendpulse.com/integrations/api/chatbot/instagram#/flows/post_flows_run), [Viber](https://sendpulse.com/integrations/api/chatbot/viber#/flows/post_flows_run), [TikTok](https://sendpulse.com/integrations/api/chatbot/tiktok#/flows/post_flows_run))                                                           |

  ### 📇 SendPulse CRM Node

  | Resource | Operation                                                                                                           |
  |----------|---------------------------------------------------------------------------------------------------------------------|
  | Contact  | [Get Many](https://sendpulse.com/integrations/api/crm#/Contacts/post_contacts_get_list)                              |
  | Contact  | [Get](https://sendpulse.com/integrations/api/crm#/Contacts/get_contacts__contactId_)                                 |
  | Contact  | [Get by External ID](https://sendpulse.com/integrations/api/crm#/Contacts/get_contacts_external__externalContactId_) |
  | Contact  | [Create](https://sendpulse.com/integrations/api/crm#/Contacts/post_contacts_create)                                  |
  | Deal     | [Get Many](https://sendpulse.com/integrations/api/crm#/Deals/post_deals_get_list)                                    |
  | Deal     | [Get](https://sendpulse.com/integrations/api/crm#/Deals/get_deals__dealId_)                                          |
  | Deal     | [Create](https://sendpulse.com/integrations/api/crm#/Deals/post_deals)                                               |
  | Pipeline | [Get Many](https://sendpulse.com/integrations/api/crm#/Pipelines/get_pipelines)                                      |
  | Pipeline | [Get](https://sendpulse.com/integrations/api/crm#/Pipelines/get_pipelines__pipelineId_)                              |
  | Pipeline | [Create](https://sendpulse.com/integrations/api/crm#/Pipelines/post_pipelines)                                       |

  ### ✉️ SendPulse Email Node

  | Resource     | Operation                                                                                                                                                                   |
  |--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | Mailing List | [Get Many](https://sendpulse.com/integrations/api/bulk-email#lists-list)                                                                                                     |
  | Mailing List | [Get](https://sendpulse.com/integrations/api/bulk-email#list-info)                                                                                                           |
  | Mailing List | [Create](https://sendpulse.com/integrations/api/bulk-email#create-list)                                                                                                      |
  | Email        | Add to List ([single-opt-in](https://sendpulse.com/integrations/api/bulk-email#add-email), [double-opt-in)](https://sendpulse.com/integrations/api/bulk-email#double-opt-in)) |
  | Campaign | [Get Many](https://sendpulse.com/integrations/api/bulk-email#campaigns-list)                                                                                                     |
  | Campaign | [Get](https://sendpulse.com/integrations/api/bulk-email#campaign-info)                                                                                                           |
  | Campaign | [Create](https://sendpulse.com/integrations/api/bulk-email#create-campaign)                                                                                                      |

  ### 📁 SendPulse FileManager Node

  | Resource | Operation                                                                    |
  |----------|------------------------------------------------------------------------------|
  | File     | [Upload](https://sendpulse.com/integrations/api/file-manager#/File/post_file) |


  ### 🪄 SendPulse Pop-ups Node

  | Resource | Operation                                                                                              |
  |----------|--------------------------------------------------------------------------------------------------------|
  | Project  | [Get Many](https://sendpulse.com/integrations/api/pop-up#/Project/get_public_api_widgets_list)          |
  | Pop-Up   | [Get Many](https://sendpulse.com/integrations/api/pop-up#/Popup/get_public_api_popups_list__projectId_) |

  ### 📱 SendPulse SMS Node

  | Resource     | Operation                                                                                 |
  |--------------|-------------------------------------------------------------------------------------------|
  | Phone Number | [Add to Mailing List](https://sendpulse.com/integrations/api/bulk-sms#add-telephone)       |
  | Campaign     | [Create](https://sendpulse.com/integrations/api/bulk-sms#create-campaign-for-mailing-list) |

  ### 📨 SendPulse SMTP Node

  | Resource | Operation                                                                   |
  | -------- |-----------------------------------------------------------------------------|
  | Email    | [Get Many](https://sendpulse.com/integrations/api/smtp#get-emails-list-smtp) |
  | Email    | [Get](https://sendpulse.com/integrations/api/smtp#email-info-smtp)           |
  | Email    | [Send](https://sendpulse.com/integrations/api/smtp#send-email-smtp)          |

  ### ✔️ SendPulse Verifier Node

  | Resource     | Operation                                                                                 |
  | ------------ |-------------------------------------------------------------------------------------------|
  | Mailing List | [Verify](https://sendpulse.com/integrations/api/verifier#verify-mailing-list)              |
  | Mailing List | [Get Verified Lists](https://sendpulse.com/integrations/api/verifier#get-verified-lists)   |
  | Mailing List | [Get Verification Results](https://sendpulse.com/integrations/api/verifier#get-results-ml) |

  ### 🔔 SendPulse Web Push Node

  | Resource | Operation                                                                    |
  | -------- |------------------------------------------------------------------------------|
  | Website  | [Get Many](https://sendpulse.com/integrations/api/web-push#get-websites-list) |
  | Website  | [Get](https://sendpulse.com/integrations/api/web-push#site_info)              |
  | Campaign | [Create](https://sendpulse.com/integrations/api/web-push#create-push)         |

  ## 🧪 Workflow Examples

  #### Workflow 1: Create an email campaign

  ![Workflow 1](images/workflow1.png)

  **Steps:**
  1. Get mailing lists
  2. Combine results into one variable
  3. Set sender's name, sender's email, subject, base64 encoded message content and mailing list ID
  4. Send a campaign

  <details>
  <summary>JSON</summary>

  ```json
  {
    "name": "Creating an email campaign",
    "nodes": [
      {
        "parameters": {},
        "type": "n8n-nodes-base.manualTrigger",
        "typeVersion": 1,
        "position": [
          0,
          0
        ],
        "id": "162576dc-89ec-4f80-902c-1a048995caa3",
        "name": "When clicking ‘Execute workflow’"
      },
      {
        "parameters": {
          "authentication": "accessToken",
          "resource": "campaign",
          "operation": "create",
          "senderName": "={{ $json.senderName }}",
          "senderEmail": "={{ $json.senderEmail }}",
          "subject": "={{ $json.subject }}",
          "htmlBody": "={{ $json.htmlBodyBase64 }}",
          "listIds": "={{ $json.mailingListId }}",
          "name": "=Black Friday",
          "additionalFields": {},
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseEmail",
        "typeVersion": 1,
        "position": [
          832,
          0
        ],
        "id": "f0486554-11b2-4ef4-ac58-1e4c287f189b",
        "name": "Create email campaign"
      },
      {
        "parameters": {
          "assignments": {
            "assignments": [
              {
                "id": "3f41524f-412d-4a70-8871-a23c615786d6",
                "name": "senderName",
                "value": "<sender_name>",
                "type": "string"
              },
              {
                "id": "c86c494a-73cd-4ea2-b6eb-4d9190fea113",
                "name": "senderEmail",
                "value": "<sender_email>",
                "type": "string"
              },
              {
                "id": "f0b4bbee-1556-43b5-9da4-f3c1833ffb84",
                "name": "subject",
                "value": "<subject>",
                "type": "string"
              },
              {
                "id": "e0f6b188-867e-4e95-b638-b007151cf3da",
                "name": "htmlBodyBase64",
                "value": "<html_body_base_64>",
                "type": "string"
              },
              {
                "id": "82042391-f675-46be-af47-0bde90057de5",
                "name": "=mailingListId",
                "value": "=<mailing_list_id>",
                "type": "number"
              }
            ]
          },
          "options": {}
        },
        "type": "n8n-nodes-base.set",
        "typeVersion": 3.4,
        "position": [
          624,
          0
        ],
        "id": "1dffd9a3-fb32-40e1-aebd-f7346aa985f2",
        "name": "Workflow Configuration"
      },
      {
        "parameters": {
          "additionalFields": {},
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseEmail",
        "typeVersion": 1,
        "position": [
          208,
          0
        ],
        "id": "0e1b317f-acaf-4852-bf7d-535aebbcaab3",
        "name": "Get many mailing lists"
      },
      {
        "parameters": {
          "aggregate": "aggregateAllItemData",
          "destinationFieldName": "mailingLists",
          "options": {}
        },
        "id": "7bd43960-7cae-420d-9146-130310dc0efb",
        "name": "Combine Items",
        "type": "n8n-nodes-base.aggregate",
        "typeVersion": 1,
        "position": [
          416,
          0
        ]
      }
    ],
    "pinData": {},
    "connections": {
      "When clicking ‘Execute workflow’": {
        "main": [
          [
            {
              "node": "Get many mailing lists",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Create email campaign": {
        "main": [
          []
        ]
      },
      "Workflow Configuration": {
        "main": [
          [
            {
              "node": "Create email campaign",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Get many mailing lists": {
        "main": [
          [
            {
              "node": "Combine Items",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Combine Items": {
        "main": [
          [
            {
              "node": "Workflow Configuration",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "active": false,
    "settings": {
      "executionOrder": "v1"
    },
    "versionId": "59ed90df-5927-4019-bfd2-5ce67858d0ee",
    "meta": {
      "templateCredsSetupCompleted": true,
      "instanceId": "791011c5d912fa3910b1b3f0a58e52e888701c971bd92f7e7fc8373a23481dcb"
    },
    "id": "JB4pgZqZbQmUT76u",
    "tags": []
  }
  ```
  </details> 

  ---

  #### Workflow 2: Verify a mailing list and get verification results

  ![Workflow 2](images/workflow2.png)

  **Steps:**
  1. Start with mailing list ID input
  2. Verify mailing list
  3. Wait 5 seconds
  4. Get mailing list verification results

  <details>
  <summary>JSON</summary>

  ```json
  {
    "name": "Verify a mailing list and get verification results",
    "nodes": [
      {
        "parameters": {},
        "type": "n8n-nodes-base.manualTrigger",
        "typeVersion": 1,
        "position": [
          -80,
          144
        ],
        "id": "e6f335fe-9185-4e2a-b15b-6aaeab5151d7",
        "name": "When clicking ‘Execute workflow’"
      },
      {
        "parameters": {
          "authentication": "accessToken",
          "operation": "verify",
          "mailingListId": "={{ $json.mailingListId }}",
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseVerifier",
        "typeVersion": 1,
        "position": [
          336,
          144
        ],
        "id": "d646a9b4-d672-4098-b243-8a0a802e0b19",
        "name": "Verify a mailing list"
      },
      {
        "parameters": {},
        "type": "n8n-nodes-base.wait",
        "typeVersion": 1.1,
        "position": [
          960,
          128
        ],
        "id": "f08cd010-c410-4140-aa7d-996e95afac04",
        "name": "Wait",
        "webhookId": "d3afa9c8-b36f-45e3-8ef5-b956a98b79c5"
      },
      {
        "parameters": {
          "conditions": {
            "options": {
              "caseSensitive": true,
              "leftValue": "",
              "typeValidation": "strict",
              "version": 3
            },
            "conditions": [
              {
                "id": "a3932ac8-334e-4d13-88d1-bb7921cb5852",
                "leftValue": "={{ $json.status }}",
                "rightValue": 0,
                "operator": {
                  "type": "number",
                  "operation": "equals"
                }
              }
            ],
            "combinator": "and"
          },
          "options": {}
        },
        "type": "n8n-nodes-base.if",
        "typeVersion": 2.3,
        "position": [
          752,
          144
        ],
        "id": "49a7edbc-ffd7-4126-b3e4-8078a2a0886c",
        "name": "If"
      },
      {
        "parameters": {
          "authentication": "accessToken",
          "operation": "getVerificationResults",
          "mailingListId": "={{ $('Workflow Configuration').item.json.mailingListId }}",
          "additionalFields": {},
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseVerifier",
        "typeVersion": 1,
        "position": [
          544,
          144
        ],
        "id": "1565c302-b889-4b1e-aebb-1541da25d966",
        "name": "Get mailing list verification results",
        "credentials": {
          "sendPulseApi": {
            "id": "SguuezBTI7kLeYfQ",
            "name": "SendPulse account"
          }
        }
      },
      {
        "parameters": {
          "assignments": {
            "assignments": [
              {
                "id": "3f41524f-412d-4a70-8871-a23c615786d6",
                "name": "mailingListId",
                "value": 498261,
                "type": "number"
              }
            ]
          },
          "options": {}
        },
        "type": "n8n-nodes-base.set",
        "typeVersion": 3.4,
        "position": [
          128,
          144
        ],
        "id": "c7aa188a-7c99-44c0-b666-fb5c9c4e4c92",
        "name": "Workflow Configuration"
      }
    ],
    "pinData": {},
    "connections": {
      "When clicking ‘Execute workflow’": {
        "main": [
          [
            {
              "node": "Workflow Configuration",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Wait": {
        "main": [
          [
            {
              "node": "Get mailing list verification results",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Verify a mailing list": {
        "main": [
          [
            {
              "node": "Get mailing list verification results",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Get mailing list verification results": {
        "main": [
          [
            {
              "node": "If",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "If": {
        "main": [
          [
            {
              "node": "Wait",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Workflow Configuration": {
        "main": [
          [
            {
              "node": "Verify a mailing list",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "active": false,
    "settings": {
      "executionOrder": "v1"
    },
    "versionId": "5f24f95a-2d59-4650-a899-c68663a47d85",
    "meta": {
      "templateCredsSetupCompleted": true,
      "instanceId": "791011c5d912fa3910b1b3f0a58e52e888701c971bd92f7e7fc8373a23481dcb"
    },
    "id": "S04LSCXtbAoNxzY3",
    "tags": []
  }
  ```
  </details> 

  ---

  #### Workflow 3: Create a deal

  ![Workflow 3](images/workflow3.png)

  **Steps:**
  1. Get pipelines
  2. Get contacts
  3. Set pipeline ID, step ID, deal name, contact ID, currency and price
  4. Create a deal

  <details>
  <summary>JSON</summary>

  ```json
  {
    "name": "Create a deal",
    "nodes": [
      {
        "parameters": {},
        "type": "n8n-nodes-base.manualTrigger",
        "typeVersion": 1,
        "position": [
          0,
          0
        ],
        "id": "20331738-50ec-47c4-892f-015a0eccc636",
        "name": "When clicking ‘Execute workflow’"
      },
      {
        "parameters": {
          "assignments": {
            "assignments": [
              {
                "id": "444749f2-d83c-4a93-bfed-ba587dc2d16a",
                "name": "pipelineId",
                "value": "={{ $('Get many pipelines').item.json.data[0].id }}",
                "type": "number"
              },
              {
                "id": "c8e19849-6952-4440-bcfe-587b4910d5f1",
                "name": "stepId",
                "value": "={{ $('Get many pipelines').item.json.data[0].steps[0].id }}",
                "type": "number"
              },
              {
                "id": "3f41524f-412d-4a70-8871-a23c615786d6",
                "name": "dealName",
                "value": "Purchase of Electronic Equipment",
                "type": "string"
              },
              {
                "id": "9612e468-854a-4fa6-8e63-9ccddc0a247d",
                "name": "contactId",
                "value": "={{ $json.data.list[0].id }}",
                "type": "number"
              },
              {
                "id": "8d89b9f5-517a-4a97-8f22-ec683387a26e",
                "name": "currency",
                "value": "EUR",
                "type": "string"
              },
              {
                "id": "3cdbfd58-33b3-4ca2-9689-5215ba6aff7f",
                "name": "price",
                "value": 5000,
                "type": "number"
              }
            ]
          },
          "options": {}
        },
        "type": "n8n-nodes-base.set",
        "typeVersion": 3.4,
        "position": [
          624,
          0
        ],
        "id": "21c95abb-3aa6-4dac-ae9f-0a05c3c62cf5",
        "name": "Workflow Configuration"
      },
      {
        "parameters": {
          "authentication": "accessToken",
          "resource": "deal",
          "operation": "create",
          "pipelineId": "={{ $json.pipelineId }}",
          "stepId": "={{ $json.stepId }}",
          "name": "={{ $json.dealName }}",
          "additionalFields": {
            "contactIds": [
              "={{ $json.contactId }}"
            ],
            "currency": "={{ $json.currency }}",
            "price": "={{ $json.price }}"
          },
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseCrm",
        "typeVersion": 1,
        "position": [
          832,
          0
        ],
        "id": "68c9ba9b-515e-4294-b202-cdeada51551f",
        "name": "Create a deal",
        "credentials": {
          "sendPulseApi": {
            "id": "vgJTBLhnSy833qmE",
            "name": "SendPulse account"
          }
        }
      },
      {
        "parameters": {
          "authentication": "accessToken",
          "additionalFields": {},
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseCrm",
        "typeVersion": 1,
        "position": [
          416,
          0
        ],
        "id": "c8f0757b-e21e-43f0-b025-10db61dc6841",
        "name": "Get many contacts",
        "credentials": {
          "sendPulseApi": {
            "id": "vgJTBLhnSy833qmE",
            "name": "SendPulse account"
          }
        }
      },
      {
        "parameters": {
          "authentication": "accessToken",
          "resource": "pipeline",
          "requestOptions": {}
        },
        "type": "CUSTOM.sendPulseCrm",
        "typeVersion": 1,
        "position": [
          208,
          0
        ],
        "id": "6ef77dd7-c0bb-47c1-9653-77f19b6a3950",
        "name": "Get many pipelines"
      }
    ],
    "pinData": {},
    "connections": {
      "When clicking ‘Execute workflow’": {
        "main": [
          [
            {
              "node": "Get many pipelines",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Workflow Configuration": {
        "main": [
          [
            {
              "node": "Create a deal",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Create a deal": {
        "main": [
          []
        ]
      },
      "Get many contacts": {
        "main": [
          [
            {
              "node": "Workflow Configuration",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Get many pipelines": {
        "main": [
          [
            {
              "node": "Get many contacts",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "active": false,
    "settings": {
      "executionOrder": "v1"
    },
    "versionId": "789d96b0-448e-4496-a469-f96951fca290",
    "meta": {
      "templateCredsSetupCompleted": true,
      "instanceId": "791011c5d912fa3910b1b3f0a58e52e888701c971bd92f7e7fc8373a23481dcb"
    },
    "id": "IQryYdrRhRkFQQf7",
    "tags": []
  }
  ```
  </details> 

  ## 🧬 Compatibility

  Tested with n8n version 1.123.4.

  ## 📖 Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [SendPulse Website](https://sendpulse.com)
  * [SendPulse REST API Documentation](https://sendpulse.com/integrations/api)
  * [SendPulse Knowledge Base](https://sendpulse.com/knowledge-base)
  * [SendPulse Community](https://community.sendpulse.com)
  * [SendPulse Blog](https://sendpulse.com/blog)

  ## 📄 License

  [MIT](LICENSE.md)

  Copyright © 2025 SendPulse

ai_documentation_summary:
  {"purpose":"Provides access to SendPulse Automation360 within n8n workflows, allowing retrieval of automation flows and their details from the SendPulse API.","capabilities":["Flow: Get Many (list automation flows)","Flow: Get (retrieve a single flow's details)"],"authentication":"OAuth2 (client_credentials) — requires SendPulse Client ID and Client Secret to obtain an access token via POST to https://api.sendpulse.com/oauth/access_token","commonUseCases":["List available Automation360 flows to let a workflow select or display available automations","Fetch a specific flow's metadata for decisioning or orchestration in a workflow","Combine with other SendPulse nodes or the HTTP Request node to trigger or manipulate flows not directly supported by this node"],"limitations":["Automation360 node currently only supports read operations (Get Many and Get); create/update/trigger operations are not provided","Package implements only the most popular SendPulse APIs — some endpoints may be missing (use the generic HTTP Request node to access unsupported APIs)"],"relatedNodes":["SendPulse Chatbots","SendPulse CRM","SendPulse Email","SendPulse FileManager","SendPulse Pop-ups"]}


node_type: n8n-nodes-softr.softr
package_name: n8n-nodes-softr
display_name: Softr
description: Softr.io Integration Node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: dariusz-softr
author_github_url: https://github.com/softr-io/n8n-softr.git
npm_package_name: n8n-nodes-softr
npm_version: 1.0.7
community_fetched_at: 2026-02-19T14:41:52.520Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "database",
      "options": [
        {
          "name": "Database Record",
          "value": "database",
          "action": "Manage database records",
          "description": "Manage database records"
        },
        {
          "name": "Application User",
          "value": "appUser",
          "action": "Manage application users",
          "description": "Manage application users"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create record",
          "description": "Create database record"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete record",
          "description": "Delete database record"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many records",
          "description": "Get many database records"
        },
        {
          "name": "Get One",
          "value": "getOne",
          "action": "Get one record",
          "description": "Get one database record"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update record",
          "description": "Update database record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "database"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createAppUser",
      "options": [
        {
          "name": "Create Application User",
          "value": "createAppUser",
          "action": "Create application user",
          "description": "Create an application user"
        },
        {
          "name": "Delete Application User",
          "value": "deleteAppUser",
          "action": "Delete application user",
          "description": "Delete an application user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appUser"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create record",
      "description": "Create database record"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete record",
      "description": "Delete database record"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many records",
      "description": "Get many database records"
    },
    {
      "name": "Get One",
      "value": "getOne",
      "action": "Get one record",
      "description": "Get one database record"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update record",
      "description": "Update database record"
    },
    {
      "name": "Create Application User",
      "value": "createAppUser",
      "action": "Create application user",
      "description": "Create an application user"
    },
    {
      "name": "Delete Application User",
      "value": "deleteAppUser",
      "action": "Delete application user",
      "description": "Delete an application user"
    }
  ]

npm_readme:
  # n8n-nodes-softr

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

  Softr is a no-code platform that allows you to build web applications and websites. It provides a user-friendly interface for creating and managing applications without needing to write code.

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

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

  ## Installation

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

  ## Operations

  ### Softr Databases

  Triggers

  * `On New Record`: Triggered when a new record is created in a Softr database.
  * `On Updated Record`: Triggered when an existing record in a Softr database is updated.

  Actions:

  * `Create Record`: Creates a new record in a specified Softr database.
  * `Update Record`: Updates an existing record in a specified Softr database.
  * `Delete Record`: Deletes a record from a specified Softr database.
  * `Get Record`: Retrieves a specific record from a specified Softr database.
  * `Get All Records`: Retrieves all records from a specified Softr database.
  * `Search Records`: Searches for records in a specified Softr database based on a search query.

  ### Softr Application Users

  * `Create Application User`: Creates a new user in a specified Softr application.
  * `Delete Application User`: Deletes a user from a specified Softr application.

  ## Credentials

  To use Softr, you must authenticate with your API Key. You can find your API Key in your [Softr account settings](https://studio.softr.io/user/apisettings).

  More details on how to find your API Key can be found in the [Softr documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/api-setup-and-endpoints/j1PrTZxt7pv3iZCnZ5Fp19).

  ## Compatibility

  Implemented and tested against n8n version 1.103.2.

  ## Usage

  Softr node uses Softr Public API under the hood. You can find more information about the API in the [Softr API documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/softr-database-api/5aZs45abxPkQ4dURKFwRGF).

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Softr API documentation](https://docs.softr.io/softr-api/tTFQ5vSAUozj5MsKixMH8C/softr-database-api/5aZs45abxPkQ4dURKFwRGF)

ai_documentation_summary:
  {"purpose":"Integrate Softr.io with n8n so workflows can trigger on Softr database changes and perform CRUD operations and user management in Softr applications.","capabilities":["Trigger: On New Record (Softr database)","Trigger: On Updated Record (Softr database)","Create Record in a Softr database","Update Record in a Softr database","Delete Record from a Softr database","Get Record from a Softr database","Get All Records from a Softr database","Search Records in a Softr database (by query)","Create Application User in a Softr application","Delete Application User from a Softr application"],"authentication":"API key required (Softr API Key from account settings)","commonUseCases":["Trigger workflows when new or updated records appear in a Softr database","Create, update, delete, or retrieve records in Softr from other systems","Search Softr databases programmatically to enrich or route data","Automatically create or remove application users in Softr from CRM or onboarding flows","Sync Softr data with external databases, spreadsheets, or other apps"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-opnform.opnformTrigger
package_name: n8n-nodes-opnform
display_name: OpnForm Trigger
description: Triggers when a new submission is created in OpnForm
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: jhumanj
author_github_url: https://github.com/OpnForm/
npm_package_name: n8n-nodes-opnform
npm_version: 0.1.7
community_fetched_at: 2026-02-19T14:41:52.522Z
ai_summary_generated_at: 2026-02-19 16:43:57
npm_readme:
  # OpnForm n8n Trigger (Community Node)

  A custom n8n node that triggers workflows when new form submissions are received in OpnForm.

  ## What is OpnForm?

  OpnForm is an open-source form builder that allows you to create and manage forms, collect submissions, and integrate with various tools. This n8n integration enables you to automate workflows based on form submissions.

  **API Documentation**: [https://docs.opnform.com/api-reference/introduction](https://docs.opnform.com/api-reference/introduction)

  ## What this integration does

  This n8n trigger node automatically receives OpnForm submissions as webhook events in your n8n workflows. When a form is submitted in OpnForm, the integration sends the submission data to your n8n workflow, allowing you to:

  - Process form submissions automatically
  - Integrate with other services and tools
  - Transform and route submission data
  - Trigger complex multi-step workflows

  ## API Endpoints Used

  This integration uses the following OpnForm API endpoints:

  - `GET /open/workspaces` - Lists available workspaces for dropdown selection
  - `GET /open/workspaces/{workspaceId}/forms` - Lists forms in a workspace for dropdown selection
  - `GET /open/forms/{formId}/integrations` - Checks if an integration already exists
  - `POST /open/forms/{formId}/integrations` - Creates a webhook integration subscription
  - `DELETE /open/forms/{formId}/integrations/{integrationId}` - Removes the webhook integration

  ## Install (local development)

  ```bash
  # From this directory
  npm install
  npm run build
  ```

  Then in your n8n instance, install this package or load it as a local custom node per n8n docs.

  ## Release your node

  To publish your node to npm, run the `release` command in your project directory:

  ```bash
  n8n-node release
  ```

  Or using npm:

  ```bash
  npm run release
  ```

  Before running the release command, you must be logged into npm:

  ```bash
  npm login
  ```

  When you run the `release` command, `n8n-node` will perform the following actions:

  - Build the node
  - Run lint checks against your files
  - Update the changelog
  - Create git tags
  - Create a GitHub release
  - Publish the package to npm

  For more details, see the [n8n-node release documentation](https://docs.n8n.io/integrations/creating-nodes/build/n8n-node/#release-your-node).

  ## Authentication

  ### Creating a Personal Access Token

  To use this integration, you need a Personal Access Token from OpnForm with the `manage-integrations` ability.

  1. Sign in to your OpnForm account at [https://opnform.com](https://opnform.com)
  2. Navigate to **Settings → Access Tokens** (`/home?user-settings=access-tokens`)
  3. Click **Create new token**
  4. Enter a descriptive name (e.g., "n8n Integration")
  5. Select the `manage-integrations` ability (and any other abilities you need)
  6. Click **Create** and **copy the token immediately** - you won't be able to see it again

  For detailed instructions, see the [OpnForm API Keys documentation](https://docs.opnform.com/api-reference/api-keys).

  ### Required Abilities

  | Ability               | Required For                                              |
  | --------------------- | --------------------------------------------------------- |
  | `manage-integrations` | **Required** - Creating and managing webhook integrations |
  | `workspaces-read`     | **Required** - Listing workspaces for dropdown selection  |
  | `forms-read`          | **Required** - Listing forms for dropdown selection       |

  ### Configuring Credentials in n8n

  1. In your n8n workflow, add the OpnForm Trigger node
  2. Click on **Credentials** and select **Create New**
  3. Enter:
     - **Name**: `OpnForm API` (or any descriptive name)
     - **Base URL**: `https://api.opnform.com` (or your self-hosted OpnForm instance URL)
     - **API Key**: Your Personal Access Token
  4. Click **Save** and select this credential in the OpnForm Trigger node

  ## Usage Instructions

  ### Setting Up the Trigger

  1. **Add the OpnForm Trigger node** to your n8n workflow
  2. **Select your credentials** (or create new ones as described above)
  3. **Choose a Workspace** from the dropdown menu
  4. **Choose a Form** from the dropdown menu (forms will load after selecting a workspace)
  5. **Activate the workflow** - The node will automatically:
     - Create a webhook integration in OpnForm
     - Configure the webhook URL to receive submissions
     - Start listening for new form submissions

  ### Workflow Activation

  When you activate your n8n workflow:

  - The OpnForm Trigger node will create a webhook integration subscription
  - OpnForm will send a POST request to your n8n webhook URL whenever the form receives a submission
  - The submission data will be available in subsequent workflow nodes

  ### Workflow Deactivation

  When you deactivate your n8n workflow:

  - The OpnForm Trigger node will automatically delete the webhook integration
  - No further submissions will be sent to your workflow

  ## Example Workflows

  ### Example 1: Send Form Submission to Slack

  ```
  OpnForm Trigger → Set Node (format message) → Slack Node (send message)
  ```

  **Workflow Steps:**

  1. **OpnForm Trigger** - Receives form submission
  2. **Set Node** - Format the submission data into a Slack-friendly message:
     ```json
     {
     	"text": "New form submission received!",
     	"fields": [
     		{
     			"title": "From",
     			"value": "{{ $json.submitter_email }}",
     			"short": true
     		},
     		{
     			"title": "Submission ID",
     			"value": "{{ $json.id }}",
     			"short": true
     		}
     	]
     }
     ```
  3. **Slack Node** - Send the formatted message to a Slack channel

  ### Example 2: Save Submissions to Google Sheets

  ```
  OpnForm Trigger → Transform Data → Google Sheets Node (append row)
  ```

  **Workflow Steps:**

  1. **OpnForm Trigger** - Receives form submission
  2. **Code Node** - Transform submission data to match your Google Sheets columns:
     ```javascript
     const submission = $input.item.json;
     return {
     	json: {
     		timestamp: submission.created_at,
     		email: submission.data.email || '',
     		name: submission.data.name || '',
     		message: submission.data.message || '',
     	},
     };
     ```
  3. **Google Sheets Node** - Append the transformed data as a new row

  ### Example 3: Conditional Email Notifications

  ```
  OpnForm Trigger → IF Node (check condition) → Email Node (send notification)
  ```

  **Workflow Steps:**

  1. **OpnForm Trigger** - Receives form submission
  2. **IF Node** - Check if submission meets certain criteria (e.g., `{{ $json.data.urgency }} === 'high'`)
  3. **Email Node** - Send an email notification only for high-priority submissions

  ## How it works

  1. **Load Options**: When configuring the node, it fetches Workspaces and Forms via `/open/workspaces` and `/open/workspaces/{workspaceId}/forms` to populate dropdown menus.
  2. **On Enable**: The node subscribes by creating a form integration with `integration_id: 'n8n'` and your n8n webhook URL via `POST /open/forms/{formId}/integrations`.
  3. **On Disable**: The node automatically deletes the created integration via `DELETE /open/forms/{formId}/integrations/{integrationId}`.
  4. **Webhook Receipt**: When a form submission occurs, OpnForm sends the submission data to your n8n webhook URL, and the payload is forwarded as JSON to the workflow.

  ## License

  Licensed under the MIT License. See [LICENSE](./LICENSE) for details.

ai_documentation_summary:
  {"purpose":"Trigger n8n workflows when a new form submission is received in OpnForm by receiving webhook events and passing submission data into the workflow.","capabilities":["Receive OpnForm submissions via webhook (trigger node)","Automatically create a webhook integration subscription for a selected form","Delete the webhook integration when the workflow is deactivated","List available workspaces for dropdown selection (GET /open/workspaces)","List forms in a workspace for dropdown selection (GET /open/workspaces/{workspaceId}/forms)","Check existing integrations for a form (GET /open/forms/{formId}/integrations)","Create webhook integrations for forms (POST /open/forms/{formId}/integrations)","Remove webhook integrations (DELETE /open/forms/{formId}/integrations/{integrationId})","Support custom Base URL to point to api.opnform.com or a self-hosted OpnForm instance"],"authentication":"API key required — Personal Access Token (OpnForm) with required abilities (manage-integrations, workspaces-read, forms-read)","commonUseCases":["Automatically process and route form submissions into downstream systems","Send form submission notifications to Slack","Append form submission rows to Google Sheets","Transform submission payloads (Set / Transform nodes) and trigger multi-step automation workflows"],"limitations":["Node is trigger-only and focuses on webhook integrations and listing forms/workspaces — does not provide full form CRUD management within n8n","Requires an OpnForm Personal Access Token with specific abilities (manage-integrations, workspaces-read, forms-read) to create/list/delete integrations"],"relatedNodes":["Set (data formatting)","Transform (data mapping)","Slack","Google Sheets"]}


node_type: n8n-nodes-verifiemail.verifiEmail
package_name: n8n-nodes-verifiemail
display_name: Verifi Email
description: Email validation and domain health check using VerifiEmail API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-02-19 14:41:52
author_name: jiteshdugar
author_github_url: https://github.com/verifi-email/verifi-email-n8n-node.git
npm_package_name: n8n-nodes-verifiemail
npm_version: 1.3.0
community_fetched_at: 2026-02-19T14:41:52.522Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "validateEmail",
      "options": [
        {
          "name": "Validate Email Address",
          "value": "validateEmail",
          "action": "Validate an email address",
          "description": "Validate a Single Email Address"
        },
        {
          "name": "Validate Multiple Emails",
          "value": "bulkValidateEmails",
          "action": "Validate multiple email addresses",
          "description": "Validate Multiple Email Addresses in Bulk"
        },
        {
          "name": "Check Domain Health",
          "value": "checkDomainHealth",
          "action": "Check domain health",
          "description": "Check Domain Health and Configuration"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Validate Email Address",
      "value": "validateEmail",
      "action": "Validate an email address",
      "description": "Validate a Single Email Address"
    },
    {
      "name": "Validate Multiple Emails",
      "value": "bulkValidateEmails",
      "action": "Validate multiple email addresses",
      "description": "Validate Multiple Email Addresses in Bulk"
    },
    {
      "name": "Check Domain Health",
      "value": "checkDomainHealth",
      "action": "Check domain health",
      "description": "Check Domain Health and Configuration"
    }
  ]

npm_readme:
  # n8n-nodes-verifi-email

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

  A powerful n8n node for seamless email validation using the [Verifi.Email](https://verifi.email) API. Validate email addresses with enterprise-grade accuracy while maintaining complete privacy and security.

  ## Features

  - **Seamless Integration** - Easy-to-use n8n node for email validation workflows
  - **High Accuracy** - Enterprise-grade email validation with detailed results
  - **Privacy-First** - Secure and private API that doesn't store your data
  - **Real-time Validation** - Instant email verification results
  - **Bulk Processing** - Validate multiple emails efficiently in n8n workflows
  - **Detailed Responses** - Comprehensive validation data including deliverability, syntax, and more

  ## Installation

  ### Install via n8n Community Nodes

  1. Go to **Settings** → **Community Nodes** in your n8n instance
  2. Click **Install a Community Node**
  3. Enter: `n8n-nodes-verifi-email`
  4. Click **Install**

  ### Manual Installation

  ```bash
  # In your n8n installation directory
  npm install n8n-nodes-verifi-email
  ```

  ## Setup

  ### 1. Get Your API Key

  1. Visit [Verifi.Email Registration](https://app.verifi.email/register)
  2. Create your free account
  3. Get your API key from the dashboard

  ### 2. Configure Credentials

  1. In n8n, go to **Credentials**
  2. Click **Add Credential** → **Verifi.Email API**
  3. Enter your API key
  4. Save the credential

  ## Usage

  ### Basic Email Validation

  1. Add the **Verifi.Email** node to your workflow
  2. Select your configured credentials
  3. Choose operation: **Validate Email**
  4. Enter the email address to validate
  5. Execute the workflow

  ### Example Workflow

  ```json
  {
    "email": "test@example.com",
    "validation_result": {
      "is_valid": true,
      "is_deliverable": true,
      "is_risky": false,
      "syntax_valid": true,
      "domain_exists": true,
      "mailbox_exists": true,
      "disposable": false,
      "role_account": false,
      "free_provider": false
    }
  }
  ```

  ### Bulk Validation

  Use n8n's **Split In Batches** node to process multiple emails:

  1. **Read Data** → Email list
  2. **Split In Batches** → Process in chunks
  3. **Verifi.Email** → Validate each email
  4. **Merge** → Combine results

  ## Node Operations

  ### Validate Email
  Validates a single email address and returns comprehensive results.

  **Parameters:**
  - `email` (string, required): Email address to validate

  **Output:**
  - `is_valid` (boolean): Overall validation result
  - `is_deliverable` (boolean): Whether email can receive messages
  - `is_risky` (boolean): Risk assessment for the email
  - `syntax_valid` (boolean): Email syntax validation
  - `domain_exists` (boolean): Domain existence check
  - `mailbox_exists` (boolean): Mailbox existence verification
  - `disposable` (boolean): Whether it's a disposable email
  - `role_account` (boolean): Whether it's a role-based email
  - `free_provider` (boolean): Whether it's from a free email provider

  ## API Documentation

  For detailed API documentation and advanced features, visit: [https://verifi.email/docs](https://verifi.email/docs)

  ## Use Cases

  - **Lead Validation** - Clean your lead lists before marketing campaigns
  - **User Registration** - Validate emails during sign-up processes
  - **Data Cleaning** - Remove invalid emails from existing databases
  - **Email Marketing** - Improve deliverability by validating subscriber lists
  - **Form Validation** - Real-time email validation in web forms
  - **CRM Integration** - Validate contacts automatically in your CRM workflows

  ## Example Workflows

  ### Marketing List Cleanup
  ```
  Google Sheets → Split In Batches → Verifi.Email → Filter Valid → Update Sheet
  ```

  ### Real-time Form Validation
  ```
  Webhook → Verifi.Email → Conditional Logic → Send Response
  ```

  ### CRM Contact Validation
  ```
  CRM Trigger → Verifi.Email → Update Contact Status → Slack Notification
  ```

  ## Error Handling

  The node includes comprehensive error handling for:
  - Invalid API keys
  - Rate limit exceeded
  - Malformed email addresses
  - Network connectivity issues
  - API service unavailable

  ## Rate Limits

  Please refer to your [Verifi.Email dashboard](https://app.verifi.email) for current rate limits and usage statistics.

  ## Support

  - **Documentation**: [https://verifi.email/docs](https://verifi.email/docs)
  - **Website**: [https://verifi.email](https://verifi.email)
  - **Issues**: Report issues on this GitHub repository
  - **API Support**: Contact us on **contact@verifi.email**

  ## Contributing

  We welcome contributions! Please feel free to submit issues and pull requests.

  ### Development Setup

  1. Clone this repository
  2. Install dependencies: `npm install`
  3. Build the node: `npm run build`
  4. Link to your n8n installation: `npm link`
  5. In your n8n directory: `npm link n8n-nodes-verifi-email`

  ### Testing

  ```bash
  npm run test
  npm run lint
  ```

  ## Changelog

  ### v1.0.0
  - Initial release
  - Email validation functionality
  - Comprehensive validation results
  - Error handling and rate limiting

  ## License

  [MIT](LICENSE.md)

  ---

  **Secure • Private • Accurate**

  Transform your email workflows with reliable validation powered by Verifi.Email and n8n automation.

ai_documentation_summary:
  {"purpose":"Email address validation and domain/mailbox health checks using the Verifi.Email API, providing real-time, privacy-first validation results for n8n workflows.","capabilities":["Validate Email (single email) returning detailed fields: is_valid, is_deliverable, is_risky, syntax_valid, domain_exists, mailbox_exists, disposable, role_account, free_provider","Real-time validation with comprehensive response data","Bulk processing support via n8n workflow patterns (e.g., Split In Batches)","Detailed error handling for invalid API keys, rate limits, malformed addresses, network/API unavailability","Privacy-first operation (service does not store validated data according to README)"],"authentication":"API key required (Verifi.Email API key configured in n8n Credentials)","commonUseCases":["Lead list validation / marketing list cleanup","Email validation during user registration and form submissions (real-time form validation)","Data cleaning of existing contact databases","Improving email marketing deliverability by validating subscriber lists","Automated contact validation in CRM workflows"],"limitations":["Node exposes a single operation (Validate Email) — no built-in native bulk endpoint; bulk workflows require using Split In Batches or similar n8n patterns","Subject to Verifi.Email API rate limits (see Verifi.Email dashboard for limits)","Requires a valid API key and network access to Verifi.Email service","No mention of additional advanced features (e.g., suggestions/autocorrect) in README"],"relatedNodes":["Split In Batches","Merge","Filter","Google Sheets","Webhook"]}


node_type: n8n-nodes-tmpfiles.tmpfiles
package_name: n8n-nodes-tmpfiles
display_name: Tmpfiles
description: Upload files to Tmpfiles and get a temporary URL
category: Community
development_style: declarative
version: 1
operations:
  [
  {
  "name": "Upload",
  "value": "upload",
  "action": "Upload file to tmpfiles"
  }
  ]

credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: mookielian
author_github_url: https://github.com/MookieLian/
npm_package_name: n8n-nodes-tmpfiles
npm_version: 2.0.0
community_fetched_at: 2026-02-19T14:41:52.522Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tmpfiles",
      "options": [
        {
          "name": "Tmpfile",
          "value": "tmpfiles"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload file to tmpfiles"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tmpfiles"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

npm_readme:
  # n8n-nodes-tmpfiles

  This is an n8n community node for using the `tmpfiles.org` service in your n8n workflows. It uploads a binary file and returns a temporary download URL.

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

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

  ---

  Profile: https://gravatar.com/mookielian

  ---

  ## Installation

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

  Quick steps:

  1. In n8n UI → Settings → Community Nodes → Install a community node
  2. Package name: `n8n-nodes-tmpfiles`
  3. Click Install and restart n8n if prompted

  For self-hosted CLI:

  ```bash
  npm install n8n-nodes-tmpfiles
  ```

  ## Supported Operations

  - Upload File: Accepts a binary field, uploads it to `tmpfiles.org` API, and returns a temporary URL.

  ## Credentials

  - Not required. `tmpfiles.org` does not require authentication.

  ## Compatibility

  - n8n Nodes API Version: 1
  - Tested with current n8n versions. No known incompatibilities.

  ## Usage

  1. Add the `Tmpfiles` node to your workflow.
  2. Set `Input Data Field Name` to the name of your binary property (e.g., `data`).
  3. Execute the node; the output contains the temporary URL of the uploaded file.

  Tip: Chain this after a node that provides binary data (e.g., HTTP Request / Read Binary File).

  ## Resources

  - [n8n community nodes docs](https://docs.n8n.io/integrations/#community-nodes)
  - `tmpfiles.org` API: `https://tmpfiles.org/api/v1/upload`

  ## Version History

  - 0.1.0: Initial release

ai_documentation_summary:
  {"purpose":"Uploads a binary file to tmpfiles.org and returns a temporary download URL for use in n8n workflows.","capabilities":["Upload a binary file to the tmpfiles.org API","Accept a configurable binary input field name (e.g., 'data')","Return a temporary download URL for the uploaded file","Operate without any credentials or authentication"],"authentication":"None (no credentials required)","commonUseCases":["Generate a temporary downloadable link for files produced by a workflow (reports, exports, images)","Expose binary data fetched or created in a workflow by chaining after nodes that provide binary output","Quickly share or distribute files without setting up storage credentials"],"limitations":[],"relatedNodes":["HTTP Request","Read Binary File"]}


node_type: n8n-nodes-ticktick.tickTick
package_name: n8n-nodes-ticktick
display_name: TickTick
description: Interact with TickTick tasks and projects
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: hansdoe
author_github_url: https://github.com/hansdoebel/
npm_package_name: n8n-nodes-ticktick
npm_version: 2.1.3
community_fetched_at: 2026-02-19T14:41:52.523Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Focus",
          "value": "focus"
        },
        {
          "name": "Habit",
          "value": "habit"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Project Group",
          "value": "projectGroup"
        },
        {
          "name": "Sync",
          "value": "sync"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Assign",
          "value": "assign",
          "action": "Assign a task to a user",
          "description": "Assign a task to a user (V2 API only)"
        },
        {
          "name": "Complete",
          "value": "complete",
          "action": "Complete a task"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a task"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task"
        },
        {
          "name": "List All",
          "value": "listAll",
          "action": "List all tasks",
          "description": "List all tasks (V2 API only)"
        },
        {
          "name": "List Completed",
          "value": "listCompleted",
          "action": "List completed tasks",
          "description": "List completed tasks (V2 API only)"
        },
        {
          "name": "List Deleted",
          "value": "listDeleted",
          "action": "List deleted tasks",
          "description": "List deleted tasks (V2 API only)"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a task",
          "description": "Move a task to another project (V2 API only)"
        },
        {
          "name": "Set Parent",
          "value": "setParent",
          "action": "Set parent task",
          "description": "Set parent task (V2 API only)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a project"
        },
        {
          "name": "Get Users",
          "value": "getUsers",
          "action": "Get users in a project",
          "description": "Get users in a shared project (V2 API only)"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "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": "List",
          "value": "list",
          "action": "List all tags",
          "description": "Get all tags"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge tags",
          "description": "Merge one tag into another"
        },
        {
          "name": "Rename",
          "value": "rename",
          "action": "Rename a tag",
          "description": "Rename a tag"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a tag",
          "description": "Update a tag"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ],
          "authentication": [
            "tickTickSessionApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "action": "Archive a habit",
          "description": "Archive a habit"
        },
        {
          "name": "Check In",
          "value": "checkin",
          "action": "Check in a habit",
          "description": "Record a habit check-in"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a habit",
          "description": "Create a new habit"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a habit",
          "description": "Delete a habit"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a habit",
          "description": "Get a habit by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all habits",
          "description": "Get all habits"
        },
        {
          "name": "Unarchive",
          "value": "unarchive",
          "action": "Unarchive a habit",
          "description": "Unarchive a habit"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a habit",
          "description": "Update a habit"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "habit"
          ],
          "authentication": [
            "tickTickSessionApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getHeatmap",
      "options": [
        {
          "name": "Get Distribution",
          "value": "getDistribution",
          "action": "Get focus distribution",
          "description": "Get focus time distribution by tag"
        },
        {
          "name": "Get Heatmap",
          "value": "getHeatmap",
          "action": "Get focus heatmap",
          "description": "Get focus/pomodoro heatmap data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "focus"
          ],
          "authentication": [
            "tickTickSessionApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project group",
          "description": "Create a new project group (folder)"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project group",
          "description": "Delete a project group"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all project groups",
          "description": "Get all project groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project group",
          "description": "Update a project group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "projectGroup"
          ],
          "authentication": [
            "tickTickSessionApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getProfile",
      "options": [
        {
          "name": "Get Preferences",
          "value": "getPreferences",
          "action": "Get user preferences",
          "description": "Get user preferences and settings"
        },
        {
          "name": "Get Profile",
          "value": "getProfile",
          "action": "Get user profile",
          "description": "Get the user profile"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get user status",
          "description": "Get user subscription status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "authentication": [
            "tickTickSessionApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "syncAll",
      "options": [
        {
          "name": "Sync All",
          "value": "syncAll",
          "action": "Sync all data",
          "description": "Get all user data including projects, tasks, and more"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sync"
          ],
          "authentication": [
            "tickTickSessionApi"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Assign",
      "value": "assign",
      "action": "Assign a task to a user",
      "description": "Assign a task to a user (V2 API only)"
    },
    {
      "name": "Complete",
      "value": "complete",
      "action": "Complete a task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task"
    },
    {
      "name": "List All",
      "value": "listAll",
      "action": "List all tasks",
      "description": "List all tasks (V2 API only)"
    },
    {
      "name": "List Completed",
      "value": "listCompleted",
      "action": "List completed tasks",
      "description": "List completed tasks (V2 API only)"
    },
    {
      "name": "List Deleted",
      "value": "listDeleted",
      "action": "List deleted tasks",
      "description": "List deleted tasks (V2 API only)"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a task",
      "description": "Move a task to another project (V2 API only)"
    },
    {
      "name": "Set Parent",
      "value": "setParent",
      "action": "Set parent task",
      "description": "Set parent task (V2 API only)"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a project"
    },
    {
      "name": "Get Users",
      "value": "getUsers",
      "action": "Get users in a project",
      "description": "Get users in a shared project (V2 API only)"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project"
    },
    {
      "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": "List",
      "value": "list",
      "action": "List all tags",
      "description": "Get all tags"
    },
    {
      "name": "Merge",
      "value": "merge",
      "action": "Merge tags",
      "description": "Merge one tag into another"
    },
    {
      "name": "Rename",
      "value": "rename",
      "action": "Rename a tag",
      "description": "Rename a tag"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a tag",
      "description": "Update a tag"
    },
    {
      "name": "Archive",
      "value": "archive",
      "action": "Archive a habit",
      "description": "Archive a habit"
    },
    {
      "name": "Check In",
      "value": "checkin",
      "action": "Check in a habit",
      "description": "Record a habit check-in"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a habit",
      "description": "Create a new habit"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a habit",
      "description": "Delete a habit"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a habit",
      "description": "Get a habit by ID"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all habits",
      "description": "Get all habits"
    },
    {
      "name": "Unarchive",
      "value": "unarchive",
      "action": "Unarchive a habit",
      "description": "Unarchive a habit"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a habit",
      "description": "Update a habit"
    },
    {
      "name": "Get Distribution",
      "value": "getDistribution",
      "action": "Get focus distribution",
      "description": "Get focus time distribution by tag"
    },
    {
      "name": "Get Heatmap",
      "value": "getHeatmap",
      "action": "Get focus heatmap",
      "description": "Get focus/pomodoro heatmap data"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project group",
      "description": "Create a new project group (folder)"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project group",
      "description": "Delete a project group"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all project groups",
      "description": "Get all project groups"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project group",
      "description": "Update a project group"
    },
    {
      "name": "Get Preferences",
      "value": "getPreferences",
      "action": "Get user preferences",
      "description": "Get user preferences and settings"
    },
    {
      "name": "Get Profile",
      "value": "getProfile",
      "action": "Get user profile",
      "description": "Get the user profile"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get user status",
      "description": "Get user subscription status"
    },
    {
      "name": "Sync All",
      "value": "syncAll",
      "action": "Sync all data",
      "description": "Get all user data including projects, tasks, and more"
    }
  ]

npm_readme:
  # n8n-nodes-ticktick

  n8n community node for integrating TickTick with your workflows. Manage tasks, projects, tags, habits, and productivity seamlessly.

  ## Installation

  ```
  n8n-nodes-ticktick
  ```

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

  ## Features

  - **Tasks** - Create, update, complete, delete, move, assign, set parent
  - **Projects** - Manage projects and shared collaborators
  - **Project Groups** - Organize projects into groups (V2)
  - **Tags** - Create, rename, merge tags (V2)
  - **Habits** - Track habits with check-ins (V2)
  - **Focus** - Get focus time heatmaps and distribution (V2)
  - **User** - Get profile, status, and preferences (V2)
  - **Sync** - Full data sync (V2)

  ## Documentation

  | Document | Description |
  |----------|-------------|
  | [Getting Started](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/docs/getting-started.md) | Installation and setup |
  | [Credentials](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/docs/credentials.md) | Authentication options |
  | [API Reference](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/docs/api-reference.md) | All operations |
  | [Testing](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/docs/testing.md) | Running tests |
  | [Development](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/docs/development.md) | Contributing |
  | [Troubleshooting](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/docs/troubleshooting.md) | Known issues and FAQ |
  | [Changelog](https://github.com/hansdoebel/n8n-nodes-ticktick/blob/main/CHANGELOG.md) | Version history |

  ## Resources

  - [GitHub Repository](https://github.com/hansdoebel/n8n-nodes-ticktick)
  - [TickTick Open API](https://developer.ticktick.com/docs#/openapi)
  - [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Integrate TickTick with n8n workflows to manage tasks, projects, tags, habits and retrieve focus and user data, as well as perform full data syncs.","capabilities":["Tasks: create, update, complete, delete, move, assign, set parent","Projects: create, update, delete, manage shared collaborators","Project Groups (V2): organize projects into groups","Tags (V2): create, rename, merge tags","Habits (V2): track habits with check-ins","Focus (V2): get focus time heatmaps and distribution","User (V2): get profile, status, and preferences","Sync (V2): full data sync"],"authentication":"Credentials required (see linked Credentials documentation in the README)","commonUseCases":["Automatically create or update TickTick tasks from other apps or triggers","Synchronize TickTick data into external systems or backup workflows (full sync)","Manage projects and shared collaborators as part of team workflows","Organize projects into groups and maintain tag taxonomy (create/rename/merge)","Track habit check-ins and incorporate habit data into automations"],"limitations":[],"relatedNodes":[]}


package_name: @digitalocean/n8n-nodes-digitalocean-gradient-serverless-inference
display_name: DigitalOcean Gradient™ AI Serverless Inference
description: Consume DigitalOcean Gradient™ AI Serverless Inference
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: digitalocean-eng
author_github_url: https://github.com/digitalocean-labs/n8n-node-gradient-serverless-inference.git
npm_package_name: @digitalocean/n8n-nodes-digitalocean-gradient-serverless-inference
npm_version: 1.0.6
community_fetched_at: 2026-02-19T14:41:52.524Z
ai_summary_generated_at: 2026-02-19 16:43:57
node_type:
  @digitalocean/n8n-nodes-digitalocean-gradient-serverless-inference.digitalOceanGradientServerlessInference

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "text",
      "options": [
        {
          "name": "Text",
          "value": "text"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "complete",
      "options": [
        {
          "name": "Complete",
          "value": "complete",
          "action": "Create a text completion",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/chat/completions",
              "method": "POST"
            }
          },
          "description": "Create one or more completions for a given text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "text"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Complete",
      "value": "complete",
      "action": "Create a text completion",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/chat/completions",
          "method": "POST"
        }
      },
      "description": "Create one or more completions for a given text"
    }
  ]

npm_readme:
  # n8n-nodes-digitalocean-serverless-inference

  This is an n8n community node for the [DigitalOcean Gradient™ AI Platform Serverless Inference API](https://gradientai-sdk.digitalocean.com/api/resources/chat/). It provides access to DigitalOcean Gradient™ AI Platform's large language models through n8n workflows.

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

  [Installation](#installation)   
  [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.

  ### Quick Installation

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@digitalocean/n8n-nodes-digitalocean-serverless-inference` in **Enter npm package name**
  4. Agree to the risks of using community nodes
  5. Select **Install**

  **Note:** After installation, you need to restart your n8n instance for the new node to be recognized.

  ### Chat Completion

  Create chat completions using DigitalOcean Gradient™ AI Serverless Inference LLMs. The node supports:

  - Multiple messages with system, user, and assistant roles
  - [Multiple Models](https://docs.digitalocean.com/products/gradient-ai-platform/details/models/)
  - Customizable parameters conforming to the [API Specification](https://gradientai-sdk.digitalocean.com/api/resources/chat/subresources/completions/methods/create)

  ## Credentials

  To use this node, you need a [Model Access Key](https://docs.digitalocean.com/products/gradient-ai-platform/how-to/use-serverless-inference/#create) from DigitalOcean Gradient™ AI Platform

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Tested up to n8n version 1.106.3

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [DigitalOcean Gradient™ AI Serverless Inference documentation](https://docs.digitalocean.com/products/gradient-ai-platform/how-to/use-serverless-inference/)

  ## Version History

  ### 1.0.0

  - Initial usable release

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Provides an n8n community node to call DigitalOcean Gradient™ AI Platform Serverless Inference for chat-based LLM completions, enabling LLM responses inside n8n workflows.","capabilities":["Create chat completions (multi-turn)","Send multiple messages with system, user, and assistant roles","Select from multiple DigitalOcean Gradient models","Customize completion parameters according to the DigitalOcean Serverless Inference API"],"authentication":"Model Access Key (DigitalOcean API key required)","commonUseCases":["Generate conversational replies in automation workflows","Build multi-turn chatbots or assistants within n8n","Enrich or transform data using LLM completions with custom model parameters","Integrate LLM responses into downstream workflow steps (notifications, storage, transforms)"],"limitations":["Focused on chat/completion endpoint only — other capabilities (embeddings, file uploads, fine-tuning) are not mentioned","No mention of streaming/partial response support","Community node: installation requires agreeing to community node risks and restarting n8n to register the node","Requires n8n v1.0.0 or later (tested up to v1.106.3)"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: telli-com
author_github_url: https://github.com/telli-ai/n8n-telli.git
npm_package_name: n8n-nodes-telli
npm_version: 1.1.0
community_fetched_at: 2026-02-19T14:41:52.524Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "add-telli-contact",
      "options": [
        {
          "name": "Add Contact",
          "value": "add-telli-contact",
          "action": "Add a new contact to telli",
          "description": "Add a new contact to telli"
        },
        {
          "name": "Delete Contact",
          "value": "delete-telli-contact",
          "action": "Delete a contact from telli",
          "description": "Permanently delete a contact from telli"
        },
        {
          "name": "Get Contact By External ID",
          "value": "get-contact-by-external-id",
          "action": "Get contact by external ID",
          "description": "Retrieve detailed contact information using external contact ID"
        },
        {
          "name": "Remove From Auto Dialer",
          "value": "remove-from-auto-dialer",
          "action": "Remove a contact from auto dialer",
          "description": "Remove a contact from the auto dialer queue"
        },
        {
          "name": "Schedule Call",
          "value": "schedule-telli-call",
          "action": "Schedule a call with telli",
          "description": "Schedule a call with telli"
        },
        {
          "name": "Update Contact",
          "value": "update-telli-contact",
          "action": "Update a contact in telli",
          "description": "Update an existing contact in telli"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Contact",
      "value": "add-telli-contact",
      "action": "Add a new contact to telli",
      "description": "Add a new contact to telli"
    },
    {
      "name": "Delete Contact",
      "value": "delete-telli-contact",
      "action": "Delete a contact from telli",
      "description": "Permanently delete a contact from telli"
    },
    {
      "name": "Get Contact By External ID",
      "value": "get-contact-by-external-id",
      "action": "Get contact by external ID",
      "description": "Retrieve detailed contact information using external contact ID"
    },
    {
      "name": "Remove From Auto Dialer",
      "value": "remove-from-auto-dialer",
      "action": "Remove a contact from auto dialer",
      "description": "Remove a contact from the auto dialer queue"
    },
    {
      "name": "Schedule Call",
      "value": "schedule-telli-call",
      "action": "Schedule a call with telli",
      "description": "Schedule a call with telli"
    },
    {
      "name": "Update Contact",
      "value": "update-telli-contact",
      "action": "Update a contact in telli",
      "description": "Update an existing contact in telli"
    }
  ]

npm_readme:
  # n8n-nodes-telli

  This is an n8n community node. It lets you use telli AI phone call platform in your n8n workflows.

  telli is an AI phone calling platform that lets you automate phone call operations and perform custom tasks.

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

  - [Installation](#installation)  
  - [Actions](#actions)  
  - [Credentials](#credentials)  
  - [Compatibility](#compatibility)  
  - [Usage](#usage)  
  - [Resources](#resources)  
  - [Development](#development)  

  ## Repository Structure

  - `credentials/`: Contains credential definitions
    - `TelliApi.credentials.ts`: Defines the API key authentication for telli API

  - `nodes/`: Contains the actual node implementations
    - `Telli/`: The telli node folder
      - `Telli.node.ts`: Main implementation of the telli node with operations for adding contacts and scheduling calls
      - `telli.svg`: Icon for the node in n8n

  <!-- Adding a node would mean creating a new folder in the nodes/ directory, and adding a new file with the node implementation. -->

  - `dist/`: Generated folder containing compiled JavaScript code (created after running `npm run build`)

  - `package.json`: Defines package dependencies and n8n node registration information

  ## Installation

  ### Option 1: Install from npm

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

  ```bash
  npm install n8n-nodes-telli
  ```

  ### Option 2: Manual installation

  1. Clone this repository to your local machine
  2. Install dependencies: `npm install`
  3. Build the code: `npm run build`
  4. Create a custom directory in your n8n installation: `mkdir -p ~/.n8n/custom`
  5. Create a package.json file in the custom directory:
  ```json
  {
    "name": "n8n-custom-nodes",
    "version": "0.1.0",
    "private": true,
    "dependencies": {
      "n8n-nodes-telli": "file:///path/to/cloned/n8n-nodes-telli"
    }
  }
  ```
  6. Install the dependency: `cd ~/.n8n/custom && npm install`
  7. Restart n8n

  ## Actions

  The telli node provides the following operations:

  ### Add Contact
  - Add a new contact to telli with first name, last name, email, phone number, and optional attributes
  - See more info [here](https://docs.telli.com/endpoint/add-contact)

  ### Update Contact
  - Update an existing contact in telli. Only provided fields will be updated, others remain unchanged
  - Supports updating first name, last name, phone number, email, external contact ID, external URL, salutation, timezone, and contact details
  - See more info [here](https://docs.telli.com/endpoint/update-contact)

  ### Delete Contact
  - Permanently delete a contact and any PII data associated with it from the system
  - This action cannot be undone. If you want to stop calling a contact, use the `v1/remove-from-auto-dialer` endpoint instead
  - See more info [here](https://docs.telli.com/endpoint/delete-contact)

  ### Remove from Auto Dialer
  - Remove a contact from the auto dialer queue
  - This stops the contact from receiving automated calls without deleting their data
  - See more info [here](https://docs.telli.com/endpoint/remove-from-auto-dialer)

  ### Schedule Call
  - Schedule an AI phone call with a telli contact, with customizable message and questions
  - See more info [here](https://docs.telli.com/endpoint/schedule-call)

  ## Credentials

  To use the telli nodes, you need to authenticate with the telli API:

  1. Sign up for an account at [telli.com](https://telli.com/)
  2. Navigate to your account settings
  3. Create an API key with the necessary permissions
  4. Use this API key in the telli API credentials in n8n

  ## Compatibility

  This node has been tested with n8n version 0.171.0 and higher.

  ## Usage

  ### Add Contact Example

  1. Add the telli node to your workflow
  2. Select the "Add Contact" operation
  3. Fill in the required fields (First Name, Last Name, Phone Number, External Contact ID)
  4. Optionally add Email, Salutation, etc.
  5. Connect the node to a trigger or another node

  ### Update Contact Example

  1. Add the telli node to your workflow
  2. Select the "Update Contact" operation
  3. Enter the Contact ID (obtained from a previous Add Contact operation or from telli dashboard)
  4. Fill in only the fields you want to update (leave others empty to keep existing values)
  5. Connect the node to a trigger or another node

  ### Delete Contact Example

  1. Add the telli node to your workflow
  2. Select the "Delete Contact" operation
  3. Enter the Contact ID (obtained from a previous Add Contact operation or from telli dashboard)
  4. Connect the node to a trigger or another node
  5. **Warning**: This action permanently deletes the contact and cannot be undone

  ### Remove from Auto Dialer Example

  1. Add the telli node to your workflow
  2. Select the "Remove from Auto Dialer" operation
  3. Enter the Contact ID (obtained from a previous Add Contact operation or from telli dashboard)
  4. Connect the node to a trigger or another node
  5. This will stop the contact from receiving automated calls without deleting their data

  ### Schedule Call Example

  1. Add the telli node to your workflow  
  2. Select the "Schedule Call" operation
  3. Enter the Contact ID (obtained from a previous Add Contact operation or from telli dashboard)
  4. Configure call details including message and questions
  5. Connect to a trigger or other nodes to start the workflow

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [telli API documentation](https://docs.telli.com/)
  * [telli website](https://telli.com/)

  ## Development

  ### Making Changes and Rebuilding Locally

  Refer to the n8n docs on how to run nodes locally: [docs](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/)

  1. Make your changes to the code (e.g., in `nodes/Telli/Telli.node.ts`)

  2. Build the project:
  ```bash
  npm run build
  ```

  3. Copy the built files to your n8n custom directory:
  ```bash
  cp -r dist/* ~/.n8n/custom/n8n-nodes-telli/ # or wherever your custom directory is
  ```

  4. Restart n8n to see your changes:
  ```bash
  # First kill the current n8n process (Ctrl+C), then run:
  n8n start
  ```

  ### Development Workflow Tips

  - Use `npm run dev` to continuously build the code as you make changes
  - Check for linting errors with `npm run lint`
  - Format code with `npm run format`

  ### Troubleshooting

  If you don't see your changes after rebuilding and restarting n8n:

  1. Check if there are any errors in the n8n logs
  2. Verify that the files were correctly copied to the custom directory
  3. Make sure n8n was properly restarted
  4. Clear your browser cache or open n8n in an incognito window

ai_documentation_summary:
  {"purpose":"Provides n8n workflow nodes to interact with the telli AI phone call platform, allowing automation of contact management and scheduling of AI-driven phone calls.","capabilities":["Add Contact — create a new contact with first name, last name, phone number, email and optional attributes","Update Contact — partially update contact fields (first name, last name, phone, email, external contact ID, external URL, salutation, timezone, contact details)","Delete Contact — permanently delete a contact and associated PII from telli","Remove from Auto Dialer — remove a contact from the auto-dialer queue without deleting their data","Schedule Call — schedule an AI phone call for a contact with configurable message and questions"],"authentication":"API key required","commonUseCases":["Create or sync contacts in telli from other systems or triggers","Update contact data in workflows (e.g., CRM sync, enrichment)","Schedule automated AI phone calls with custom messages and question flows","Remove contacts from auto-dialer to stop automated calls without deleting data","Permanently delete contact records and PII as part of data-retention workflows"],"limitations":["Delete Contact is permanent and irreversible (PII is removed and action cannot be undone)","Node tested and supported with n8n version 0.171.0 and higher"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: bcharleson
author_github_url: https://github.com/r-Howitzer/
npm_package_name: n8n-nodes-heyreach
npm_version: 1.0.5
community_fetched_at: 2026-02-19T14:41:52.524Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "campaign",
      "options": [
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Inbox",
          "value": "inbox"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "LinkedIn Account",
          "value": "linkedInAccount"
        },
        {
          "name": "List",
          "value": "list"
        },
        {
          "name": "My Network",
          "value": "myNetwork"
        },
        {
          "name": "Stat",
          "value": "stats"
        },
        {
          "name": "Webhook",
          "value": "webhook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getById",
      "options": [
        {
          "name": "Add Leads",
          "value": "addLeads",
          "action": "Add leads to campaign",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/AddLeadsToCampaign",
              "body": {
                "campaignId": "={{$parameter[\"campaignId\"]}}",
                "accountLeadPairs": "={{$parameter[\"accountLeadPairs\"].pair.map(pair => ({\n                                    linkedInAccountId: parseInt(pair.linkedInAccountId),\n                                    lead: {\n                                        ...pair.lead.details,\n                                        customUserFields: pair.lead.details.customUserFields?.field || []\n                                    }\n                                }))}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get",
          "value": "getById",
          "action": "Retrieve a campaign",
          "routing": {
            "request": {
              "qs": {
                "campaignId": "={{$parameter[\"campaignId\"]}}"
              },
              "url": "/campaign/GetById",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Leads",
          "value": "getLeads",
          "action": "Retrieve leads from campaign",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/GetLeadsFromCampaign",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "timeTo": "={{$parameter[\"additionalFields\"][\"timeTo\"]}}",
                "timeFrom": "={{$parameter[\"additionalFields\"][\"timeFrom\"]}}",
                "campaignId": "={{$parameter[\"campaignId\"]}}",
                "timeFilter": "={{$parameter[\"additionalFields\"][\"timeFilter\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Retrieve all campaigns",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/GetAll",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
                "statuses": "={{$parameter[\"additionalFields\"][\"statuses\"]}}",
                "accountIds": "={{$parameter[\"additionalFields\"][\"accountIds\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Many For Lead",
          "value": "getCampaignsForLead",
          "action": "Retrieve campaigns for a lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/campaign/GetCampaignsForLead",
              "body": {
                "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
                "profileUrl": "={{$parameter[\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Pause",
          "value": "pause",
          "action": "Pause a campaign",
          "routing": {
            "request": {
              "qs": {
                "campaignId": "={{$parameter[\"campaignId\"]}}"
              },
              "url": "/campaign/Pause",
              "body": {},
              "method": "POST"
            }
          }
        },
        {
          "name": "Resume",
          "value": "resume",
          "action": "Resume a campaign",
          "routing": {
            "request": {
              "qs": {
                "campaignId": "={{$parameter[\"campaignId\"]}}"
              },
              "url": "/campaign/Resume",
              "body": {},
              "method": "POST"
            }
          }
        },
        {
          "name": "Stop Lead",
          "value": "stopLeadInCampaign",
          "action": "Stop a lead in campaign",
          "routing": {
            "request": {
              "url": "/campaign/StopLeadInCampaign",
              "body": {
                "leadUrl": "={{$parameter[\"leadUrl\"]}}",
                "campaignId": "={{$parameter[\"campaignId\"]}}",
                "leadMemberId": "={{$parameter[\"leadMemberId\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getOverallStats",
      "options": [
        {
          "name": "Get Overall",
          "value": "getOverallStats",
          "action": "Retrieve overall statistics",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/stats/GetOverallStats",
              "body": {
                "endDate": "={{$parameter[\"additionalFields\"][\"endDate\"]}}",
                "startDate": "={{$parameter[\"additionalFields\"][\"startDate\"]}}",
                "accountIds": "={{$parameter[\"accountIds\"]}}",
                "campaignIds": "={{$parameter[\"campaignIds\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stats"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createWebhook",
      "options": [
        {
          "name": "Create",
          "value": "createWebhook",
          "action": "Create a new webhook",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/webhooks/CreateWebhook",
              "body": {
                "eventType": "={{$parameter[\"eventType\"]}}",
                "webhookUrl": "={{$parameter[\"webhookUrl\"]}}",
                "campaignIds": "={{ $parameter[\"campaignIds\"] ?? [] }}",
                "webhookName": "={{$parameter[\"webhookName\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "deleteWebhook",
          "action": "Delete a webhook",
          "routing": {
            "request": {
              "qs": {
                "webhookId": "={{$parameter[\"webhookId\"]}}"
              },
              "url": "/webhooks/DeleteWebhook",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "getWebhookById",
          "action": "Retrieve a single webhook",
          "routing": {
            "request": {
              "qs": {
                "webhookId": "={{$parameter[\"webhookId\"]}}"
              },
              "url": "/webhooks/GetWebhookById",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAllWebhooks",
          "action": "Retrieve all webhooks",
          "routing": {
            "request": {
              "url": "/webhooks/GetAllWebhooks",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "updateWebhook",
          "action": "Update an existing webhook",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "qs": {
                "webhookId": "={{$parameter[\"webhookId\"]}}"
              },
              "url": "/webhooks/UpdateWebhook",
              "body": {
                "isActive": "={{$parameter[\"additionalFields\"][\"isActive\"]}}",
                "eventType": "={{$parameter[\"additionalFields\"][\"eventType\"]}}",
                "webhookUrl": "={{$parameter[\"additionalFields\"][\"webhookUrl\"]}}",
                "campaignIds": "={{ ($parameter[\"additionalFields\"]?.[\"eventType\"] === \"EVERY_MESSAGE_REPLY_RECEIVED\" || $parameter[\"additionalFields\"]?.[\"eventType\"] === \"LEAD_TAG_UPDATED\") ? [] : $parameter[\"additionalFields\"]?.[\"campaignIds\"] ?? null }}",
                "webhookName": "={{$parameter[\"additionalFields\"][\"webhookName\"]}}"
              },
              "method": "PATCH"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMyNetworkForSender",
      "options": [
        {
          "name": "Get",
          "value": "getMyNetworkForSender",
          "action": "Retrieve list of network connections for a sender account",
          "routing": {
            "request": {
              "url": "/MyNetwork/GetMyNetworkForSender",
              "body": {
                "pageSize": "={{$parameter[\"pageSize\"]}}",
                "senderId": "={{$parameter[\"senderId\"]}}",
                "pageNumber": "={{$parameter[\"pageNumber\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "myNetwork"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getListById",
      "options": [
        {
          "name": "Add Leads",
          "value": "addLeadsToList",
          "action": "Add leads to a list",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/AddLeadsToList",
              "body": {
                "leads": "={{$parameter[\"wrapperLeads\"][\"leads\"].map(lead => ({\n                                ...lead,\n                                customUserFields: lead.customUserFields?.field || []\n                            }))}}",
                "listId": "={{$parameter[\"listId\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Create Empty",
          "value": "createEmptyList",
          "action": "Create an empty list",
          "routing": {
            "request": {
              "url": "/list/CreateEmptyList",
              "body": {
                "name": "={{$parameter[\"listName\"]}}",
                "type": "={{$parameter[\"listType\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete Leads (By LinkedIn ID)",
          "value": "deleteLeadsFromList",
          "action": "Delete leads from a list by LinkedIn ID",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/DeleteLeadsFromList",
              "body": {
                "listId": "={{$parameter[\"listId\"]}}",
                "leadMemberIds": "={{$parameter[\"leadMemberIds\"]}}"
              },
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Delete Leads (By Profile URL)",
          "value": "deleteLeadsFromListByProfileUrl",
          "action": "Delete leads from a list by LinkedIn profile URL",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/DeleteLeadsFromListByProfileUrl",
              "body": {
                "listId": "={{$parameter[\"listId\"]}}",
                "profileUrls": "={{$parameter[\"leadProfileUrls\"]}}"
              },
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get",
          "value": "getListById",
          "action": "Retrieve a list",
          "routing": {
            "request": {
              "qs": {
                "listId": "={{$parameter[\"listId\"]}}"
              },
              "url": "/list/GetById",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Companies",
          "value": "getCompaniesFromList",
          "action": "Retrieve companies from a list",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetCompaniesFromList",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "listId": "={{$parameter[\"listId\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Leads",
          "value": "getLeadsFromList",
          "action": "Retrieve leads from a list",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetLeadsFromList",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "listId": "={{$parameter[\"listId\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
                "createdTo": "={{$parameter[\"additionalFields\"][\"createdTo\"]}}",
                "createdFrom": "={{$parameter[\"additionalFields\"][\"createdFrom\"]}}",
                "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Lists",
          "value": "getListsForLead",
          "action": "Retrieve lists associated with a specific lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetListsForLead",
              "body": {
                "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
                "profileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Many",
          "value": "getAllLists",
          "action": "Retrieve all lists",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/list/GetAll",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
                "listType": "={{$parameter[\"additionalFields\"][\"listType\"]}}",
                "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "list"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getConversationsV2",
      "options": [
        {
          "name": "Get Many",
          "value": "getConversationsV2",
          "action": "Retrieve all LinkedIn conversations",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/inbox/GetConversations",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "filters": {
                  "seen": "={{$parameter[\"additionalFields\"][\"seen\"]}}",
                  "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}",
                  "searchString": "={{$parameter[\"additionalFields\"][\"searchString\"]}}",
                  "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                  "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}",
                  "linkedInAccountIds": "={{$parameter[\"additionalFields\"][\"linkedInAccountIds\"]}}"
                }
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Chatroom",
          "value": "getChatroom",
          "action": "Retrieve a specific LinkedIn conversation and messages",
          "routing": {
            "request": {
              "url": "=/inbox/GetChatroom/{{$parameter[\"accountId\"]}}/{{$parameter[\"conversationId\"]}}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send a message to a LinkedIn conversation",
          "routing": {
            "request": {
              "url": "/inbox/SendMessage",
              "body": {
                "message": "={{$parameter[\"message\"]}}",
                "subject": "={{$parameter[\"subject\"]}}",
                "conversationId": "={{$parameter[\"conversationId\"]}}",
                "linkedInAccountId": "={{$parameter[\"linkedInAccountId\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "inbox"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllLinkedInAccounts",
      "options": [
        {
          "name": "Get Many",
          "value": "getAllLinkedInAccounts",
          "action": "Retrieve a list of LinkedIn accounts",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/li_account/GetAll",
              "body": {
                "limit": "={{$parameter[\"limit\"]}}",
                "offset": "={{$parameter[\"offset\"]}}",
                "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get",
          "value": "getLinkedInAccountById",
          "action": "Retrieve a LinkedIn account",
          "routing": {
            "request": {
              "qs": {
                "accountId": "={{$parameter[\"accountId\"]}}"
              },
              "url": "/li_account/GetById",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedInAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getLead",
      "options": [
        {
          "name": "Get",
          "value": "getLead",
          "action": "Retrieve the details of a specific lead",
          "routing": {
            "request": {
              "url": "/lead/GetLead",
              "body": {
                "profileUrl": "={{$parameter[\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Add Tags",
          "value": "addTagsToLead",
          "action": "Add tags to a lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/lead/AddTags",
              "body": {
                "tags": "={{$parameter[\"tags\"]}}",
                "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
                "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Tags",
          "value": "getTagsForLead",
          "action": "Retrieve all tags for a lead",
          "routing": {
            "request": {
              "url": "/lead/GetTags",
              "body": {
                "profileUrl": "={{$parameter[\"profileUrl\"]}}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Replace Tags",
          "value": "replaceTags",
          "action": "Replace all existing tags for a lead",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/lead/ReplaceTags",
              "body": {
                "tags": "={{$parameter[\"tags\"]}}",
                "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
                "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
                "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Leads",
      "value": "addLeads",
      "action": "Add leads to campaign",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/AddLeadsToCampaign",
          "body": {
            "campaignId": "={{$parameter[\"campaignId\"]}}",
            "accountLeadPairs": "={{$parameter[\"accountLeadPairs\"].pair.map(pair => ({\n                                    linkedInAccountId: parseInt(pair.linkedInAccountId),\n                                    lead: {\n                                        ...pair.lead.details,\n                                        customUserFields: pair.lead.details.customUserFields?.field || []\n                                    }\n                                }))}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get",
      "value": "getById",
      "action": "Retrieve a campaign",
      "routing": {
        "request": {
          "qs": {
            "campaignId": "={{$parameter[\"campaignId\"]}}"
          },
          "url": "/campaign/GetById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Leads",
      "value": "getLeads",
      "action": "Retrieve leads from campaign",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/GetLeadsFromCampaign",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "timeTo": "={{$parameter[\"additionalFields\"][\"timeTo\"]}}",
            "timeFrom": "={{$parameter[\"additionalFields\"][\"timeFrom\"]}}",
            "campaignId": "={{$parameter[\"campaignId\"]}}",
            "timeFilter": "={{$parameter[\"additionalFields\"][\"timeFilter\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Retrieve all campaigns",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/GetAll",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
            "statuses": "={{$parameter[\"additionalFields\"][\"statuses\"]}}",
            "accountIds": "={{$parameter[\"additionalFields\"][\"accountIds\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many For Lead",
      "value": "getCampaignsForLead",
      "action": "Retrieve campaigns for a lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/campaign/GetCampaignsForLead",
          "body": {
            "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
            "profileUrl": "={{$parameter[\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Pause",
      "value": "pause",
      "action": "Pause a campaign",
      "routing": {
        "request": {
          "qs": {
            "campaignId": "={{$parameter[\"campaignId\"]}}"
          },
          "url": "/campaign/Pause",
          "body": {},
          "method": "POST"
        }
      }
    },
    {
      "name": "Resume",
      "value": "resume",
      "action": "Resume a campaign",
      "routing": {
        "request": {
          "qs": {
            "campaignId": "={{$parameter[\"campaignId\"]}}"
          },
          "url": "/campaign/Resume",
          "body": {},
          "method": "POST"
        }
      }
    },
    {
      "name": "Stop Lead",
      "value": "stopLeadInCampaign",
      "action": "Stop a lead in campaign",
      "routing": {
        "request": {
          "url": "/campaign/StopLeadInCampaign",
          "body": {
            "leadUrl": "={{$parameter[\"leadUrl\"]}}",
            "campaignId": "={{$parameter[\"campaignId\"]}}",
            "leadMemberId": "={{$parameter[\"leadMemberId\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Overall",
      "value": "getOverallStats",
      "action": "Retrieve overall statistics",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/stats/GetOverallStats",
          "body": {
            "endDate": "={{$parameter[\"additionalFields\"][\"endDate\"]}}",
            "startDate": "={{$parameter[\"additionalFields\"][\"startDate\"]}}",
            "accountIds": "={{$parameter[\"accountIds\"]}}",
            "campaignIds": "={{$parameter[\"campaignIds\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Create",
      "value": "createWebhook",
      "action": "Create a new webhook",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/webhooks/CreateWebhook",
          "body": {
            "eventType": "={{$parameter[\"eventType\"]}}",
            "webhookUrl": "={{$parameter[\"webhookUrl\"]}}",
            "campaignIds": "={{ $parameter[\"campaignIds\"] ?? [] }}",
            "webhookName": "={{$parameter[\"webhookName\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete",
      "value": "deleteWebhook",
      "action": "Delete a webhook",
      "routing": {
        "request": {
          "qs": {
            "webhookId": "={{$parameter[\"webhookId\"]}}"
          },
          "url": "/webhooks/DeleteWebhook",
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "getWebhookById",
      "action": "Retrieve a single webhook",
      "routing": {
        "request": {
          "qs": {
            "webhookId": "={{$parameter[\"webhookId\"]}}"
          },
          "url": "/webhooks/GetWebhookById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAllWebhooks",
      "action": "Retrieve all webhooks",
      "routing": {
        "request": {
          "url": "/webhooks/GetAllWebhooks",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Update",
      "value": "updateWebhook",
      "action": "Update an existing webhook",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "qs": {
            "webhookId": "={{$parameter[\"webhookId\"]}}"
          },
          "url": "/webhooks/UpdateWebhook",
          "body": {
            "isActive": "={{$parameter[\"additionalFields\"][\"isActive\"]}}",
            "eventType": "={{$parameter[\"additionalFields\"][\"eventType\"]}}",
            "webhookUrl": "={{$parameter[\"additionalFields\"][\"webhookUrl\"]}}",
            "campaignIds": "={{ ($parameter[\"additionalFields\"]?.[\"eventType\"] === \"EVERY_MESSAGE_REPLY_RECEIVED\" || $parameter[\"additionalFields\"]?.[\"eventType\"] === \"LEAD_TAG_UPDATED\") ? [] : $parameter[\"additionalFields\"]?.[\"campaignIds\"] ?? null }}",
            "webhookName": "={{$parameter[\"additionalFields\"][\"webhookName\"]}}"
          },
          "method": "PATCH"
        }
      }
    },
    {
      "name": "Get",
      "value": "getMyNetworkForSender",
      "action": "Retrieve list of network connections for a sender account",
      "routing": {
        "request": {
          "url": "/MyNetwork/GetMyNetworkForSender",
          "body": {
            "pageSize": "={{$parameter[\"pageSize\"]}}",
            "senderId": "={{$parameter[\"senderId\"]}}",
            "pageNumber": "={{$parameter[\"pageNumber\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Leads",
      "value": "addLeadsToList",
      "action": "Add leads to a list",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/AddLeadsToList",
          "body": {
            "leads": "={{$parameter[\"wrapperLeads\"][\"leads\"].map(lead => ({\n                                ...lead,\n                                customUserFields: lead.customUserFields?.field || []\n                            }))}}",
            "listId": "={{$parameter[\"listId\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Create Empty",
      "value": "createEmptyList",
      "action": "Create an empty list",
      "routing": {
        "request": {
          "url": "/list/CreateEmptyList",
          "body": {
            "name": "={{$parameter[\"listName\"]}}",
            "type": "={{$parameter[\"listType\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Delete Leads (By LinkedIn ID)",
      "value": "deleteLeadsFromList",
      "action": "Delete leads from a list by LinkedIn ID",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/DeleteLeadsFromList",
          "body": {
            "listId": "={{$parameter[\"listId\"]}}",
            "leadMemberIds": "={{$parameter[\"leadMemberIds\"]}}"
          },
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Delete Leads (By Profile URL)",
      "value": "deleteLeadsFromListByProfileUrl",
      "action": "Delete leads from a list by LinkedIn profile URL",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/DeleteLeadsFromListByProfileUrl",
          "body": {
            "listId": "={{$parameter[\"listId\"]}}",
            "profileUrls": "={{$parameter[\"leadProfileUrls\"]}}"
          },
          "method": "DELETE"
        }
      }
    },
    {
      "name": "Get",
      "value": "getListById",
      "action": "Retrieve a list",
      "routing": {
        "request": {
          "qs": {
            "listId": "={{$parameter[\"listId\"]}}"
          },
          "url": "/list/GetById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get Companies",
      "value": "getCompaniesFromList",
      "action": "Retrieve companies from a list",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetCompaniesFromList",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "listId": "={{$parameter[\"listId\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Leads",
      "value": "getLeadsFromList",
      "action": "Retrieve leads from a list",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetLeadsFromList",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "listId": "={{$parameter[\"listId\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
            "createdTo": "={{$parameter[\"additionalFields\"][\"createdTo\"]}}",
            "createdFrom": "={{$parameter[\"additionalFields\"][\"createdFrom\"]}}",
            "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
            "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Lists",
      "value": "getListsForLead",
      "action": "Retrieve lists associated with a specific lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetListsForLead",
          "body": {
            "email": "={{$parameter[\"additionalFields\"][\"email\"]}}",
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "linkedinId": "={{$parameter[\"additionalFields\"][\"linkedinId\"]}}",
            "profileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAllLists",
      "action": "Retrieve all lists",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/list/GetAll",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}",
            "listType": "={{$parameter[\"additionalFields\"][\"listType\"]}}",
            "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getConversationsV2",
      "action": "Retrieve all LinkedIn conversations",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/inbox/GetConversations",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "filters": {
              "seen": "={{$parameter[\"additionalFields\"][\"seen\"]}}",
              "campaignIds": "={{$parameter[\"additionalFields\"][\"campaignIds\"]}}",
              "searchString": "={{$parameter[\"additionalFields\"][\"searchString\"]}}",
              "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
              "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"leadProfileUrl\"]}}",
              "linkedInAccountIds": "={{$parameter[\"additionalFields\"][\"linkedInAccountIds\"]}}"
            }
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Chatroom",
      "value": "getChatroom",
      "action": "Retrieve a specific LinkedIn conversation and messages",
      "routing": {
        "request": {
          "url": "=/inbox/GetChatroom/{{$parameter[\"accountId\"]}}/{{$parameter[\"conversationId\"]}}",
          "method": "GET"
        }
      }
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send a message to a LinkedIn conversation",
      "routing": {
        "request": {
          "url": "/inbox/SendMessage",
          "body": {
            "message": "={{$parameter[\"message\"]}}",
            "subject": "={{$parameter[\"subject\"]}}",
            "conversationId": "={{$parameter[\"conversationId\"]}}",
            "linkedInAccountId": "={{$parameter[\"linkedInAccountId\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Many",
      "value": "getAllLinkedInAccounts",
      "action": "Retrieve a list of LinkedIn accounts",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/li_account/GetAll",
          "body": {
            "limit": "={{$parameter[\"limit\"]}}",
            "offset": "={{$parameter[\"offset\"]}}",
            "keyword": "={{$parameter[\"additionalFields\"][\"keyword\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get",
      "value": "getLinkedInAccountById",
      "action": "Retrieve a LinkedIn account",
      "routing": {
        "request": {
          "qs": {
            "accountId": "={{$parameter[\"accountId\"]}}"
          },
          "url": "/li_account/GetById",
          "method": "GET"
        }
      }
    },
    {
      "name": "Get",
      "value": "getLead",
      "action": "Retrieve the details of a specific lead",
      "routing": {
        "request": {
          "url": "/lead/GetLead",
          "body": {
            "profileUrl": "={{$parameter[\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Add Tags",
      "value": "addTagsToLead",
      "action": "Add tags to a lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/lead/AddTags",
          "body": {
            "tags": "={{$parameter[\"tags\"]}}",
            "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
            "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
            "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Get Tags",
      "value": "getTagsForLead",
      "action": "Retrieve all tags for a lead",
      "routing": {
        "request": {
          "url": "/lead/GetTags",
          "body": {
            "profileUrl": "={{$parameter[\"profileUrl\"]}}"
          },
          "method": "POST"
        }
      }
    },
    {
      "name": "Replace Tags",
      "value": "replaceTags",
      "action": "Replace all existing tags for a lead",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/lead/ReplaceTags",
          "body": {
            "tags": "={{$parameter[\"tags\"]}}",
            "leadLinkedInId": "={{$parameter[\"additionalFields\"][\"leadLinkedInId\"]}}",
            "leadProfileUrl": "={{$parameter[\"additionalFields\"][\"profileUrl\"]}}",
            "createTagIfNotExisting": "={{$parameter[\"createTagIfNotExisting\"]}}"
          },
          "method": "POST"
        }
      }
    }
  ]

npm_readme:
  #  n8n-nodes-heyreach
  This is a **HeyReach** Community Node for n8n, enabling seamless integration with **HeyReach** in your workflows.  
  **HeyReach** is a powerful LinkedIn automation platform designed to help you scale and optimize your outreach campaigns.  
  This project make it easy to manage LinkedIn campaigns and automate your outreach directly from your workflows.

  [License](#license)  
  [Installation](#installation)  
  [Available Operations](#available-operations)  
  [Credentials](#credentials)  
  [Resources](#resources)  
  [Folder Structure](#folder-structure)

  ## License
  This project is licensed under the **MIT License**. See the [LICENSE](LICENSE.md) file for details.

  ## Installation
  ### Community Nodes (Recommended)
  1. Navigate to **n8n** and sign in.
  2. Go to Settings > Community Nodes
  3. Click Install
  4. Enter `n8n-nodes-heyreach` and click Download
  5. Restart your n8n instance
  6. The HeyReach node will appear in your node palette
  --- 

  ### Local Setup 
  1. Clone the repository.
  2. Run `npm install` to install dependencies.
  3. Before running locally make sure `baseURL` which can be found in `HeyReach.node.ts` is set to dev or staging endpoints.
  4. Run `npm run build` each time you have change or the for the very first time.
  5. Reference the official [n8n documentation](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for running and testing custom nodes locally

  ## Credentials
  Steps to obtain **API KEY** needed for authentication.
  1. Go to **[HeyReach app](https://app.heyreach.io/)** and sign in.
  2. Navigate to the **Integrations** section.
  3. Find the **n8n** card and click **Connect Now**.
  4. Click **New API Key** to generate an API key.
  5. **Copy** the generated API key.
  6. In **n8n**, create a new **HeyReach connection**.
  7. **Paste** the API key into the connection settings and save it.  

  ✅ That’s it — your HeyReach account is now connected to n8n! 🎉

  ## Available Operations

  ### 🔧 Campaign Management

  - **Retrieve all campaigns** – Get a list of all campaigns.
  - **Retrieve a campaign** – Get details of a specific campaign.
  - **Resume a campaign** – Resume a paused campaign.
  - **Pause a campaign** – Pause an active campaign.
  - **Stop a lead in campaign** – Stop a specific lead within a campaign.
  - **Add leads to campaign** – Add one or multiple leads to a campaign.
  - **Retrieve leads from campaign** – Get leads from a campaign.
  - **Retrieve campaigns for a lead** – Find all campaigns that a specific lead belongs to.
  ---

  ### 💬 Inbox

  - **Retrieve all LinkedIn conversations** - Get a list of all LinkedIn conversations.
  - **Retrieve a specific LinkedIn conversation and messages** - Retrieve details of a particular LinkedIn conversation along with all associated messages.
  - **Send a message to a LinkedIn conversation** - Send a new message to a specific LinkedIn conversation.
  ---

  ### 🧑‍💼 Lead

  - **Retrieve the details of a specific lead** - Get detailed information about a specific lead.
  - **Add tags to a lead** - Add one or more tags to a lead to help categorize or filter.
  - **Retrieve all tags for a lead** - Retrieve all tags associated with a specific lead.
  - **Replace all existing tags for a lead** - Replace the current tags on a lead with a new set of tags.
  ---

  ### 🔗 LinkedIn Account Actions

  - **Retrieve a list of LinkedIn accounts** - Get all LinkedIn accounts connected to the system.
  - **Retrieve a LinkedIn account** - Get details of a specific LinkedIn account.
  ---

  ### 📋 List Actions

  - **Retrieve a list** - Get a specific list of leads.
  - **Retrieve all lists** - Get all available lead lists.
  - **Retrieve leads from a list** - Get all leads within a specific list.
  - **Delete leads from a list by LinkedIn ID** - Remove one or more leads from a list using their LinkedIn IDs.
  - **Delete leads from a list by LinkedIn profile URL** - Remove leads from a list using their LinkedIn profile URLs.
  - **Retrieve companies from a list** - Get all associated companies from a specific list.
  - **Add leads to a list** - Add one or more leads to a given list.
  - **Retrieve lists associated with a specific lead** - Get all lists that include a specific lead.
  - **Create an empty list** - Create a new list with no leads.
  ---

  ### 🌐 My Network Actions

  - **Retrieve list of network connections for a sender account** - Get all network connections associated with a given sender LinkedIn account.

  ---

  ### 📊 Stats Actions

  - **Retrieve overall statistics** - Get general statistics across the system, such as lead or campaign performance.

  ---

  ### 🪝 Webhook Actions

  - **Retrieve all webhooks** - Get a list of all configured webhooks.
  - **Retrieve a single webhook** - Get the details of a specific webhook.

  ## Resources

    [HeyReach API documentation](https://documenter.getpostman.com/view/23808049/2sA2xb5F75#61f5ef5d-5f31-4da9-b6af-ef0a6f128146)    

  ## Folder Structure

  - `nodes/HeyReach/operations/` – Contains folders based on the available features.  
    - Each feature has its own folder.
    - `operations` files specify the category of the endpoints and request params for each API call.
    - `fields` files describe the fields required for each request.
  - The starting point for the integration is `HeyReach.node.ts`.  
    - Any new operations should be registered in this file.

ai_documentation_summary:
  {"purpose":"Provides n8n workflow integration with the HeyReach API to manage LinkedIn outreach campaigns, leads, lists, conversations, accounts, stats, and webhooks from n8n.","capabilities":["Retrieve all campaigns","Retrieve a single campaign's details","Resume a campaign","Pause a campaign","Stop a specific lead within a campaign","Add one or multiple leads to a campaign","Retrieve leads from a campaign","Retrieve campaigns associated with a specific lead","Retrieve all LinkedIn conversations","Retrieve a specific LinkedIn conversation and its messages"],"authentication":"API key required","commonUseCases":["Automate creation and management of LinkedIn outreach campaigns (start/pause/resume/stop leads)","Add, tag, and sync leads between HeyReach and other systems or CRMs","Send and track LinkedIn messages as part of automated workflows","Query campaign and lead statistics to feed dashboards or trigger alerts","Manage lead lists (create lists, add/remove leads, retrieve list members) for segmentation"],"limitations":["Authentication is API key only (no OAuth2 mentioned)","Webhook functionality is read-only in the node (only retrieving webhooks and single webhook details; creation/update not listed)","No explicit rate limit, retry or bulk error-handling behavior documented in the README","Local development requires manually setting baseURL to dev/staging endpoints before running"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: wix-ci
author_github_url: https://github.com/wix-incubator/n8n-nodes-wix.git
npm_package_name: @wix/n8n-nodes-wix
npm_version: 1.0.4
community_fetched_at: 2026-02-19T14:41:52.530Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "order",
      "options": [
        {
          "name": "Order",
          "value": "order"
        },
        {
          "name": "Product",
          "value": "product"
        }
      ],
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        }
      },
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel an order",
          "routing": {
            "request": {
              "url": "=/ecom/v1/orders/{{$parameter.orderId}}/cancel",
              "method": "POST"
            }
          },
          "description": "Cancel an existing order"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an order",
          "routing": {
            "request": {
              "url": "/ecom/v1/orders",
              "method": "POST"
            }
          },
          "description": "Create a new order"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an order",
          "routing": {
            "request": {
              "url": "=/ecom/v1/orders/{{$parameter.orderId}}",
              "method": "GET"
            }
          },
          "description": "Get a single order by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many orders",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/ecom/v1/orders/search",
              "method": "POST"
            }
          },
          "description": "Query and list orders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an order",
          "routing": {
            "request": {
              "url": "=/ecom/v1/orders/{{$parameter.orderId}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a product",
          "routing": {
            "request": {
              "url": "/stores/v3/products-with-inventory",
              "method": "POST"
            }
          },
          "description": "Create a new product with inventory"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a product",
          "routing": {
            "request": {
              "url": "=/stores/v3/products/{{$parameter.productId}}",
              "method": "DELETE"
            }
          },
          "description": "Delete an existing product"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a product",
          "routing": {
            "request": {
              "url": "=/stores/v3/products/{{$parameter.productId}}",
              "method": "GET"
            }
          },
          "description": "Get a single product by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many products",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/stores/v3/products/search",
              "method": "POST"
            }
          },
          "description": "Query and list products"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a product",
          "routing": {
            "request": {
              "url": "=/stores/v3/products-with-inventory/{{$parameter.productId}}",
              "method": "PATCH"
            }
          },
          "description": "Update an existing product with inventory"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel an order",
      "routing": {
        "request": {
          "url": "=/ecom/v1/orders/{{$parameter.orderId}}/cancel",
          "method": "POST"
        }
      },
      "description": "Cancel an existing order"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an order",
      "routing": {
        "request": {
          "url": "/ecom/v1/orders",
          "method": "POST"
        }
      },
      "description": "Create a new order"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an order",
      "routing": {
        "request": {
          "url": "=/ecom/v1/orders/{{$parameter.orderId}}",
          "method": "GET"
        }
      },
      "description": "Get a single order by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many orders",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/ecom/v1/orders/search",
          "method": "POST"
        }
      },
      "description": "Query and list orders"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an order",
      "routing": {
        "request": {
          "url": "=/ecom/v1/orders/{{$parameter.orderId}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing order"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a product",
      "routing": {
        "request": {
          "url": "/stores/v3/products-with-inventory",
          "method": "POST"
        }
      },
      "description": "Create a new product with inventory"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a product",
      "routing": {
        "request": {
          "url": "=/stores/v3/products/{{$parameter.productId}}",
          "method": "DELETE"
        }
      },
      "description": "Delete an existing product"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a product",
      "routing": {
        "request": {
          "url": "=/stores/v3/products/{{$parameter.productId}}",
          "method": "GET"
        }
      },
      "description": "Get a single product by ID"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many products",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/stores/v3/products/search",
          "method": "POST"
        }
      },
      "description": "Query and list products"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a product",
      "routing": {
        "request": {
          "url": "=/stores/v3/products-with-inventory/{{$parameter.productId}}",
          "method": "PATCH"
        }
      },
      "description": "Update an existing product with inventory"
    }
  ]

npm_readme:
  # @wix/n8n-nodes-wix

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

  [Wix](https://www.wix.com/) is a leading cloud-based website development platform that enables users to create professional websites, online stores, bookings, and more. This node allows you to automate workflows by integrating with Wix's eCommerce, CRM, and other services.

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

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

  ## Installation

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

  ## Operations

  This node provides actions for managing Products and Orders in your Wix store.

  ### Product

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Create a new product with inventory |
  | **Delete** | Delete an existing product |
  | **Get** | Get a single product by ID |
  | **Get Many** | Query and list products |
  | **Update** | Update an existing product with inventory |

  > **Note**: Product operations use **Catalog V3** and are not compatible with Catalog V1 sites.

  📚 [Wix Stores Products API Documentation](https://dev.wix.com/docs/rest/business-solutions/stores/catalog/products/introduction)

  ### Order

  | Operation | Description |
  |-----------|-------------|
  | **Cancel** | Cancel an existing order |
  | **Create** | Create a new order |
  | **Get** | Get a single order by ID |
  | **Get Many** | Query and list orders |
  | **Update** | Update an existing order |

  📚 [Wix eCommerce Orders API Documentation](https://dev.wix.com/docs/rest/business-solutions/e-commerce/orders/order-object)

  ## Triggers

  The **Wix Trigger** node allows you to start workflows based on events happening in your Wix site. Triggers are powered by [Wix Automations](https://dev.wix.com/docs/rest/business-management/automations/automations/introduction).

  ### Available Triggers

  <details>
  <summary><strong>Back in Stock</strong></summary>

  - Back in stock request created
  - Product back in stock

  </details>

  <details>
  <summary><strong>Bookings</strong></summary>

  - Appointment request approved
  - Appointment request declined
  - Appointment requested
  - Appointment or class updated
  - Booking canceled
  - Client checks in
  - Client checked in X times
  - Client marked as "no-show"
  - Course updated
  - Failed to apply booking fee
  - Failed to collect applied booking fees
  - No sessions left
  - Session booked
  - Session double-booked
  - Session ends
  - Session starts

  </details>

  <details>
  <summary><strong>Blog</strong></summary>

  - Blog post liked
  - Blog post new comment
  - New blog post published

  </details>

  <details>
  <summary><strong>Chat & Inbox</strong></summary>

  - Chat message received
  - Chat message sent
  - Message received (Wix Chat or Inbox preset email)
  - Pre-chat form submitted
  - Visitor on site

  </details>

  <details>
  <summary><strong>CMS</strong></summary>

  - CMS form submitted

  </details>

  <details>
  <summary><strong>Contacts & Segments</strong></summary>

  - Contact Assigned
  - Contact enters segment
  - Contact leaves segment
  - Label added to contact
  - Label removed from contact
  - New contact created

  </details>

  <details>
  <summary><strong>Donations</strong></summary>

  - Donation is made
  - Recurring donation is canceled
  - Recurring donation is charged

  </details>

  <details>
  <summary><strong>Events & Tickets</strong></summary>

  - Daily report
  - Daily RSVP report
  - Event canceled
  - Event ends
  - Event published
  - Event reminder date has arrived
  - Event starts
  - Guest checked in
  - Guest registers to waitlist
  - Guest RSVPd NO email
  - Guest RSVPd YES email
  - Guest RSVPs
  - New spot opened for waitlist guests
  - Order confirmed but ticket couldn't be generated
  - Order placed
  - RSVP confirmed
  - Ticket order email
  - Ticket ordered
  - Ticket sale ended
  - Ticket sale started

  </details>

  <details>
  <summary><strong>File Share</strong></summary>

  - Folder access given
  - Folder access requested

  </details>

  <details>
  <summary><strong>Forms</strong></summary>

  - Form submitted

  </details>

  <details>
  <summary><strong>Forum</strong></summary>

  - Forum comment deleted
  - Forum comment published
  - Forum post published
  - Reacted to Forum comment
  - Reacted to Forum post
  - Removed reaction from Forum comment
  - Removed reaction from Forum post

  </details>

  <details>
  <summary><strong>Groups</strong></summary>

  - Group create request declined
  - Group has new member generic update
  - Group Updated
  - Member comments on a post
  - Member creates a post
  - Member invited to group
  - Member joins a group
  - Member leaves a group
  - Member mentioned someone
  - Member mentions someone
  - Member pays for a group
  - Member reacts to a comment
  - Member reacts to a post
  - Member removed as payment plan expired
  - Member request to join a group approved
  - Member request to join a group declined
  - Member requests to create a group
  - Member requests to join a group
  - Member role updated
  - Members create posts
  - Members join a group
  - New group created
  - Person invited to group
  - Reminder to create group
  - Reminder to invite members
  - Someone you follow creates a post
  - Weekly Digest

  </details>

  <details>
  <summary><strong>Invoices</strong></summary>

  - Invoice overdue
  - Invoice paid
  - Invoice payment received
  - Invoice sent

  </details>

  <details>
  <summary><strong>Loyalty Program</strong></summary>

  - Customer earns points
  - Customer enters tier
  - Customer has enough points for rewards
  - Points balance adjusted manually
  - Points expire in 14 days
  - Social media profile followed

  </details>

  <details>
  <summary><strong>Members</strong></summary>

  - Member approved
  - Member blocked
  - Member deleted
  - Member email confirmation required
  - Member logs in
  - Set contact as member
  - Site member asks to reset password
  - Visitor signs up to your site

  </details>

  <details>
  <summary><strong>Online Programs</strong></summary>

  - Certificate available to download
  - Member invited to join a program
  - Member joins a program
  - Member pays for a program
  - Member's join request approved
  - Member's join request declined
  - Offline payment declined
  - Offline program payment received
  - Participant access denied
  - Participant completes a program
  - Participant completes a step
  - Participant data exported
  - Participant leaves a program
  - Participant manually added to program
  - Payment failed
  - Program end date has passed
  - Program ended without all steps completed
  - Program join request received
  - Reminder to complete scheduled steps
  - Visitor access denied

  </details>

  <details>
  <summary><strong>Pay Links</strong></summary>

  - Payment received
  - Send a pay link

  </details>

  <details>
  <summary><strong>Portfolio</strong></summary>

  - New project created

  </details>

  <details>
  <summary><strong>Price Quotes</strong></summary>

  - Price quote accepted
  - Price quote expired
  - Price quote sent

  </details>

  <details>
  <summary><strong>Pricing Plans</strong></summary>

  - Plan canceled
  - Plan ordered

  </details>

  <details>
  <summary><strong>Proposals</strong></summary>

  - Proposal accepted
  - Proposal sent

  </details>

  <details>
  <summary><strong>Recurring Invoices</strong></summary>

  - Recurring payment canceled
  - Recurring payment starts

  </details>

  <details>
  <summary><strong>Restaurants</strong></summary>

  - Delivery order ready
  - Future order due by
  - Order accepted
  - Order canceled
  - Order created
  - Order edited
  - Order fulfilled
  - Order out for Delivery
  - Pickup order ready
  - Restaurant order placed

  </details>

  <details>
  <summary><strong>Reviews</strong></summary>

  - Review created
  - Review deleted
  - Review moderation status changed
  - Review request created

  </details>

  <details>
  <summary><strong>Stores (eCommerce)</strong></summary>

  - Checkout abandoned
  - Credit card is charged
  - Order placed
  - Payment Added to Order
  - Store order placed

  </details>

  <details>
  <summary><strong>Subscriptions</strong></summary>

  - Customer's payment method updated
  - Payment fails - grace period starts
  - Payment successful - grace period ends
  - Subscription's billing date updated
  - Subscription's item price updated

  </details>

  <details>
  <summary><strong>Table Reservations</strong></summary>

  - Table reservation added manually
  - Table reservation canceled
  - Table reservation starts
  - Table reservation time updated
  - Table reserved by guest

  </details>

  <details>
  <summary><strong>Tasks</strong></summary>

  - Task overdue

  </details>

  <details>
  <summary><strong>Workflows</strong></summary>

  - Card added or moved

  </details>

  📚 [Wix Automations API Documentation](https://dev.wix.com/docs/rest/business-management/automations/automations/introduction)

  ## Credentials

  To use this node, you need to set up Wix API credentials:

  ### Prerequisites

  1. A [Wix](https://www.wix.com/) account with a published website

  ### Setup

  1. Go to the [API Keys Manager](https://manage.wix.com/account/api-keys) to create a new API key
  2. Assign the appropriate permissions for the APIs you want to access
  3. Copy your API key and store it securely
  4. Get your **Site ID** from your site's dashboard URL (it appears after `/dashboard/` in the URL)
  5. In n8n, create new credentials for **Wix API** and enter:
     - **API Key**: Your Wix API key
     - **Site ID**: Your Wix site ID

  > **Important**: Store your API keys securely and use them only in server-side code.

  📚 [How to Generate an API Key](https://dev.wix.com/docs/go-headless/develop-your-project/admin-operations/generate-an-api-key)

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Wix REST API Documentation](https://dev.wix.com/docs/api-reference)
  - [Wix Developer Center](https://dev.wix.com/)
  - [Wix Stores API](https://dev.wix.com/docs/rest/business-solutions/stores/catalog/products/introduction)
  - [Wix eCommerce Orders API](https://dev.wix.com/docs/rest/business-solutions/e-commerce/orders/order-object)

ai_documentation_summary:
  {"purpose":"Integrate n8n workflows with Wix to manage store products and orders and to start workflows from Wix site events via Wix Automations.","capabilities":["Products: Create product (with inventory)","Products: Delete product","Products: Get product by ID","Products: Get Many / list/query products","Products: Update product (with inventory) — uses Catalog V3","Orders: Create order","Orders: Cancel order","Orders: Get order by ID","Orders: Get Many / list/query orders","Orders: Update order"],"authentication":"Not specified in README (see 'Credentials' section)","commonUseCases":["Automate product catalog management (create/update/delete products) between systems and Wix Stores","Automatically create, update, or cancel orders from external systems or internal workflows","Trigger workflows on Wix site events (e.g., booking events, form submissions, new contacts, orders placed) to send notifications, update CRMs, or kick off fulfillment processes","Sync inventory and order status between Wix and other services (ERP, fulfillment, accounting)","React to customer activity (members, loyalty, donations) to update segments or trigger marketing automations"],"limitations":["Product operations use Catalog V3 and are not compatible with Catalog V1 sites","Triggers rely on Wix Automations — Wix-side automation configuration may be required","README does not specify authentication method or credentials details","README focuses on Products, Orders, and Automations; other Wix APIs/resources are not documented in this README"],"relatedNodes":["Wix Trigger"]}


node_type: @simplesat/n8n-nodes-simplesat.simplesat
package_name: @simplesat/n8n-nodes-simplesat
display_name: Simplesat
description: Connect to Simplesat API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: simplesat-integrations
author_github_url: https://github.com/simplesat/simplesat-n8n-node.git
npm_package_name: @simplesat/n8n-nodes-simplesat
npm_version: 1.0.4
community_fetched_at: 2026-02-19T14:41:52.531Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "survey",
      "options": [
        {
          "name": "Answer",
          "value": "answer"
        },
        {
          "name": "Customer",
          "value": "customer"
        },
        {
          "name": "Question",
          "value": "question"
        },
        {
          "name": "Response",
          "value": "response"
        },
        {
          "name": "Survey",
          "value": "survey"
        },
        {
          "name": "Team Member",
          "value": "teamMember"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List surveys",
          "description": "List surveys"
        },
        {
          "name": "Send by Email",
          "value": "sendByEmail",
          "action": "Send survey by email",
          "description": "Send survey by email"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "survey"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List questions",
          "description": "List questions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "question"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get response by ID",
          "description": "Get response by ID"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search responses",
          "description": "Search responses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "response"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get answer by ID",
          "description": "Get answer by ID"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search answers",
          "description": "Search answers"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "answer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List customers",
          "description": "List customers"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get customer by ID",
          "description": "Get customer by ID"
        },
        {
          "name": "Create or Update",
          "value": "createOrUpdate",
          "action": "Create or update customer by email",
          "description": "Create or update customer by email"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update customer by ID",
          "description": "Update customer by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get team member by ID",
          "description": "Get team member by ID"
        },
        {
          "name": "Create or Update",
          "value": "createOrUpdate",
          "action": "Create or update team member",
          "description": "Create or update team member"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List surveys",
      "description": "List surveys"
    },
    {
      "name": "Send by Email",
      "value": "sendByEmail",
      "action": "Send survey by email",
      "description": "Send survey by email"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List questions",
      "description": "List questions"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get response by ID",
      "description": "Get response by ID"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search responses",
      "description": "Search responses"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get answer by ID",
      "description": "Get answer by ID"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search answers",
      "description": "Search answers"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List customers",
      "description": "List customers"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get customer by ID",
      "description": "Get customer by ID"
    },
    {
      "name": "Create or Update",
      "value": "createOrUpdate",
      "action": "Create or update customer by email",
      "description": "Create or update customer by email"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update customer by ID",
      "description": "Update customer by ID"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get team member by ID",
      "description": "Get team member by ID"
    },
    {
      "name": "Create or Update",
      "value": "createOrUpdate",
      "action": "Create or update team member",
      "description": "Create or update team member"
    }
  ]

npm_readme:
  # Simplesat's n8n node

  This is an n8n community node. It lets you connect to the Simplesat API in your n8n workflows to manage surveys, responses, answers, customers, and team members.

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

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

  ## Installation

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

  ## Operations

  ### Surveys

  - **List** - Retrieve all surveys with pagination
  - **Send by Email** - Send a survey to a customer via email with optional team member and ticket information

  ### Questions

  - **List** - Get questions with filtering by survey ID and metric type (NPS, CSAT, 5-Star, CES, Custom)

  ### Responses

  - **Get** - Retrieve a specific response by ID
  - **Search** - Advanced search with date ranges, filters, and pagination

  ### Answers

  - **Get** - Retrieve a specific answer by ID
  - **Search** - Advanced search with date ranges, filters, and pagination

  ### Customers

  - **List** - Get customers with date filtering and subscription status
  - **Get** - Retrieve a specific customer by ID
  - **Create or Update** - Create new customers or update existing ones

  ### Team Members

  - **Get** - Retrieve a specific team member by ID
  - **Create or Update** - Create new team members or update existing ones

  ## Credentials

  To use this node, you need a Simplesat account with an API key:

  1. Log into your Simplesat account
  2. Navigate to [Workspace Settings](https://app.simplesat.io/settings/workspace/)
  3. Copy your API key
  4. Use the API key in the Simplesat API credentials in n8n

  The node uses the `X-Simplesat-Token` header for authentication.

  ## Usage

  For detailed usage information, API endpoints, and examples, please refer to the [Simplesat API documentation](https://developer.simplesat.io/api).

  ## Resources

  - [Simplesat n8n help guide](https://help.simplesat.io/en/articles/12679403-simplesat-s-n8n-community-node)
  - [Simplesat API Documentation](https://developer.simplesat.io/api)
  - [Simplesat Website](https://simplesat.io/)
  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)

ai_documentation_summary:
  {"purpose":"Connect n8n workflows to the Simplesat API to manage surveys, questions, responses, answers, customers, and team members, and to send surveys via email.","capabilities":["List surveys with pagination","Send survey by email (optionally include team member and ticket info)","List questions (filter by survey ID and metric type: NPS, CSAT, 5-Star, CES, Custom)","Get a response by ID","Search responses with date ranges, filters, and pagination","Get an answer by ID","Search answers with date ranges, filters, and pagination","List customers with date filtering and subscription status","Get a customer by ID","Create or update customers"],"authentication":"API key required — provide your Simplesat API key in the X-Simplesat-Token header","commonUseCases":["Send targeted surveys to customers via email from automated workflows","Retrieve and analyze survey responses and answers for reporting or triggers","Sync customer records between Simplesat and other systems","Manage team members programmatically from automation workflows","Perform advanced searches on responses/answers using date ranges and filters"],"limitations":[],"relatedNodes":[]}


node_type: @markupai/n8n-nodes-markupai.markupai
package_name: @markupai/n8n-nodes-markupai
display_name: Markup AI
description: Markup AI Content Checker
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: abhijeet_narvekar
author_github_url: https://github.com/markupai/n8n-app.git
npm_package_name: @markupai/n8n-nodes-markupai
npm_version: 0.2.5
community_fetched_at: 2026-02-19T14:41:52.531Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "content",
      "options": [
        {
          "name": "Content",
          "value": "content"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "styleCheck",
      "options": [
        {
          "name": "Style Check",
          "value": "styleCheck",
          "action": "Content style check",
          "description": "Check the content against your style and branding guidelines"
        },
        {
          "name": "Style Rewrite",
          "value": "styleRewrite",
          "action": "Content style rewrite",
          "description": "Rewrite the content against your style and branding guidelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "content"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Style Check",
      "value": "styleCheck",
      "action": "Content style check",
      "description": "Check the content against your style and branding guidelines"
    },
    {
      "name": "Style Rewrite",
      "value": "styleRewrite",
      "action": "Content style rewrite",
      "description": "Rewrite the content against your style and branding guidelines"
    }
  ]

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

  # n8n-nodes-markupai

  This is an n8n community node that integrates [Markup AI](https://markup.ai/) — a content guardian platform for ensuring brand-compliant, consistent, and engaging content.

  [Markup AI](https://markup.ai/) provides AI-powered content analysis, suggestions, and rewrites based on your organization's brand standards. Integrate content quality checks and automated improvements directly into your n8n workflows.

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

  ## Installation

  ### Community Nodes (Recommended)

  1. In n8n, go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `@markupai/n8n-nodes-markupai` in the package field
  4. Click **Install**

  For detailed instructions, visit the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).

  ### Manual Installation

  To install manually, run the following command in your n8n installation directory:

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

  ## Operations

  The Markup AI node supports the following operations:

  ### Style Check

  Analyze content for quality issues without making changes.

  **Returns:**

  - Quality, clarity, and grammar scores
  - Style guide compliance metrics
  - Tone analysis
  - Readability metrics
  - Detailed list of identified issues

  ### Style Rewrite

  Automatically rewrite and improve content using AI.

  **Returns:**

  - Improved content version
  - Before/after quality scores
  - Score improvements
  - Comparison metrics

  ## Credentials

  To use this node, you'll need a Markup AI API account.

  ### Setting up credentials:

  1. Sign up for a [Markup AI account](https://markup.ai/#early-access)
  2. Get your API key from your account settings
  3. In n8n, add new credentials:
     - Go to **Credentials** > **New**
     - Search for **Markup AI API**
     - Enter your API key
     - Click **Save**

  ## Usage

  ### Configuration Options

  All operations support the following options:

  | Option                  | Type    | Default | Description                                 |
  | ----------------------- | ------- | ------- | ------------------------------------------- |
  | **Style Guide**         | String  | -       | The style guide to apply                    |
  | **Dialect**             | String  | -       | The dialect to be used for content analysis |
  | **Tone**                | String  | -       | The desired tone for content (optional)     |
  | **Wait for Completion** | Boolean | `true`  | Auto-poll for results                       |
  | **Polling Timeout**     | Number  | `60000` | Maximum wait time in milliseconds           |
  | **Polling Interval**    | Number  | `2000`  | Polling frequency in milliseconds           |

  ### Example Workflows

  #### Content Quality Gate

  1. Trigger: New document added to Google Drive
  2. **Markup AI** → Style Check: Analyze document content
  3. Condition: Check if quality score meets threshold
  4. If passed: Approve and publish
  5. If failed: Send notification to content team

  #### Automated Content Improvement

  1. Trigger: Webhook receives content for publication
  2. **Markup AI** → Style Check: Analyze initial quality
  3. **Markup AI** → Style Rewrite: Improve content
  4. Send improved version to CMS for publication

  ### Common Use Cases

  - **Content Compliance & Consistency**: Ensure all company content — from blogs and web pages to documentation and marketing materials — aligns with brand and style guidelines while maintaining a consistent tone.

  - **Automated Quality Gates**: Ensure content meets standards automatically before publication. Monitor content changes in real-time and prevent non-compliant content from going live.

  - **Quality at the Source**: Create and maintain high-quality content right where it's produced. Proactively monitor consistency and compliance across CMS platforms like Google Drive and beyond.

  - **Early Issue Detection**: Automatically identify and flag potential issues or non-compliant content within workflows before they become problems.

  - **Streamlined Content Compliance**: Minimize manual reviews by automating content compliance checks and review processes throughout your content lifecycle.

  - **Actionable Alerts**: Go beyond flagging issues — automatically trigger notifications to stakeholders within workflows, transforming compliance checks into immediate corrective actions.

  ## Resources

  - [Markup AI Documentation](https://docs.markup.ai/)
  - [Markup AI Website](https://markup.ai/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [n8n Documentation](https://docs.n8n.io/)
  - [GitHub Repository](https://github.com/markupai/n8n-app)

  ## Development

  Contributions are welcome! This section is for developers who want to contribute to this community node or set up a local development environment.

  ### Prerequisites

  - Node.js >= 24
  - npm
  - Basic familiarity with n8n and TypeScript

  ### Quick Setup (Recommended)

  After cloning this repository, run the automated setup script:

  ```bash
  npm run setup
  ```

  This will:

  - Install dependencies (including n8n as a devDependency)
  - Build the code and create the dist folder
  - Link the package from the dist folder (avoiding node_modules conflicts)
  - Configure the n8n custom directory
  - Fix n8n config file permissions
  - Link the package for local development

  Then start n8n:

  ```bash
  npm start
  ```

  This uses the local n8n installation from devDependencies — no global installation needed!

  **Note:** The setup links from the `dist` folder rather than the project root. This ensures that n8n only loads the compiled code without development dependencies, preventing module loading conflicts.

  ### Environment Configuration

  For development, you can configure the API base URL using environment variables:

  **Option 1: Using a `.env` file**

  1. Copy the example environment file:

     ```bash
     cp .env.example .env
     ```

  2. Edit `.env` and set your development API URL:

     ```bash
     MARKUP_AI_BASE_URL=https://api.dev.markup.ai/
     ```

  3. Start n8n (it will automatically load the `.env` file):
     ```bash
     npm start
     ```

  **Option 2: Export environment variable directly**

  ```bash
  export MARKUP_AI_BASE_URL=https://api.dev.markup.ai/
  npm start
  ```

  **Note:** By default, the node uses the production API URL (`https://api.markup.ai/`). The environment variable is only needed for development or custom API endpoints. n8n automatically loads `.env` files from the current working directory, so no additional tools are required.

  ### Manual Setup

  If you prefer to set things up manually:

  1. Install dependencies after cloning this repository

  ```bash
  npm install
  ```

  2. Build the code

  ```bash
  npm run build
  ```

  3. Link the build from the dist folder

  ```bash
  cd dist
  npm link
  cd ..
  ```

  4. Create a `custom` directory inside n8n if it does not exist

  ```bash
  # In ~/.n8n directory run
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom
  npm init -y
  ```

  5. Link the custom folder to the build

  ```bash
  npm link @markupai/n8n-nodes-markupai
  ```

  6. Fix n8n config file permissions (if needed)

  ```bash
  chmod 600 ~/.n8n/config
  ```

  7. Start n8n

  ```bash
  # Back in your project directory
  npm start
  ```

  You should now see Markup AI in the list of nodes. Happy hacking!

  ### Making Changes

  1. Make your changes in the `nodes/` or `credentials/` directories
  2. Build the code: `npm run build`
  3. Test in n8n (refresh the browser if n8n is already running)
  4. Run tests: `npm test`
  5. Run linter: `npm run lint:check`

  ### Testing

  Run the test suite:

  ```bash
  npm test
  ```

  Run tests with coverage:

  ```bash
  npm run test:coverage
  ```

  Run tests in watch mode during development:

  ```bash
  npm run test:watch
  ```

  ### Troubleshooting

  **Module loading errors**: If you see errors like `require(...).index is not a constructor`, make sure you've linked from the `dist` folder, not the project root. To fix:

  ```bash
  npm run cleanup  # Remove old links
  npm run setup    # Set up correctly
  ```

  **Permissions errors**: If you see warnings about file permissions, run `chmod 600 ~/.n8n/config` to fix them.

  **Resetting the development environment**: If you need to start fresh:

  ```bash
  npm run cleanup  # Removes all npm links
  npm run setup    # Sets up from scratch
  ```

  **Debugging setup issues**: If you encounter problems during setup, enable debug mode for detailed output:

  ```bash
  DEBUG=1 npm run setup    # Verbose setup with debug information
  DEBUG=1 npm run cleanup  # Verbose cleanup with debug information
  ```

  This will show:

  - Exact commands being executed
  - Full command output (both stdout and stderr)
  - Detailed error information when commands fail
  - Working directory for each command

  ## License

  [MIT](LICENSE)

  ## Support

  - For general n8n questions: [n8n Community Forum](https://community.n8n.io/)
  - For Markup AI API questions: [Markup AI Support](https://community.markup.ai/c/markup-ai-integrations/6)

  ---

  Made with ❤️ by the Markup AI team

ai_documentation_summary:
  {"purpose":"Integrates Markup AI into n8n to analyze, validate, and automatically rewrite content so it meets brand style, quality, and tone standards within automated workflows.","capabilities":["Style Check: analyze content and return quality, clarity, and grammar scores; style guide compliance metrics; tone analysis; readability metrics; and a detailed list of identified issues","Style Rewrite: AI-driven content rewrite that returns the improved content, before/after quality scores, score improvements, and comparison metrics","Configure analysis by Style Guide, Dialect, and desired Tone","Synchronous handling via 'Wait for Completion' with automatic polling (configurable polling interval and timeout)","Outputs structured metrics suitable for workflow conditions, branching, and downstream automation"],"authentication":"API key required (Markup AI API key configured in n8n Credentials -> Markup AI API)","commonUseCases":["Content compliance and consistency checks across blogs, docs, marketing copy, and web pages","Automated quality gates to block or approve content before publication","Automated content improvement (rewrite) prior to sending to CMS or publishing","Real-time monitoring and early detection of style or compliance issues","Streamlining review workflows to reduce manual reviews"],"limitations":["Only two operations are provided (Style Check and Style Rewrite) — no other Markup AI endpoints are exposed in the node","Requires an active Markup AI account and API key","Long-running requests are handled via polling; workflows may need polling timeout/interval adjustments (defaults: timeout 60000 ms, interval 2000 ms)","Distributed as an n8n community node (install via Community Nodes or npm) which may require community node setup"],"relatedNodes":["Google Drive (used in example workflows to trigger on new documents)","Webhook (used to receive content for publication)","CMS nodes (e.g., WordPress) or generic HTTP Request nodes to send improved content to publishing systems","Notification nodes (Email, Slack) for alerts/notifications"]}


node_type: @firefliesai/n8n-nodes-fireflies.fireflies
package_name: @firefliesai/n8n-nodes-fireflies
display_name: Fireflies
description: Interact with the Fireflies.ai API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: sudotong
author_github_url: https://github.com/firefliesai/n8n-nodes-fireflies.git
npm_package_name: @firefliesai/n8n-nodes-fireflies
npm_version: 2.1.0
community_fetched_at: 2026-02-19T14:41:52.531Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "transcript",
      "options": [
        {
          "name": "AI App",
          "value": "aiApp"
        },
        {
          "name": "AskFred",
          "value": "askfred"
        },
        {
          "name": "Audio",
          "value": "audio"
        },
        {
          "name": "Transcript",
          "value": "transcript"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAIAppOutputs",
      "options": [
        {
          "name": "Get Outputs",
          "value": "getAIAppOutputs",
          "action": "Get outputs of an AI app",
          "description": "Retrieve AI app outputs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "aiApp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getThreads",
      "options": [
        {
          "name": "Continue Thread",
          "value": "continueThread",
          "action": "Continue an existing ask fred thread",
          "description": "Continue an existing conversation thread with a follow-up question"
        },
        {
          "name": "Create Thread",
          "value": "createThread",
          "action": "Create a new ask fred thread",
          "description": "Create a new conversation thread with a question about meetings"
        },
        {
          "name": "Delete Thread",
          "value": "deleteThread",
          "action": "Delete an ask fred thread",
          "description": "Delete a conversation thread and all its messages"
        },
        {
          "name": "Get Thread",
          "value": "getThread",
          "action": "Get an ask fred thread",
          "description": "Get a specific thread with all its messages"
        },
        {
          "name": "Get Threads",
          "value": "getThreads",
          "action": "Get ask fred threads",
          "description": "Get a list of all conversation threads"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "askfred"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadAudio",
      "options": [
        {
          "name": "Upload",
          "value": "uploadAudio",
          "action": "Upload audio",
          "description": "Upload an audio file for transcription"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "audio"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getTranscript",
      "options": [
        {
          "name": "Get",
          "value": "getTranscript",
          "action": "Get a transcript",
          "description": "Get transcript details"
        },
        {
          "name": "Get Analytics",
          "value": "getTranscriptAnalytics",
          "action": "Get analytics of a transcript",
          "description": "Get analytics for a transcript"
        },
        {
          "name": "Get Audio URL",
          "value": "getTranscriptAudioUrl",
          "action": "Get audio URL of a transcript",
          "description": "Get the audio URL for a transcript"
        },
        {
          "name": "Get List",
          "value": "getTranscriptsList",
          "action": "Get a list of transcripts",
          "description": "Get a list of transcripts with optional filters"
        },
        {
          "name": "Get Summary",
          "value": "getTranscriptSummary",
          "action": "Get a summary of a transcript",
          "description": "Get a summary of a transcript"
        },
        {
          "name": "Get Video URL",
          "value": "getTranscriptVideoUrl",
          "action": "Get video URL of a transcript",
          "description": "Get the video URL for a transcript"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcript"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrentUser",
      "options": [
        {
          "name": "Get Current",
          "value": "getCurrentUser",
          "action": "Get current user",
          "description": "Get information about the current user"
        },
        {
          "name": "Get List",
          "value": "getUsers",
          "action": "Get a list of users",
          "description": "Get a list of users"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Outputs",
      "value": "getAIAppOutputs",
      "action": "Get outputs of an AI app",
      "description": "Retrieve AI app outputs"
    },
    {
      "name": "Continue Thread",
      "value": "continueThread",
      "action": "Continue an existing ask fred thread",
      "description": "Continue an existing conversation thread with a follow-up question"
    },
    {
      "name": "Create Thread",
      "value": "createThread",
      "action": "Create a new ask fred thread",
      "description": "Create a new conversation thread with a question about meetings"
    },
    {
      "name": "Delete Thread",
      "value": "deleteThread",
      "action": "Delete an ask fred thread",
      "description": "Delete a conversation thread and all its messages"
    },
    {
      "name": "Get Thread",
      "value": "getThread",
      "action": "Get an ask fred thread",
      "description": "Get a specific thread with all its messages"
    },
    {
      "name": "Get Threads",
      "value": "getThreads",
      "action": "Get ask fred threads",
      "description": "Get a list of all conversation threads"
    },
    {
      "name": "Upload",
      "value": "uploadAudio",
      "action": "Upload audio",
      "description": "Upload an audio file for transcription"
    },
    {
      "name": "Get",
      "value": "getTranscript",
      "action": "Get a transcript",
      "description": "Get transcript details"
    },
    {
      "name": "Get Analytics",
      "value": "getTranscriptAnalytics",
      "action": "Get analytics of a transcript",
      "description": "Get analytics for a transcript"
    },
    {
      "name": "Get Audio URL",
      "value": "getTranscriptAudioUrl",
      "action": "Get audio URL of a transcript",
      "description": "Get the audio URL for a transcript"
    },
    {
      "name": "Get List",
      "value": "getTranscriptsList",
      "action": "Get a list of transcripts",
      "description": "Get a list of transcripts with optional filters"
    },
    {
      "name": "Get Summary",
      "value": "getTranscriptSummary",
      "action": "Get a summary of a transcript",
      "description": "Get a summary of a transcript"
    },
    {
      "name": "Get Video URL",
      "value": "getTranscriptVideoUrl",
      "action": "Get video URL of a transcript",
      "description": "Get the video URL for a transcript"
    },
    {
      "name": "Get Current",
      "value": "getCurrentUser",
      "action": "Get current user",
      "description": "Get information about the current user"
    },
    {
      "name": "Get List",
      "value": "getUsers",
      "action": "Get a list of users",
      "description": "Get a list of users"
    }
  ]

npm_readme:
  # n8n-nodes-fireflies

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

  Fireflies is an AI meeting assistant that automatically records, transcribes, and analyzes your meetings. It integrates with popular video conferencing platforms to help teams capture and search through important meeting content.

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

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

  ## Installation

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

  ## Operations

  The **Fireflies** node supports the following operations for interacting with the [Fireflies.ai API](https://docs.fireflies.ai):

  - **Get AI App Outputs**  
    Retrieve results generated by AI applications installed in your Fireflies workspace.

  - **Get Current User**  
    Fetch the profile details of the user associated with the provided API key.

  - **Get Transcript Analytics**  
    Access AI-driven analytics such as sentiment, topics, and engagement data for a specific meeting transcript.

  - **Get Transcript Summary**  
    Retrieve a concise, AI-generated summary of a meeting, including bullet points, action items, and key highlights.

  - **Get Transcript**  
    Get the full transcript of a specific meeting using its unique identifier.

  - **Get Transcripts List**  
    Fetch a paginated list of available meeting transcripts. Supports advanced filtering by email, date, and user ID.

  - **Get Users**  
    Retrieve a list of users within your Fireflies organization, including metadata like names and emails.

  - **Upload Audio**  
    Upload audio recordings for transcription. This is useful for meetings, interviews, or any spoken content you want transcribed.

  ### AskFred Operations

  AskFred is Fireflies' AI assistant that can answer questions about your meetings using natural language.

  - **Get Threads**  
    Retrieve a list of all AskFred conversation threads. Optionally filter by a specific transcript ID.

  - **Get Thread**  
    Get a specific AskFred thread with all its messages, including questions and AI-generated answers.

  - **Create Thread**  
    Start a new conversation with AskFred by asking a question. You can ask about a specific meeting or query across multiple meetings using filters (date range, participants, organizers, channels).

  - **Continue Thread**  
    Continue an existing AskFred conversation with a follow-up question. The AI maintains context from previous messages in the thread.

  - **Delete Thread**  
    Delete an AskFred thread and all its associated messages.

  ---

  ## Usage

  ### Fetching and Chaining Transcripts

  The **Get Transcripts List** operation retrieves a list of available meeting transcripts based on optional filters such as:

  - `organizer_email`
  - `participant_email`
  - `host_email`
  - `title`
  - `user_id`
  - `from_date` / `to_date`

  This is often the first step in building a workflow, allowing you to dynamically retrieve and iterate over multiple transcript records.

  Once you have the transcript IDs from this operation, you can pass them as inputs to the following operations:

  - **Get Transcript**: Fetch the full transcript content.
  - **Get Transcript Summary**: Retrieve [summary](https://docs.fireflies.ai/schema/summary) and key takeaways.
  - **Get Transcript Analytics**: Access [analytics](https://docs.fireflies.ai/schema/analytics) like sentiment, topic extraction, and more.

  These operations can be chained together to create rich workflows for reporting, insights, or downstream automation.

  📘 For a full reference of transcript fields and response structure, see the [Fireflies Transcript Schema](https://docs.fireflies.ai/schema/transcript).

  ## Credentials

  To use the Fireflies node, you need to authenticate with your Fireflies API key.

  1. Log in to your [Fireflies.ai](https://fireflies.ai) account
  2. Go to Settings > Developer Settings
  3. Generate or copy your existing API key
  4. Use this API key in your n8n credentials for the Fireflies node

  The node uses API Key authentication to securely connect to the Fireflies.ai API.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Fireflies.ai API documentation](https://docs.fireflies.ai)

  ## Version history

  ### 2.1.0

  - ✨ **New Resource**: Added AskFred resource for AI-powered meeting Q&A
  - 🆕 **New Operations**: 
    - `Get Threads`: List all AskFred conversation threads
    - `Get Thread`: Retrieve a specific thread with all messages
    - `Create Thread`: Start a new conversation with AskFred
    - `Continue Thread`: Add follow-up questions to existing threads
    - `Delete Thread`: Remove threads and their messages
  - 🔍 **Meeting Filters**: Create Thread supports filtering by date range, participants, organizers, channels, and transcript IDs
  - 🌐 **Response Options**: Configurable response language and format mode (markdown/plaintext)

  ### 2.0.0

  - ✨ **New Operations**: Added `GetTranscriptVideoUrl` and `GetTranscriptAudioUrl` operations for direct media access
  - 🔧 **Enhanced Error Handling**: Comprehensive GraphQL error detection with detailed error codes and correlation IDs
  - 🏗️ **Architecture Improvements**: Implemented generic error handling system for consistent error responses across all operations
  - 📚 **Code Quality**: Refactored codebase for better maintainability and reduced duplication
  - ⚠️ **Breaking Changes**: Removed `audio_url` and `video_url` from `GetTranscript` operation due to GraphQL API's partial data response behavior

  ### 1.0.7

  - Fixed nodeParameter handling for all operations

  ### 1.0.6

  - Removed unsupported field from getAiAppOutput operation

  ### 1.0.5

  - Fixes bug in handling input data

  ### 1.0.4

  - Major refactor to separate code into resources and operations

  ### 1.0.3

  - Bump version due to inconsistent build

  ### 1.0.2

  - Refactored Fireflies Node implementation
  - Replaced axios with http helper
  - Added test for credentials

  ### 1.0.1

  - Fixed bugs in array responses

  ### 1.0.0

  - Added operations Get AI App Outputs, Get Meeting Analytics, Get Meeting Summary, Get Transcript, Get Transcripts List, Get Users, and Upload Audio
  - Initial release of the Fireflies.ai node for n8n

ai_documentation_summary:
  {"purpose":"Connect to the Fireflies.ai API from n8n to retrieve, transcribe, summarize, and analyze meeting recordings and to interact with Fireflies' AskFred conversational assistant.","capabilities":["Get AI App Outputs (retrieve AI-generated outputs installed in workspace)","Get Current User (fetch profile for API key)","Get Transcript Analytics (sentiment, topics, engagement data)","Get Transcript Summary (AI-generated bullet points, action items, highlights)","Get Transcript (retrieve full transcript by ID)","Get Transcripts List (paginated listing with advanced filters: organizer_email, participant_email, host_email, title, user_id, from_date/to_date)","Get Users (list organization users and metadata)","Upload Audio (upload recordings for transcription)","AskFred operations: Get Threads, Get Thread, Create Thread, Continue Thread, Delete Thread (AI Q&A over meetings, with context-aware follow-ups)","AskFred: support for filters when querying/creating (date ranges, participants, organizers, channels, transcript IDs) and configurable response language/format (markdown/plaintext)"],"authentication":"API key required","commonUseCases":["Automate ingestion and processing of meeting transcripts (list → fetch → summarize → store or forward)","Generate concise meeting summaries and action items for downstream notifications or task creation","Analyze meeting sentiment, topics, and engagement for reporting or dashboards","Use AskFred to ask natural-language questions about meetings and continue threaded conversations programmatically","Upload external audio recordings for transcription and include them in workflows"],"limitations":["Authentication limited to API key (no OAuth2 mentioned)","Due to GraphQL API partial-data behavior, audio_url and video_url were removed from GetTranscript and must be retrieved via separate GetTranscriptAudioUrl/GetTranscriptVideoUrl operations (breaking change noted)","README indicates versioned behavior and breaking changes—verify node version and available operations before building workflows"],"relatedNodes":[]}


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

updated_at: 2026-02-19 14:41:52
author_name: dust-dev
author_github_url: https://github.com/dust-tt/dust-n8n-node.git
npm_package_name: n8n-nodes-dust
npm_version: 0.1.70
community_fetched_at: 2026-02-19T14:41:52.532Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Document",
          "value": "document"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "talkToAssistant",
      "options": [
        {
          "name": "Talk To",
          "value": "talkToAssistant",
          "action": "Talk to an agent",
          "description": "Send a message to an agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "uploadDocument",
      "options": [
        {
          "name": "Upload",
          "value": "uploadDocument",
          "action": "Upload a document",
          "description": "Upload a document to a data source"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Talk To",
      "value": "talkToAssistant",
      "action": "Talk to an agent",
      "description": "Send a message to an agent"
    },
    {
      "name": "Upload",
      "value": "uploadDocument",
      "action": "Upload a document",
      "description": "Upload a document to a data source"
    }
  ]

npm_readme:
  # n8n-nodes-dust

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

  Dust is a platform for creating custom AI agents that combine leading AI models with company knowledge to help teams work better, leveraging RAG technology for accurate, contextual responses.

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

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Example Workflow](#example-workflow)  
  [Authentication](#authentication)  
  [Resources](#resources)  
  [Version history](#version-history)

  ## Installation

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

  ## Operations

  - Talk to an Agent
  - Upload a Document

  ## Credentials

  - Dust Workspace ID
  - Dust API Key
  - Dust Region

  ## Compatibility

  - n8n 1.1.1

  ## Usage

  1. **Add the Dust node to your workflow.**
  2. **Select the operation:**
     - _Talk to an Agent_: Send a message to a Dust agent and receive a response.
     - _Upload a Document_: Upload a document to a Dust data source.
  3. **Configure the required parameters:**
     - For "Talk to an Agent": Provide the message and select the agent.
     - For "Upload a Document": Provide Space ID, Data Source Name, Document ID, and Document Content.
  4. **(Optional) Fill in additional fields** for more control (e.g., username, email, timezone, tags, etc.).
  5. **Execute the workflow** to interact with Dust.

  ## Example Workflow

  ### Talk to an Agent

  - **Operation:** Talk to an Agent
  - **Parameters:**
    - Message: `What is the latest update on project X?`
    - Agent: (Select from dropdown)
    - Additional Fields (optional): Username, Email, Timezone

  **Output:**

  ```
  {
    "agentMessage": "Project X is on track for delivery next week.",
    "conversationUrl": "https://dust.tt/w/{workspaceId}/assistant/{conversationId}",
    "userMessage": { ... }
  }
  ```

  ### Upload a Document

  - **Operation:** Upload a Document
  - **Parameters:**
    - Space ID: `your_space_id`
    - Data Source Name: `your_data_source`
    - Document ID: `doc-123`
    - Document Content: `This is the content of the document.`
    - Additional Fields (optional): Title, MIME Type, Source URL, Tags, Async, Light Document Output

  **Output:**

  ```
  {
    "documentId": "doc-123",
    "status": "uploaded"
  }
  ```

  ## Authentication

  To use this node, you need to set up Dust API credentials in n8n:

  - **API Key:** Get your API key from your [Dust account settings](https://dust.tt/settings/api).
  - **Workspace ID:** Find your workspace ID in the Dust dashboard URL or settings.
  - **Region:** Select `EU` or `US` depending on your workspace location.

  Add these credentials in n8n under the "Dust API" credential type and reference them in the node.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Dust API Documentation](https://docs.dust.tt/reference/api)

  ## Version history

  - 0.1.1
    - Add SkipToolsValidation + rename assitant to agent
  - 0.1.0
    - Initial release

ai_documentation_summary:
  {"purpose":"Provides integration with the Dust platform so n8n workflows can send messages to Dust agents and upload documents to Dust data sources for use in RAG-powered agents.","capabilities":["Talk to an Agent — send a message to a selected Dust agent and receive the agent's response (conversation URL and message payload returned)","Upload a Document — upload document content to a specified Space/Data Source with control over Document ID, Title, MIME type, Source URL, Tags","Support for optional metadata when talking to agents (username, email, timezone, tags)","Support for optional upload controls (async upload, light document output)"],"authentication":"API key required (Dust API Key) plus Workspace ID and Region (EU or US). Add credentials in n8n under the 'Dust API' credential type.","commonUseCases":["Query a Dust agent from a workflow to get contextual answers (e.g., project status or summaries)","Ingest documents into a Dust data source to make them available to agents (RAG knowledge ingestion)","Automate conversational workflows that include user metadata (username, email, timezone) for contextual responses","Batch or programmatic document uploads to keep a Dust workspace knowledge base up to date"],"limitations":["Compatibility listed for n8n 1.1.1 (may require that version or newer community-node compatibility)","Region selection limited to EU or US per node configuration"],"relatedNodes":[]}


node_type: n8n-nodes-hubbi.hubbi
package_name: n8n-nodes-hubbi
display_name: Hubbi
description: Get data from the Hubbi services
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: hubbi.parts
author_github_url: https://github.com/Hubbiparts/
npm_package_name: n8n-nodes-hubbi
npm_version: 1.0.1
community_fetched_at: 2026-02-19T14:41:52.533Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "part",
      "options": [
        {
          "name": "Stock",
          "value": "stock",
          "description": "Operations related to your stock"
        },
        {
          "name": "Autopart",
          "value": "part",
          "description": "Operations related to autoparts"
        },
        {
          "name": "Vehicle",
          "value": "vehicle",
          "description": "Operations related to vehicles"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "part",
      "options": [
        {
          "name": "Autopart",
          "value": "part",
          "description": "Operations related to autoparts"
        },
        {
          "name": "Vehicle",
          "value": "vehicle",
          "description": "Operations related to vehicles"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "userType": [
            "buyer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listParts",
      "options": [
        {
          "name": "Create Autopart in Stock",
          "value": "createPart",
          "action": "Create autopart in stock",
          "routing": {
            "request": {
              "url": "=erps/parts/",
              "body": [
                {
                  "code": "={{$parameter.code}}",
                  "name": "={{$parameter.name}}",
                  "price": "={{$parameter.price}}",
                  "stock": "={{$parameter.stock}}",
                  "erp_id": "={{$parameter.erpId}}"
                }
              ],
              "method": "POST"
            }
          },
          "description": "Create a new autopart",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "Delete Stock",
          "value": "deletePart",
          "action": "Delete autopart",
          "routing": {
            "request": {
              "url": "=erps/parts/{{$parameter.id}}/",
              "method": "DELETE"
            }
          },
          "description": "Delete an autopart by ID",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "Get Autopart in Stock",
          "value": "getPart",
          "action": "Get autopart",
          "routing": {
            "request": {
              "url": "=erps/parts/{{$parameter.id}}/",
              "method": "GET"
            }
          },
          "description": "Get a specific autopart by ID",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "List Stock",
          "value": "listParts",
          "action": "List autoparts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "url": "=erps/parts/",
              "method": "GET"
            }
          },
          "description": "List all available autoparts",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        },
        {
          "name": "Update Stock",
          "value": "updatePart",
          "action": "Update autopart",
          "routing": {
            "request": {
              "url": "=erps/parts/{{$parameter.id}}/",
              "body": {
                "code": "={{$parameter.code}}",
                "name": "={{$parameter.name}}",
                "price": "={{$parameter.price}}",
                "stock": "={{$parameter.stock}}",
                "erp_id": "={{$parameter.erpId}}"
              },
              "method": "PATCH"
            }
          },
          "description": "Update an existing autopart by ID",
          "displayOptions": {
            "show": {
              "userType": [
                "dealer"
              ]
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stock"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchPart",
      "options": [
        {
          "name": "Search Autopart",
          "value": "searchPart",
          "action": "Search for autoparts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "sku": "={{$parameter[\"partNumber\"]}}",
                "limit": 96,
                "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
                "offset": 0,
                "search": "={{$parameter[\"partName\"]}}",
                "barcode": "={{$parameter[\"barcode\"]}}",
                "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
                "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
                "application": "={{$parameter[\"vehicle\"]}}"
              },
              "url": "/catalog/filter/",
              "method": "GET"
            }
          },
          "description": "Retrieve details of a part"
        },
        {
          "name": "Part Specifications",
          "value": "partSpecs",
          "action": "Get part specifications",
          "routing": {
            "request": {
              "qs": {
                "nome_fabricante": "={{$parameter[\"brandName\"]}}",
                "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
              },
              "url": "/public/api/v1/catalog/part/technical-specs",
              "method": "GET"
            }
          },
          "description": "Retrieve specifications of a part"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "part"
          ],
          "userType": [
            "buyer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "searchPart",
      "options": [
        {
          "name": "Search Autopart",
          "value": "searchPart",
          "action": "Search for autoparts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "results"
                  }
                }
              ]
            },
            "request": {
              "qs": {
                "sku": "={{$parameter[\"partNumber\"]}}",
                "limit": 96,
                "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
                "offset": 0,
                "search": "={{$parameter[\"partName\"]}}",
                "barcode": "={{$parameter[\"barcode\"]}}",
                "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
                "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
                "application": "={{$parameter[\"vehicle\"]}}"
              },
              "url": "/catalog/filter/",
              "method": "GET"
            }
          },
          "description": "Retrieve details of a part"
        },
        {
          "name": "Part Specifications",
          "value": "partSpecs",
          "action": "Get part specifications",
          "routing": {
            "request": {
              "qs": {
                "nome_fabricante": "={{$parameter[\"brandName\"]}}",
                "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
              },
              "url": "/public/api/v1/catalog/part/technical-specs",
              "method": "GET"
            }
          },
          "description": "Retrieve specifications of a part"
        },
        {
          "name": "Part Quotation",
          "value": "partQuotation",
          "action": "Get part quotation",
          "routing": {
            "request": {
              "qs": {
                "nome_fabricante": "={{$parameter[\"brandName\"]}}",
                "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
              },
              "url": "/public/api/v1/catalog/part/quotation",
              "method": "GET"
            }
          },
          "description": "Retrieve quotation details for a part"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "part"
          ],
          "userType": [
            "dealer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "vehicleByPlate",
      "options": [
        {
          "name": "Get Vehicle by Plate",
          "value": "vehicleByPlate",
          "action": "Get vehicle by license plate",
          "routing": {
            "request": {
              "qs": {
                "plate": "={{$parameter[\"plate\"]}}"
              },
              "url": "/platesearch/vehicle-info/",
              "method": "GET"
            }
          },
          "description": "Retrieve vehicle description by plate number"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vehicle"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Autopart in Stock",
      "value": "createPart",
      "action": "Create autopart in stock",
      "routing": {
        "request": {
          "url": "=erps/parts/",
          "body": [
            {
              "code": "={{$parameter.code}}",
              "name": "={{$parameter.name}}",
              "price": "={{$parameter.price}}",
              "stock": "={{$parameter.stock}}",
              "erp_id": "={{$parameter.erpId}}"
            }
          ],
          "method": "POST"
        }
      },
      "description": "Create a new autopart",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Delete Stock",
      "value": "deletePart",
      "action": "Delete autopart",
      "routing": {
        "request": {
          "url": "=erps/parts/{{$parameter.id}}/",
          "method": "DELETE"
        }
      },
      "description": "Delete an autopart by ID",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Get Autopart in Stock",
      "value": "getPart",
      "action": "Get autopart",
      "routing": {
        "request": {
          "url": "=erps/parts/{{$parameter.id}}/",
          "method": "GET"
        }
      },
      "description": "Get a specific autopart by ID",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "List Stock",
      "value": "listParts",
      "action": "List autoparts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "url": "=erps/parts/",
          "method": "GET"
        }
      },
      "description": "List all available autoparts",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Update Stock",
      "value": "updatePart",
      "action": "Update autopart",
      "routing": {
        "request": {
          "url": "=erps/parts/{{$parameter.id}}/",
          "body": {
            "code": "={{$parameter.code}}",
            "name": "={{$parameter.name}}",
            "price": "={{$parameter.price}}",
            "stock": "={{$parameter.stock}}",
            "erp_id": "={{$parameter.erpId}}"
          },
          "method": "PATCH"
        }
      },
      "description": "Update an existing autopart by ID",
      "displayOptions": {
        "show": {
          "userType": [
            "dealer"
          ]
        }
      }
    },
    {
      "name": "Search Autopart",
      "value": "searchPart",
      "action": "Search for autoparts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "sku": "={{$parameter[\"partNumber\"]}}",
            "limit": 96,
            "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
            "offset": 0,
            "search": "={{$parameter[\"partName\"]}}",
            "barcode": "={{$parameter[\"barcode\"]}}",
            "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
            "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
            "application": "={{$parameter[\"vehicle\"]}}"
          },
          "url": "/catalog/filter/",
          "method": "GET"
        }
      },
      "description": "Retrieve details of a part"
    },
    {
      "name": "Part Specifications",
      "value": "partSpecs",
      "action": "Get part specifications",
      "routing": {
        "request": {
          "qs": {
            "nome_fabricante": "={{$parameter[\"brandName\"]}}",
            "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
          },
          "url": "/public/api/v1/catalog/part/technical-specs",
          "method": "GET"
        }
      },
      "description": "Retrieve specifications of a part"
    },
    {
      "name": "Search Autopart",
      "value": "searchPart",
      "action": "Search for autoparts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "results"
              }
            }
          ]
        },
        "request": {
          "qs": {
            "sku": "={{$parameter[\"partNumber\"]}}",
            "limit": 96,
            "stock": "={{$parameter[\"inStock\"] ? \"true\" : \"false\"}}",
            "offset": 0,
            "search": "={{$parameter[\"partName\"]}}",
            "barcode": "={{$parameter[\"barcode\"]}}",
            "state_uf": "={{Array.isArray($parameter[\"uf\"]) ? $parameter[\"uf\"].join(\",\") : $parameter[\"uf\"]}}",
            "positions": "={{Array.isArray($parameter[\"position\"]) ? $parameter[\"position\"].join(\",\") : $parameter[\"position\"]}}",
            "application": "={{$parameter[\"vehicle\"]}}"
          },
          "url": "/catalog/filter/",
          "method": "GET"
        }
      },
      "description": "Retrieve details of a part"
    },
    {
      "name": "Part Specifications",
      "value": "partSpecs",
      "action": "Get part specifications",
      "routing": {
        "request": {
          "qs": {
            "nome_fabricante": "={{$parameter[\"brandName\"]}}",
            "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
          },
          "url": "/public/api/v1/catalog/part/technical-specs",
          "method": "GET"
        }
      },
      "description": "Retrieve specifications of a part"
    },
    {
      "name": "Part Quotation",
      "value": "partQuotation",
      "action": "Get part quotation",
      "routing": {
        "request": {
          "qs": {
            "nome_fabricante": "={{$parameter[\"brandName\"]}}",
            "codigo_fabricante": "={{$parameter[\"partNumber\"]}}"
          },
          "url": "/public/api/v1/catalog/part/quotation",
          "method": "GET"
        }
      },
      "description": "Retrieve quotation details for a part"
    },
    {
      "name": "Get Vehicle by Plate",
      "value": "vehicleByPlate",
      "action": "Get vehicle by license plate",
      "routing": {
        "request": {
          "qs": {
            "plate": "={{$parameter[\"plate\"]}}"
          },
          "url": "/platesearch/vehicle-info/",
          "method": "GET"
        }
      },
      "description": "Retrieve vehicle description by plate number"
    }
  ]

npm_readme:
  # n8n-nodes-hubbi

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

  Hubbi is a B2B marketplace platform that connects corporate consumers with auto parts suppliers. Using BigData technologies, it enables an agile and assertive quotation, purchase and sale process.

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

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

  ## Installation

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

  ## Operations

  - Vehicle Operations: get detailed information about a vehicle by it's license plate.
  - Stock Operations: List, create, update and delete your stock at Hubbi.
  - Part Operations: Get detailed technical speficiation for an autopart, search for parts in Hubbi's catalog and see the lowest quotation for auto parts.

  ## Credentials

  To use this node, you need to have a Hubbi account and valid API keys.

  1. **Create a Hubbi Account:**  
     Sign up at [Hubbi](https://hubbi.app) if you don't already have an account.

  2. **Generate API Keys:**  
     After logging in, navigate to your account settings to generate your API keys.

  3. **Configure Credentials in n8n:**  
     In n8n, add a new set of credentials for the Hubbi node and enter your API keys.

  These credentials will allow the node to authenticate and interact with Hubbi services securely.

  ## Compatibility

  This node is compatible with n8n version 1.93.0 and onwards.

  ## Resources

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

ai_documentation_summary:
  {"purpose":"Provides access to Hubbi B2B marketplace services from n8n workflows, allowing retrieval of vehicle, stock and parts data as well as management of stock items and access to part quotations.","capabilities":["Get detailed vehicle information by license plate","List stock items in your Hubbi account","Create stock items","Update stock items","Delete stock items","Get detailed technical specification for an autopart","Search parts in Hubbi's catalog","Retrieve the lowest quotation for auto parts"],"authentication":"API key required (Hubbi account; generate API keys in Hubbi and configure them in n8n credentials)","commonUseCases":["Lookup vehicle details by license plate to enrich workflows","Synchronize or manage inventory (list/create/update/delete stock) between systems and Hubbi","Search Hubbi parts catalog and fetch technical specifications for parts","Automatically fetch lowest quotations for parts to support procurement and quoting workflows","Build automated purchase/quotation flows between corporate buyers and suppliers"],"limitations":["Community node (not an official n8n core node) — support and maintenance may vary","Compatible with n8n version 1.93.0 and onwards (requires that minimum version)","README does not document webhook/trigger support (appears focused on actions/requests)","No details provided about API rate limits, pagination or error handling in the README"],"relatedNodes":[]}


node_type: n8n-nodes-groner.groner
package_name: n8n-nodes-groner
display_name: Groner
description: Integrate with Groner CRM to manage deals, contacts, tasks, and more
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-02-19 14:41:52
author_name: ronaldoasevedo
author_github_url: https://github.com/gronerbr/
npm_package_name: n8n-nodes-groner
npm_version: 0.1.35
community_fetched_at: 2026-02-19T14:41:52.534Z
ai_summary_generated_at: 2026-02-19 16:43:57
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Deal",
          "value": "deal"
        },
        {
          "name": "Note",
          "value": "note"
        },
        {
          "name": "Tag",
          "value": "tag"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "WhatsApp",
          "value": "whatsapp"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new deal",
          "description": "Create a new deal in Groner"
        },
        {
          "name": "Edit by Property",
          "value": "editByProperty",
          "action": "Edit deal by property",
          "description": "Edit deal by specific property"
        },
        {
          "name": "Get Quote",
          "value": "getQuote",
          "action": "Get deal quote",
          "description": "Get quote information for a deal"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a deal",
          "description": "Move a deal to a different stage"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for deals",
          "description": "Search deals with filters"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deal"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "editByProperty",
      "options": [
        {
          "name": "Edit by Property",
          "value": "editByProperty",
          "action": "Edit contact by property",
          "description": "Edit contact by specific property"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "description": "Create a new task"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search tasks",
          "description": "Search for tasks"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add a note",
          "description": "Add a note to a deal"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "note"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "action": "Add tags",
          "description": "Add tags to a deal"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send whats app message",
          "description": "Send a WhatsApp message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "whatsapp"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new deal",
      "description": "Create a new deal in Groner"
    },
    {
      "name": "Edit by Property",
      "value": "editByProperty",
      "action": "Edit deal by property",
      "description": "Edit deal by specific property"
    },
    {
      "name": "Get Quote",
      "value": "getQuote",
      "action": "Get deal quote",
      "description": "Get quote information for a deal"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a deal",
      "description": "Move a deal to a different stage"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search for deals",
      "description": "Search deals with filters"
    },
    {
      "name": "Edit by Property",
      "value": "editByProperty",
      "action": "Edit contact by property",
      "description": "Edit contact by specific property"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "description": "Create a new task"
    },
    {
      "name": "Search",
      "value": "search",
      "action": "Search tasks",
      "description": "Search for tasks"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add a note",
      "description": "Add a note to a deal"
    },
    {
      "name": "Add",
      "value": "add",
      "action": "Add tags",
      "description": "Add tags to a deal"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send whats app message",
      "description": "Send a WhatsApp message"
    }
  ]

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

  # n8n-nodes-groner

  This repository contains custom nodes for integrating n8n with the Groner API (Solar CRM). The Groner node provides comprehensive functionality to manage leads, projects, tasks, and communications within the Groner CRM system.

  ---

  ## 🚀 Main Node

  - **Groner**: Primary node for integration with the Groner API, covering all major CRM operations including lead management, project tracking, task creation, and WhatsApp messaging.

  ## 📋 Available Resources and Operations

  ### 🔗 Available Resources

  | Resource | Description |
  |----------|-------------|
  | **Contact** | Contact/lead management |
  | **Deal** | Deal/project management |
  | **Note** | Note/occurrence addition |
  | **Tag** | Tag management |
  | **Task** | Task creation and search |
  | **WhatsApp** | WhatsApp message sending |

  ### 📊 Operations by Resource

  #### **Deal (Deal/Project)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Create** | Creates a new deal (lead/project) in Groner | POST |
  | **Search** | Searches deals with advanced filters and pagination | GET |
  | **Edit by Property** | Edits specific properties of a deal | PUT |
  | **Get Quote** | Gets quotes for a specific deal | GET |
  | **Move** | Moves a deal to a different stage | POST |

  #### **Contact (Contact)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Edit** | Edits contact information | PUT |
  | **Edit by Property** | Edits specific properties of a contact | PUT |

  #### **Task (Task)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Create** | Creates a new task | POST |
  | **Search** | Searches tasks with filters | GET |

  #### **Note (Note)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Add** | Adds a note/occurrence to a deal | POST |

  #### **Tag (Tag)**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Add** | Adds tags to a deal | POST |

  #### **WhatsApp**
  | Operation | Description | HTTP Method |
  |-----------|-------------|-------------|
  | **Send** | Sends WhatsApp message | POST |

  ---

  ## 🔧 Prerequisites

  Before installing and using this package, ensure you have the following installed on your development machine:

  ### Required Software
  - **[Git](https://git-scm.com/downloads)** - Version control system
  - **[Node.js](https://nodejs.org/)** - Version 18.10 or higher
  - **[pnpm](https://pnpm.io/)** - Package manager (Version 9.1 or higher)

  ### n8n Installation
  Install n8n globally using pnpm:
  ```bash
  pnpm install n8n -g
  ```

  ### System Requirements
  - **Node.js**: >=18.10
  - **pnpm**: >=9.1
  - **n8n-workflow**: Compatible version

  ---

  ## 📦 Installation

  ### 1. Clone the Repository
  ```bash
  git clone https://github.com/gronerbr/n8n-nodes-groner.git
  cd n8n-nodes-groner
  ```

  ### 2. Install Dependencies
  ```bash
  pnpm install
  ```

  ### 3. Build the Project
  ```bash
  pnpm build
  ```
  This command will:
  - Compile TypeScript files
  - Copy custom icons to the distribution folder
  - Prepare the package for use

  ### 4. Development Mode (Optional)
  For development with automatic recompilation:
  ```bash
  pnpm dev
  ```

  ---

  ## 🔐 Credentials Configuration

  ### Setting Up Groner API Credentials

  1. **Access n8n Credentials**: In your n8n instance, navigate to Settings → Credentials
  2. **Add New Credential**: Click "Add Credential" and select **Groner API**
  3. **Configure Credentials**:
     - **Tenant**: Your Groner subdomain (e.g., `mycompany`)
     - **API Key**: Your Groner API authentication key

  ### Credential Details

  | Field | Type | Required | Description | Example |
  |-------|------|----------|-------------|---------|
  | **Tenant** | String | Yes | Your Groner subdomain identifier | `mycompany` |
  | **API Key** | Password | Yes | Your Groner API authentication token | `groner_api_key_123...` |

  ### API Endpoint Structure
  The node automatically constructs API endpoints using your tenant:
  ```
  https://{tenant}.api.groner.app/api/{endpoint}
  ```

  ---

  ## 🎯 How to Use the Groner Node

  ### Basic Workflow Setup

  1. **Add the Node**: Drag and drop the **Groner** node into your n8n workflow
  2. **Select Resource**: Choose the desired resource (Deal, Contact, Task, etc.)
  3. **Select Operation**: Choose the desired operation from the "Operation" dropdown
  4. **Configure Parameters**: Fill in required and optional fields based on the selected operation
  5. **Execute**: Run the workflow to process the operation

  ### Output Format
  - **Success**: Returns API response data as JSON
  - **Search Operations**: Each returned item becomes an individual n8n item
  - **Error Handling**: Errors are displayed in the node execution panel

  ---

  ## 📖 Detailed Operation Guide

  ### 1. Create Deal

  Creates a new lead or project in Groner with comprehensive tracking capabilities.

  #### Required Fields
  - **Name** (`nome`): Full name of the contact
  - **Email** (`email`): Contact email address
  - **Phone** (`telefone`): Contact phone number
  - **Origin Name or ID** (`codOrigem`): Lead origin (loadOptions)

  #### Optional Fields
  - **Account Value** (`valorConta`): Estimated project value
  - **City** (`cidade`): Contact's city
  - **Document** (`documento`): CPF or CNPJ number
  - **Person Type** (`tipoPessoa`): PF (Individual) or PJ (Company)
  - **State** (`uf`): Brazilian state abbreviation
  - **Responsible Name or ID** (`responsavelId`): Responsible salesperson (loadOptions)
  - **Responsible Email** (`emailResponsavel`): Salesperson email
  - **Note** (`nota`): Initial notes about the lead
  - **Campaign** (`campanha`): Marketing campaign identifier
  - **Advertisement** (`anuncio`): Ad campaign reference
  - **Ad Set** (`conjuntoAnuncios`): Ad group identifier
  - **Lead Tracking Code** (`codigoLeadTracking`): Tracking code for analytics
  - **Trade Name** (`nomeFantasia`): Company trade name (for PJ)
  - **Segment** (`segmento`): Business segment classification
  - **Deal Type Name or ID** (`tipoProjetoId`): Type of solar project (loadOptions)
  - **URL** (`url`): Custom endpoint URL (optional)

  #### Example Usage
  ```json
  {
    "nome": "John Doe",
    "email": "john.doe@example.com",
    "telefone": "+5511999999999",
    "codOrigem": "1",
    "cidade": "São Paulo",
    "documento": "123.456.789-00",
    "tipoPessoa": "F",
    "valorConta": 25000,
    "nota": "Interested in residential solar installation"
  }
  ```

  ### 2. Search Deals

  Searches for existing deals with advanced filtering and pagination.

  #### Filter Parameters
  - **Page Size** (`pageSize`): Items per page (default: 20)
  - **Search** (`query`): Text search across deal data
  - **Criterio** (`criterio`): Search criteria
  - **Filters**:
    - **Deal Type ID** (`dealTypeId`): Filter by project type (loadOptions)
    - **Stage ID** (`stageId`): Filter by sales pipeline stage (loadOptions)
    - **Status ID** (`statusId`): Filter by status (loadOptions)
    - **Responsible Seller ID** (`responsibleSellerId`): Filter by responsible seller (loadOptions)
    - **Responsible Technician ID** (`responsibleTechnicianId`): Filter by responsible technician (loadOptions)
    - **Pre Seller ID** (`preSellerId`): Filter by pre-seller (loadOptions)
  - **Additional Fields**:
    - **Lead ID** (`leadId`): Filter by specific lead
    - **Stores IDs** (`storesIds`): Filter by store locations (multiOptions)
    - **Tags IDs** (`tagsIds`): Filter by specific tags (multiOptions)
    - **Origins IDs** (`originsIds`): Filter by origins (multiOptions)
    - **Status History IDs** (`statusHistoryIds`, `nStatusHistoryIds`): Filter by status history (multiOptions)
    - **Order By** (`orderBy`): Sort criteria
    - **Initial Qualification** (`initialQualification`): Initial qualification (0-10)
    - **Final Qualification** (`finalQualification`): Final qualification (0-10)
    - **Indicator** (`indicator`): Performance indicator
    - **Contact Owner ID** (`contactOwnerId`): Filter by contact owner
    - **Campaign** (`campaign`): Filter by campaign
    - **Advertisement** (`advertisement`): Filter by advertisement
    - **Ad Set** (`adSet`): Filter by ad set
  - **Location**:
    - **City** (`city`): Filter by city
    - **State** (`state`): Filter by state
  - **Financial**:
    - **Initial Power** (`initialPower`): Initial power in kW
    - **Final Power** (`finalPower`): Final power in kW
    - **Initial Value** (`initialValue`): Initial project value
    - **Final Value** (`finalValue`): Final project value
    - **Initial Consumption** (`initialConsumption`): Initial consumption in kWh
    - **Final Consumption** (`finalConsumption`): Final consumption in kWh
  - **Dates**:
    - **Start Date** (`startDate`): Start date
    - **End Date** (`endDate`): End date
    - **Initial Closing Forecast Date** (`initialClosingForecastDate`): Initial closing forecast date
    - **Final Closing Forecast Date** (`finalClosingForecastDate`): Final closing forecast date
    - **Initial Proposal Date** (`initialProposalDate`): Initial proposal date
    - **Final Proposal Date** (`finalProposalDate`): Final proposal date
    - **Initial Sale Date** (`initialSaleDate`): Initial sale date
    - **Final Sale Date** (`finalSaleDate`): Final sale date
    - **Initial Loss Date** (`initialLossDate`): Initial loss date
    - **Final Loss Date** (`finalLossDate`): Final loss date

  #### Example Usage
  ```json
  {
    "pageSize": 50,
    "query": "solar installation",
    "filters": {
      "stageId": "1",
      "statusId": "2"
    },
    "financial": {
      "initialValue": 10000,
      "finalValue": 50000
    }
  }
  ```

  ### 3. Add Tags

  Adds organizational labels to existing deals.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID
  - **Tag IDs** (`tagIds`): Array of tag IDs

  #### Example Usage
  ```json
  {
    "dealId": "12345",
    "tagIds": ["1", "2", "3"]
  }
  ```

  ### 4. Add Note

  Adds notes or occurrences to track deal interactions.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID
  - **Occurrence** (`ocorrencia`): Note content

  #### Optional Fields
  - **Mentions** (`marcacoes`): Optional user mentions

  #### Example Usage
  ```json
  {
    "dealId": "12345",
    "ocorrencia": "Customer requested quote for 10kW system",
    "marcacoes": "@sales_team"
  }
  ```

  ### 5. Create Task

  Creates tasks linked to deals with assignment capabilities.

  #### Required Fields
  - **Title** (`titulo`): Task title
  - **Type ID** (`tipoId`): Task type identifier (loadOptions)
  - **Status ID** (`statusId`): Task status (loadOptions)
  - **Project ID** (`projetoId`): Associated deal ID
  - **Users IDs** (`usuariosIds`): Assigned user IDs (multiOptions)

  #### Optional Fields
  - **Description** (`descricao`): Task description
  - **Start Date** (`dataInicial`): Task start date (YYYY-MM-DD)
  - **Delivery Date** (`dataEntrega`): Task delivery date (YYYY-MM-DD)

  #### Example Usage
  ```json
  {
    "titulo": "Follow up call",
    "descricao": "Call customer to discuss proposal",
    "tipoId": "1",
    "statusId": "1",
    "projetoId": 12345,
    "usuariosIds": ["user1", "user2"],
    "dataInicial": "2024-01-15",
    "dataEntrega": "2024-01-20"
  }
  ```

  ### 6. Search Tasks

  Searches for tasks with comprehensive filtering options.

  #### Filter Parameters
  - **Page Size** (`pageSize`): Items per page (default: 20)
  - **Search** (`query`): Text search
  - **Additional Fields**:
    - **Lead ID** (`leadId`): Filter by associated lead
    - **Project ID** (`projetoId`): Filter by associated project
    - **Type ID** (`tipoId`): Filter by task type (loadOptions)
    - **Status ID** (`statusId`): Filter by task status (loadOptions)
    - **User ID** (`usuarioId`): Filter by assigned user (loadOptions)
    - **Stores IDs** (`lojasIds`): Filter by store locations (multiOptions)
    - **Order By** (`ordenarPor`): Sort criteria
    - **Start Date** (`dataInicial`): Filter by start date (YYYY-MM-DD)
    - **End Date** (`dataFinal`): Filter by end date (YYYY-MM-DD)
    - **Page Number** (`pageNumber`): Page number

  #### Example Usage
  ```json
  {
    "projetoId": 12345,
    "statusId": "1",
    "pageSize": 20,
    "ordenarPor": "dataCriacao"
  }
  ```

  ### 7. Edit Contact by Property

  Updates specific properties of existing contacts.

  #### Required Fields
  - **Contact ID** (`contactId`): Contact/Lead ID (number)
  - **Property** (`propriedade`): Property name to update (loadOptions)
  - **Value** (`valor`): New property value

  #### Example Usage
  ```json
  {
    "contactId": 12345,
    "propriedade": "email",
    "valor": "new.email@example.com"
  }
  ```

  ### 8. Edit Deal by Property

  Updates specific properties of existing deals.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID (number)
  - **Property** (`propriedade`): Property name to update (loadOptions)
  - **Value** (`valor`): New property value

  #### Example Usage
  ```json
  {
    "dealId": 12345,
    "propriedade": "valorConta",
    "valor": "30000"
  }
  ```

  ### 9. Send WhatsApp Message

  Sends WhatsApp messages through Groner's integrated messaging system.

  #### Required Fields
  - **Message** (`mensagem`): Message content

  #### Optional Fields
  - **Lead ID** (`leadId`): Target lead ID (number)
  - **Phone** (`celular`): Direct phone number
  - **Image URL** (`urlImagem`): Image attachment URL
  - **Audio URL** (`urlAudio`): Audio attachment URL
  - **Video URL** (`urlVideo`): Video attachment URL
  - **Document URL** (`urlDocumento`): Document attachment URL
  - **Send to Pre-Seller** (`preVendedor`): Whether to send to Pre-Seller (boolean)
  - **Send to Seller** (`vendedor`): Whether to send to Seller (boolean)
  - **Send to Technician** (`tecnico`): Whether to send to Technician (boolean)
  - **Send to Lead** (`lead`): Whether to send to Lead (boolean)

  #### Example Usage
  ```json
  {
    "leadId": 12345,
    "mensagem": "Hello! Here's your solar installation quote.",
    "urlImagem": "https://example.com/quote.pdf",
    "vendedor": true
  }
  ```

  ### 10. Move Deal

  Changes the status/stage of a deal in the sales pipeline.

  #### Required Fields
  - **Deal ID** (`dealId`): Deal ID
  - **Status ID** (`statusId`): New status identifier (loadOptions)

  #### Optional Fields
  - **Validate Status Available** (`validaStatusDisponivel`): Whether to validate if the status is available (boolean)

  #### Example Usage
  ```json
  {
    "dealId": "12345",
    "statusId": "2",
    "validaStatusDisponivel": true
  }
  ```

  ### 11. Get Deal Quote

  Retrieves quotes associated with a specific deal.

  #### Required Fields
  - **Project ID** (`projetoId`): Deal/Project ID

  #### Example Usage
  ```json
  {
    "projetoId": "12345"
  }
  ```

  ---

  ## 🔄 Workflow Examples

  ### Example 1: Process Deals with Content.List

  This example shows how to use Content.List to process multiple deals:

  ```
  [Groner: Search Deals] → [Content.List] → [Groner: Edit Deal] → [Result]
  ```

  **Content.List Configuration:**
  ```
  Input Data: {{ $json.data }}
  Output Field Name: deal
  ```

  **Edit Deal Configuration:**
  ```
  Resource: Deal
  Operation: Edit by Property
  Deal ID: {{ $json.deal.id }}
  Property: valorConta
  Value: {{ $json.deal.valorConta * 1.1 }}
  ```

  ### Example 2: Complete Follow-up Workflow

  ```
  [Groner: Search Deals] → [IF] → [Groner: Add Note] → [Groner: Send WhatsApp]
  ```

  **IF Condition:**
  ```
  {{ $json.status === "Em Negociação" }}
  ```

  ---

  ## 🔧 Development Scripts

  | Script | Description |
  |--------|-------------|
  | `pnpm build` | Compiles TypeScript and copies icons |
  | `pnpm dev` | Runs TypeScript compiler in watch mode |
  | `pnpm lint` | Checks for linting issues |
  | `pnpm lintfix` | Automatically fixes linting issues |
  | `pnpm format` | Formats code using Prettier |
  | `pnpm prepublishOnly` | Builds and lints before publishing |

  ---

  ## 📁 Project Structure

  ```
  n8n-nodes-groner/
  ├── credentials/
  │   └── GronerApi.credentials.ts    # API authentication
  ├── nodes/
  │   └── Groner/
  │       ├── loadOptions/            # Dynamic options
  │       │   ├── getStatuses.ts      # Status options
  │       │   ├── getOrigins.ts       # Origin options
  │       │   ├── getResponsibles.ts  # Responsible user options
  │       │   ├── getDealTypes.ts     # Deal type options
  │       │   ├── getTags.ts          # Tag options
  │       │   ├── getStores.ts        # Store options
  │       │   ├── getEtapas.ts        # Stage options
  │       │   ├── getTaskTypes.ts     # Task type options
  │       │   ├── getTaskStatuses.ts  # Task status options
  │       │   ├── getContactProperties.ts # Contact property options
  │       │   └── getDealProperties.ts    # Deal property options
  │       ├── Groner.node.ts          # Main node file
  │       └── logogroner.svg          # Custom icon
  ├── package.json                    # Project configuration
  ├── tsconfig.json                   # TypeScript configuration
  └── gulpfile.js                     # Build configuration
  ```

  ---

  ## ⚠️ Important Notes

  ### API Response Handling
  - **Search Operations**: Each item returned by the API becomes an individual n8n item for easy processing
  - **Error Handling**: API errors are displayed in the node execution panel with detailed error messages
  - **Authentication**: Uses Bearer token authentication with your API key

  ### Load Options
  The node provides dynamic loading of options for various fields:
  - **Statuses**: Available deal statuses
  - **Origins**: Lead origin sources
  - **Responsibles**: Available users/responsible persons
  - **Deal Types**: Types of projects/deals
  - **Tags**: Available tags/labels
  - **Stores**: Store locations
  - **Etapas**: Sales pipeline stages
  - **Task Types**: Types of tasks
  - **Task Statuses**: Task status options
  - **Contact Properties**: Available contact properties
  - **Deal Properties**: Available deal properties

  ### Custom Icon
  - The node displays the Groner logo if the `logogroner.svg` file is present in the node directory
  - The icon is automatically copied during the build process

  ### Data Validation
  - Empty fields are automatically removed from API requests
  - Required fields are validated before sending requests
  - Date formats should follow YYYY-MM-DD standard
  - Arrays are automatically converted to comma-separated strings for API compatibility

  ### Rate Limiting
  - Be aware of Groner API rate limits
  - Implement appropriate delays between requests in high-volume workflows

  ---

  ## 🤝 Contributing

  We welcome contributions! Here's how you can help:

  ### Reporting Issues
  - Use the GitHub issue tracker
  - Provide detailed error messages and steps to reproduce
  - Include your n8n version and node configuration

  ### Submitting Pull Requests
  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run `pnpm lint` and `pnpm build`
  5. Submit a pull request with detailed description

  ### Development Guidelines
  - Follow TypeScript best practices
  - Maintain consistent code formatting
  - Add appropriate error handling
  - Include field validation where necessary

  ---

  ## 📄 License

  This project is licensed under the [MIT License](LICENSE.md).

  ---

  ## 📞 Support

  For support and questions:
  - **Email**: contato@gronercrm.com.br
  - **GitHub Issues**: [Create an issue](https://github.com/gronerbr/n8n-nodes-groner/issues)
  - **Documentation**: This README and inline code comments

  ---

  ## 🌐 Language Versions

  - **[English Version](README.md)** (Current)
  - **[Portuguese Version](README_PT.md)**

  ---

  ## 🔄 Version History

  - **v0.1.18**: Current version with comprehensive CRM operations and updated field structure
  - **v0.1.17**: Added WhatsApp messaging capabilities
  - **v0.1.16**: Enhanced search and filtering options
  - **v0.1.15**: Improved error handling and validation
  - **v0.1.14**: Initial release with basic operations

  For detailed changelog, see the [GitHub releases](https://github.com/gronerbr/n8n-nodes-groner/releases).

ai_documentation_summary:
  {"purpose":"Integrate n8n with the Groner (Solar CRM) API to manage leads/deals, contacts, tasks, notes, tags and to send WhatsApp messages within workflows.","capabilities":["Create Deal (lead/project)","Search Deals with advanced filters and pagination","Edit Deal properties (Edit by Property)","Get Quote for a deal","Move deal between stages","Edit Contact information","Edit Contact properties (Edit by Property)","Create Task","Search Tasks with filters","Add Note/occurrence to a deal"],"authentication":"API key required (Tenant subdomain + API Key credential configured in n8n)","commonUseCases":["Automatically create leads in Groner from webforms or other triggers","Move deals through pipeline stages based on workflow logic","Send WhatsApp notifications to contacts for status updates","Create tasks and add notes for sales follow-ups","Tag and search deals for segmentation or reporting"],"limitations":[],"relatedNodes":[]}


