# nodes

node_type: n8n-nodes-epicai.epicAi
package_name: n8n-nodes-epicai
display_name: Epic AI
description: Interact with the Epic AI (ChatCaptain) API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: epic-ai-de
author_github_url: https://github.com/epic-ai-de/
npm_package_name: n8n-nodes-epicai
npm_version: 1.3.1
community_fetched_at: 2026-07-14T14:40:34.051Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "conversation",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Statistic",
          "value": "statistics"
        },
        {
          "name": "Variable",
          "value": "variable"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllConversations",
      "options": [
        {
          "name": "Create Conversation",
          "value": "createConversation",
          "action": "Create a conversation"
        },
        {
          "name": "Create Note",
          "value": "addNote",
          "action": "Create a note in a conversation"
        },
        {
          "name": "Delete Note",
          "value": "removeNote",
          "action": "Delete a note from a conversation"
        },
        {
          "name": "Get All Conversations",
          "value": "getAllConversations",
          "action": "Get all conversations"
        },
        {
          "name": "Get All Messages",
          "value": "getAllMessages",
          "action": "Get all messages of a conversation"
        },
        {
          "name": "Get All Variables",
          "value": "getAllVariables",
          "action": "Get all variables of a conversation"
        },
        {
          "name": "Get Conversation",
          "value": "getConversation",
          "action": "Get a conversation"
        },
        {
          "name": "Get Message",
          "value": "getMessage",
          "action": "Get a message"
        },
        {
          "name": "Get Variable",
          "value": "getVariable",
          "action": "Get a specific variable"
        },
        {
          "name": "Send Message as Agent",
          "value": "sendMessageAsAgent",
          "action": "Send a message as agent"
        },
        {
          "name": "Send Message as User",
          "value": "sendMessageAsUser",
          "action": "Send a message as user"
        },
        {
          "name": "Set / Update Variable",
          "value": "updateVariable",
          "action": "Set or update a specific variable"
        },
        {
          "name": "Trigger Custom Event",
          "value": "triggerEvent",
          "action": "Trigger a custom event in a conversation"
        },
        {
          "name": "Update Conversation",
          "value": "updateConversation",
          "action": "Update a conversation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAllContacts",
      "options": [
        {
          "name": "Create Contact",
          "value": "createContact",
          "action": "Create a contact"
        },
        {
          "name": "Delete Contact",
          "value": "deleteContact",
          "action": "Delete a contact"
        },
        {
          "name": "Get All Contacts",
          "value": "getAllContacts",
          "action": "Get all contacts"
        },
        {
          "name": "Get All Variables",
          "value": "getAllContactVariables",
          "action": "Get all variables of a contact"
        },
        {
          "name": "Get Contact",
          "value": "getContact",
          "action": "Get a contact"
        },
        {
          "name": "Get Variable",
          "value": "getContactVariable",
          "action": "Get a specific variable of a contact"
        },
        {
          "name": "Set / Update Variable",
          "value": "updateContactVariable",
          "action": "Set or update a variable of a contact"
        },
        {
          "name": "Update Contact",
          "value": "updateContact",
          "action": "Update a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createVariable",
      "options": [
        {
          "name": "Create Global Variable",
          "value": "createVariable",
          "action": "Create a new global variable"
        },
        {
          "name": "Delete Global Variable",
          "value": "deleteVariable",
          "action": "Delete a global variable"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "variable"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createExport",
      "options": [
        {
          "name": "Create Export",
          "value": "createExport",
          "action": "Create a statistics export"
        },
        {
          "name": "Get Export",
          "value": "getExport",
          "action": "Get the status of a statistics export"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statistics"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Conversation",
      "value": "createConversation",
      "action": "Create a conversation",
      "resource": "conversation"
    },
    {
      "name": "Create Note",
      "value": "addNote",
      "action": "Create a note in a conversation",
      "resource": "conversation"
    },
    {
      "name": "Delete Note",
      "value": "removeNote",
      "action": "Delete a note from a conversation",
      "resource": "conversation"
    },
    {
      "name": "Get All Conversations",
      "value": "getAllConversations",
      "action": "Get all conversations",
      "resource": "conversation"
    },
    {
      "name": "Get All Messages",
      "value": "getAllMessages",
      "action": "Get all messages of a conversation",
      "resource": "conversation"
    },
    {
      "name": "Get All Variables",
      "value": "getAllVariables",
      "action": "Get all variables of a conversation",
      "resource": "conversation"
    },
    {
      "name": "Get Conversation",
      "value": "getConversation",
      "action": "Get a conversation",
      "resource": "conversation"
    },
    {
      "name": "Get Message",
      "value": "getMessage",
      "action": "Get a message",
      "resource": "conversation"
    },
    {
      "name": "Get Variable",
      "value": "getVariable",
      "action": "Get a specific variable",
      "resource": "conversation"
    },
    {
      "name": "Send Message as Agent",
      "value": "sendMessageAsAgent",
      "action": "Send a message as agent",
      "resource": "conversation"
    },
    {
      "name": "Send Message as User",
      "value": "sendMessageAsUser",
      "action": "Send a message as user",
      "resource": "conversation"
    },
    {
      "name": "Set / Update Variable",
      "value": "updateVariable",
      "action": "Set or update a specific variable",
      "resource": "conversation"
    },
    {
      "name": "Trigger Custom Event",
      "value": "triggerEvent",
      "action": "Trigger a custom event in a conversation",
      "resource": "conversation"
    },
    {
      "name": "Update Conversation",
      "value": "updateConversation",
      "action": "Update a conversation",
      "resource": "conversation"
    },
    {
      "name": "Create Contact",
      "value": "createContact",
      "action": "Create a contact",
      "resource": "contact"
    },
    {
      "name": "Delete Contact",
      "value": "deleteContact",
      "action": "Delete a contact",
      "resource": "contact"
    },
    {
      "name": "Get All Contacts",
      "value": "getAllContacts",
      "action": "Get all contacts",
      "resource": "contact"
    },
    {
      "name": "Get All Variables",
      "value": "getAllContactVariables",
      "action": "Get all variables of a contact",
      "resource": "contact"
    },
    {
      "name": "Get Contact",
      "value": "getContact",
      "action": "Get a contact",
      "resource": "contact"
    },
    {
      "name": "Get Variable",
      "value": "getContactVariable",
      "action": "Get a specific variable of a contact",
      "resource": "contact"
    },
    {
      "name": "Set / Update Variable",
      "value": "updateContactVariable",
      "action": "Set or update a variable of a contact",
      "resource": "contact"
    },
    {
      "name": "Update Contact",
      "value": "updateContact",
      "action": "Update a contact",
      "resource": "contact"
    },
    {
      "name": "Create Global Variable",
      "value": "createVariable",
      "action": "Create a new global variable",
      "resource": "variable"
    },
    {
      "name": "Delete Global Variable",
      "value": "deleteVariable",
      "action": "Delete a global variable",
      "resource": "variable"
    },
    {
      "name": "Create Export",
      "value": "createExport",
      "action": "Create a statistics export",
      "resource": "statistics"
    },
    {
      "name": "Get Export",
      "value": "getExport",
      "action": "Get the status of a statistics export",
      "resource": "statistics"
    }
  ]

npm_readme:
  # n8n-nodes-epicai

  This node lets you interact with the [Epic AI](https://www.epic-ai.com) API. Epic AI is a platform for building individually configurable flow- and AI-driven chat, voice, and email bots. It allows you to manage contacts, conversations, messages, notes, variables, and statistics directly from your n8n workflows.

  ## Installation

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

  ```
  n8n-nodes-epicai
  ```

  ## Credentials

  1. In n8n go to **Credentials → New**
  2. Search for **Epic AI API**
  3. Enter your ChatCaptain API Key

  You can find your API key in the ChatCaptain dashboard under **Settings → API**.


  > **Note:** The Body (JSON) fields in this node show only the required parameters for each operation. Additional optional parameters are available — see the [API documentation](https://api.chatcaptain.com/api) for the full reference.

  ## Resources & Operations

  ### Contact
  | Operation | Description |
  |---|---|
  | Create Contact | Create a new contact |
  | Delete Contact | Delete a contact |
  | Get All Contacts | Retrieve all contacts |
  | Get All Variables | Retrieve all variables of a contact |
  | Get Contact | Retrieve a single contact |
  | Get Variable | Retrieve a specific variable of a contact |
  | Set / Update Variable | Set or update a variable of a contact |
  | Update Contact | Update a contact |

  ### Conversation
  | Operation | Description |
  |---|---|
  | Create Conversation | Create a new conversation |
  | Create Note | Add a note to a conversation |
  | Delete Note | Remove a note from a conversation |
  | Get All Conversations | Retrieve all conversations — optionally filter by `contactId` or `channelId` |
  | Get All Messages | Retrieve all messages of a conversation |
  | Get All Variables | Retrieve all variables of a conversation |
  | Get Conversation | Retrieve a single conversation |
  | Get Message | Retrieve a single message |
  | Get Variable | Retrieve a specific variable |
  | Send Message as Agent | Send a message as an agent (via inbox) |
  | Send Message as User | Send a message as a user |
  | Set / Update Variable | Set or update a conversation variable |
  | Trigger Custom Event | Trigger a custom event in a conversation |
  | Update Conversation | Update a conversation |

  ### Variable
  | Operation | Description |
  |---|---|
  | Create Global Variable | Create a new global chatbot variable |
  | Delete Global Variable | Delete a global chatbot variable |

  ### Statistic
  | Operation | Description |
  |---|---|
  | Create Export | Start a statistics export for a given time range — returns an `exportId` |
  | Get Export | Retrieve the status and download link of a statistics export |

  ## Examples

  ### Contact: Create a Contact

  **Use case:** A new customer submits a sign-up form on your website. An n8n workflow receives the form data via webhook and automatically creates a contact in ChatCaptain — so the chatbot can immediately greet them by name and has their details on file.

  Configure the node as follows:

  | Field | Value |
  |---|---|
  | Resource | Contact |
  | Operation | Create Contact |
  | Chatbot ID | `abc123` |

  **Body (JSON):**
  ```json
  {
    "name": "Jane Doe",
    "language": "EN",
    "email": "jane.doe@example.com",
    "phoneNumber": "+4917612345678"
  }
  ```

  **Expected result:**
  ```json
  {
    "id": "contact_xyz789",
    "name": "Jane Doe",
    "email": "jane.doe@example.com",
    "phoneNumber": "+4917612345678",
    "language": "EN"
  }
  ```

  ---

  ### Conversation: Send a Message as Agent

  **Use case:** Your order management system detects that a shipment is delayed. An n8n workflow automatically sends a proactive message to the affected customer's open conversation in ChatCaptain — so the customer is informed without a human agent having to intervene manually.

  Configure the node as follows:

  | Field | Value |
  |---|---|
  | Resource | Conversation |
  | Operation | Send Message as Agent |
  | Chatbot ID | `abc123` |
  | Conversation ID | `conv_xyz789` |

  **Body (JSON):**
  ```json
  {
    "text": "We wanted to let you know that your order is slightly delayed. We expect delivery within 2 additional business days. Sorry for the inconvenience!"
  }
  ```

  **Expected result:**
  ```json
  {
    "id": "msg_abc001",
    "text": "We wanted to let you know that your order is slightly delayed. We expect delivery within 2 additional business days. Sorry for the inconvenience!",
    "sender": "agent",
    "created": "2026-04-24T10:00:00Z"
  }
  ```

  ---

  ### Variable: Set / Update a Conversation Variable

  **Use case:** Customer data has changed in your ERP system (e.g. a new shipping address or updated loyalty tier). An n8n workflow picks up the change and updates the corresponding variable in the active ChatCaptain conversation — so the chatbot immediately has access to the latest data and can respond accordingly without the customer needing to repeat themselves.

  Configure the node as follows:

  | Field | Value |
  |---|---|
  | Resource | Conversation |
  | Operation | Set / Update Variable |
  | Chatbot ID | `abc123` |
  | Conversation ID | `conv_xyz789` |
  | Variable ID | `var_def456` |

  **Body (JSON):**
  ```json
  {
    "value": "Gold"
  }
  ```

  **Expected result:**
  ```json
  {
    "id": "var_def456",
    "name": "loyalty_tier",
    "value": "Gold"
  }
  ```

  ---

  ### Contact: Set / Update a Contact Variable

  **Use case:** A customer completes a purchase in your online shop. An n8n workflow picks up the order event and updates a contact variable in ChatCaptain — for example the customer's loyalty tier — so the chatbot can immediately reference the updated value in future conversations without the customer having to re-confirm their status.

  Configure the node as follows:

  | Field | Value |
  |---|---|
  | Resource | Contact |
  | Operation | Set / Update Variable |
  | Chatbot ID | `abc123` |
  | Contact ID | `contact_xyz789` |
  | Variable ID | `var_def456` |

  **Body (JSON):**
  ```json
  {
    "value": "Gold"
  }
  ```

  **Expected result:**
  ```json
  {
    "id": "var_def456",
    "name": "loyalty_tier",
    "value": "Gold"
  }
  ```

  ---

  ### Statistic: Export and Download Statistics

  **Use case:** At the end of each month your operations team needs a CSV report of all chatbot statistics. An n8n workflow triggers on a schedule, starts the export, polls until it completes, and then passes the download link to a follow-up step (e.g. send via email or save to Google Drive).

  **Step 1 — Create Export:**

  | Field | Value |
  |---|---|
  | Resource | Statistic |
  | Operation | Create Export |
  | Chatbot ID | `abc123` |
  | From | `2025-01-01T00:00:00.000Z` |
  | To | `2025-01-31T23:59:59.999Z` |

  **Expected result:**
  ```json
  {
    "exportId": "0512277ec44ddfa169ea2a7f645b5be5..."
  }
  ```

  **Step 2 — Get Export (poll until `status` is `completed`):**

  | Field | Value |
  |---|---|
  | Resource | Statistic |
  | Operation | Get Export |
  | Chatbot ID | `abc123` |
  | Export ID | `0512277ec44ddfa169ea2a7f645b5be5...` |

  **Expected result:**
  ```json
  {
    "status": "completed",
    "downloadLink": "https://storage.googleapis.com/..."
  }
  ```

  ## API Documentation

  https://api.chatcaptain.com/api
  https://docs.chatcaptain.com/api-dokumentation

ai_documentation_summary:
  {"purpose":"Interact with the Epic AI (ChatCaptain) API to manage contacts, conversations, messages, notes, and variables directly from n8n workflows.","capabilities":["Create, retrieve, update, and delete contacts","Create and manage conversations","Send messages as agents or users","Add, retrieve, and delete conversation notes","Manage conversation variables (set, update, retrieve)","Trigger custom events in conversations","Create and delete global chatbot variables"],"authentication":"API key required","commonUseCases":["Automatically creating contacts when customers submit web forms","Sending proactive notifications to customers about order status changes","Synchronizing customer data (e.g., shipping addresses, loyalty tiers) between ERP systems and chatbots"],"limitations":[],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:34
author_name: sudomock
author_github_url: https://github.com/sudomock/
npm_package_name: n8n-nodes-sudomock
npm_version: 0.3.1
community_fetched_at: 2026-07-14T14:40:34.053Z
ai_summary_generated_at: 2026-05-02 09:00:04
description:
  Generate mockups and product videos for Print-on-Demand automation. Upload PSDs, render with your designs, render videos, run renders asynchronously, track jobs, and manage webhooks.

properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "render",
      "options": [
        {
          "name": "Delete Mockup",
          "value": "deleteMockup",
          "action": "Delete a mockup",
          "description": "Delete a specific mockup template"
        },
        {
          "name": "Get Account Info",
          "value": "getAccountInfo",
          "action": "Get account information",
          "description": "Get account details, subscription, and usage statistics"
        },
        {
          "name": "Get Mockup",
          "value": "getMockup",
          "action": "Get mockup details",
          "description": "Get details of a specific mockup template"
        },
        {
          "name": "List Mockups",
          "value": "listMockups",
          "action": "List mockups",
          "description": "List all your uploaded mockup templates"
        },
        {
          "name": "Get Job",
          "value": "getJob",
          "action": "Get a job",
          "description": "Poll an async job by its job_id (GET /jobs/{job_id}) to get its status and result"
        },
        {
          "name": "List Jobs",
          "value": "listJobs",
          "action": "List jobs",
          "description": "List your async render, upload, and video jobs"
        },
        {
          "name": "Render Mockup",
          "value": "render",
          "action": "Render a mockup",
          "description": "Render mockup with your design"
        },
        {
          "name": "Render Video",
          "value": "renderVideo",
          "action": "Render a video",
          "description": "Turn a mockup into a short product video (always async)"
        },
        {
          "name": "Update Mockup",
          "value": "updateMockup",
          "action": "Update mockup name",
          "description": "Update mockup template name"
        },
        {
          "name": "Upload PSD",
          "value": "uploadPsd",
          "action": "Upload a PSD template",
          "description": "Upload a PSD template from URL"
        },
        {
          "name": "Webhook: Create Endpoint",
          "value": "webhookCreate",
          "action": "Create a webhook endpoint",
          "description": "Create a webhook endpoint"
        },
        {
          "name": "Webhook: Delete Endpoint",
          "value": "webhookDelete",
          "action": "Delete a webhook endpoint",
          "description": "Delete a webhook endpoint"
        },
        {
          "name": "Webhook: Events Feed",
          "value": "webhookEventsFeed",
          "action": "Get the webhook events feed",
          "description": "Recent deliveries across all of your webhook endpoints"
        },
        {
          "name": "Webhook: Get Endpoint",
          "value": "webhookGet",
          "action": "Get a webhook endpoint",
          "description": "Get a single webhook endpoint"
        },
        {
          "name": "Webhook: List Deliveries",
          "value": "webhookListDeliveries",
          "action": "List webhook deliveries",
          "description": "List delivery attempts for a webhook endpoint"
        },
        {
          "name": "Webhook: List Endpoints",
          "value": "webhookList",
          "action": "List webhook endpoints",
          "description": "List your webhook endpoints"
        },
        {
          "name": "Webhook: Replay Delivery",
          "value": "webhookReplayDelivery",
          "action": "Replay a webhook delivery",
          "description": "Replay a single webhook delivery"
        },
        {
          "name": "Webhook: Replay Failed Deliveries",
          "value": "webhookReplayFailed",
          "action": "Replay failed webhook deliveries",
          "description": "Replay all failed or dead deliveries for an endpoint"
        },
        {
          "name": "Webhook: Rotate Secret",
          "value": "webhookRotateSecret",
          "action": "Rotate a webhook secret",
          "description": "Rotate the signing secret of a webhook endpoint"
        },
        {
          "name": "Webhook: Send Test",
          "value": "webhookTest",
          "action": "Send a webhook test",
          "description": "Send a test event to a webhook endpoint"
        },
        {
          "name": "Webhook: Update Endpoint",
          "value": "webhookUpdate",
          "action": "Update a webhook endpoint",
          "description": "Update a webhook endpoint"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Delete Mockup",
      "value": "deleteMockup",
      "action": "Delete a mockup",
      "description": "Delete a specific mockup template"
    },
    {
      "name": "Get Account Info",
      "value": "getAccountInfo",
      "action": "Get account information",
      "description": "Get account details, subscription, and usage statistics"
    },
    {
      "name": "Get Mockup",
      "value": "getMockup",
      "action": "Get mockup details",
      "description": "Get details of a specific mockup template"
    },
    {
      "name": "List Mockups",
      "value": "listMockups",
      "action": "List mockups",
      "description": "List all your uploaded mockup templates"
    },
    {
      "name": "Get Job",
      "value": "getJob",
      "action": "Get a job",
      "description": "Poll an async job by its job_id (GET /jobs/{job_id}) to get its status and result"
    },
    {
      "name": "List Jobs",
      "value": "listJobs",
      "action": "List jobs",
      "description": "List your async render, upload, and video jobs"
    },
    {
      "name": "Render Mockup",
      "value": "render",
      "action": "Render a mockup",
      "description": "Render mockup with your design"
    },
    {
      "name": "Render Video",
      "value": "renderVideo",
      "action": "Render a video",
      "description": "Turn a mockup into a short product video (always async)"
    },
    {
      "name": "Update Mockup",
      "value": "updateMockup",
      "action": "Update mockup name",
      "description": "Update mockup template name"
    },
    {
      "name": "Upload PSD",
      "value": "uploadPsd",
      "action": "Upload a PSD template",
      "description": "Upload a PSD template from URL"
    },
    {
      "name": "Webhook: Create Endpoint",
      "value": "webhookCreate",
      "action": "Create a webhook endpoint",
      "description": "Create a webhook endpoint"
    },
    {
      "name": "Webhook: Delete Endpoint",
      "value": "webhookDelete",
      "action": "Delete a webhook endpoint",
      "description": "Delete a webhook endpoint"
    },
    {
      "name": "Webhook: Events Feed",
      "value": "webhookEventsFeed",
      "action": "Get the webhook events feed",
      "description": "Recent deliveries across all of your webhook endpoints"
    },
    {
      "name": "Webhook: Get Endpoint",
      "value": "webhookGet",
      "action": "Get a webhook endpoint",
      "description": "Get a single webhook endpoint"
    },
    {
      "name": "Webhook: List Deliveries",
      "value": "webhookListDeliveries",
      "action": "List webhook deliveries",
      "description": "List delivery attempts for a webhook endpoint"
    },
    {
      "name": "Webhook: List Endpoints",
      "value": "webhookList",
      "action": "List webhook endpoints",
      "description": "List your webhook endpoints"
    },
    {
      "name": "Webhook: Replay Delivery",
      "value": "webhookReplayDelivery",
      "action": "Replay a webhook delivery",
      "description": "Replay a single webhook delivery"
    },
    {
      "name": "Webhook: Replay Failed Deliveries",
      "value": "webhookReplayFailed",
      "action": "Replay failed webhook deliveries",
      "description": "Replay all failed or dead deliveries for an endpoint"
    },
    {
      "name": "Webhook: Rotate Secret",
      "value": "webhookRotateSecret",
      "action": "Rotate a webhook secret",
      "description": "Rotate the signing secret of a webhook endpoint"
    },
    {
      "name": "Webhook: Send Test",
      "value": "webhookTest",
      "action": "Send a webhook test",
      "description": "Send a test event to a webhook endpoint"
    },
    {
      "name": "Webhook: Update Endpoint",
      "value": "webhookUpdate",
      "action": "Update a webhook endpoint",
      "description": "Update a webhook endpoint"
    }
  ]

npm_readme:
  # n8n-nodes-sudomock

  n8n community node for the SudoMock API. Integrate mockup rendering into your n8n workflows for Print-on-Demand automation.

  [SudoMock](https://sudomock.com) | [Documentation](https://sudomock.com/docs) | [API Reference](https://sudomock.com/docs/api)

  ## Features

  ### Account Operations
  - **Get Account Info**: Retrieve account details, subscription plan, and usage statistics

  ### Mockup Management
  - **Upload PSD**: Upload PSD templates from a URL
  - **List Mockups**: List all your uploaded mockup templates with filtering and pagination
  - **Get Mockup**: Get detailed information about a specific mockup template
  - **Update Mockup**: Update the name of a mockup template
  - **Delete Mockup**: Delete a specific mockup template

  ### Rendering
  - **Render Mockup**: Generate mockups by combining templates with your designs. Optionally run asynchronously with the **Run Asynchronously** toggle, which returns a `job_id` to track with **Get Job**.
  - **Render Video**: Turn a mockup (or an existing image URL) into a short product video (always asynchronous). Pick a duration valid for the model, optional audio/motion, an optional one-off webhook, and optionally **Wait for Completion** to return the finished clip.

  ### Async Jobs
  - **Get Job**: Get the status and result of an async render, upload, or video job by its `job_id`. Terminal statuses are `succeeded`, `failed`, and `cancelled` (pending jobs report `queued`). On success it surfaces `result_url` (render/video) or `mockup_uuid` (upload). Optionally **Wait for Completion** to poll until the job finishes.
  - **List Jobs**: List your async render, upload, and video jobs (keyset paginated, with optional `kind` and Mockup UUID filters).

  ### Webhooks
  Manage webhook endpoints that receive a signed HTTPS request the moment a job finishes:
  - **Webhook: List Endpoints**
  - **Webhook: Get Endpoint**
  - **Webhook: Create Endpoint** (set an optional description and choose any of the six canonical events, or leave empty for all)
  - **Webhook: Update Endpoint**
  - **Webhook: Delete Endpoint**
  - **Webhook: Rotate Secret**
  - **Webhook: Send Test**
  - **Webhook: List Deliveries**
  - **Webhook: Replay Delivery**
  - **Webhook: Replay Failed Deliveries**
  - **Webhook: Events Feed** (recent deliveries across all of your endpoints)

  Canonical events: `render.succeeded`, `render.failed`, `upload.succeeded`, `video.succeeded`, `video.failed`, `webhook.test`. Deliveries are HMAC-signed; see https://sudomock.com/docs/api/webhooks for the current signature header and verification details.

  ## Installation

  ### Via n8n UI

  In n8n, go to **Settings → Community Nodes → Install** and enter:

  ```
  n8n-nodes-sudomock
  ```

  ### Manual Installation

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

  Restart n8n after installation.

  ## Setup

  ### 1. Get Your API Key

  1. Sign up at [SudoMock](https://sudomock.com)
  2. Go to Dashboard → API Keys
  3. Create a new API key (starts with `sm_`)

  ### 2. Add Credentials in n8n

  1. Create a new SudoMock node
  2. Click on **Credentials → Create New**
  3. Enter your SudoMock API Key
  4. Save and test the connection

  ## Operations

  ### Get Account Info

  Retrieve your account information, subscription details, and credit usage.

  **Output:**
  - Account: UUID, email, name, created date
  - Subscription: Plan name, status, billing period
  - Usage: Credits used/remaining, billing dates
  - API Key: Name, creation date, last used, total requests

  **Example Output:**
  ```json
  {
    "success": true,
    "data": {
      "account": {
        "uuid": "user-123",
        "email": "user@example.com",
        "name": "John Doe"
      },
      "subscription": {
        "plan": { "name": "Pro", "tier": "pro" },
        "status": "active"
      },
      "usage": {
        "credits_used_this_month": 250,
        "credits_limit": 1000,
        "credits_remaining": 750
      }
    }
  }
  ```

  ---

  ### Upload PSD

  Upload a PSD template from a public URL.

  **Parameters:**
  - **PSD File URL** (required): Public URL to your PSD file (up to Adobe's official PSD file size limit)
  - **Template Name** (optional): Custom name for the template (auto-generated if not provided)

  **Example:**
  ```
  PSD URL: https://storage.example.com/mockup.psd
  Name: T-Shirt Mockup Front
  ```

  **Output:**
  - Mockup UUID (use for rendering)
  - Smart object UUIDs and details
  - Thumbnail URLs

  ---

  ### List Mockups

  List all your uploaded mockup templates with optional filtering and pagination.

  **Parameters:**
  - **Return All**: Fetch all mockups or limit results
  - **Limit**: Number of results (1-100, default: 20)
  - **Additional Options**:
    - Filter by Name: Exact name match
    - Created After: Date filter
    - Created Before: Date filter
    - Sort By: `created_at`, `updated_at`, `name`
    - Sort Order: `asc` or `desc`

  **Example:**
  ```
  Limit: 20
  Sort By: Created At
  Sort Order: Descending
  ```

  **Output:**
  Each mockup as a separate item with full details (UUID, name, smart objects, thumbnails, etc.)

  ---

  ### Get Mockup

  Retrieve detailed information about a specific mockup template.

  **Parameters:**
  - **Mockup UUID** (required): UUID of the mockup to retrieve

  **Example:**
  ```
  Mockup UUID: c315f78f-d2c7-4541-b240-a9372842de94
  ```

  **Output:**
  Complete mockup details including all smart objects, thumbnails, and metadata.

  ---

  ### Update Mockup

  Update the name of a mockup template.

  **Parameters:**
  - **Mockup UUID** (required): UUID of the mockup to update
  - **New Name** (required): New name for the template

  **Example:**
  ```
  Mockup UUID: c315f78f-d2c7-4541-b240-a9372842de94
  New Name: Updated T-Shirt Mockup
  ```

  **Output:**
  Updated mockup details with the new name.

  ---

  ### Render Mockup

  Generate a mockup by filling smart objects with your designs.

  **Parameters:**
  - **Mockup UUID** (required): UUID from Upload PSD response
  - **Smart Objects** (required): One or more smart objects to fill
    - Smart Object UUID
    - Design URL (PNG, JPG, WebP)
    - Fit Mode: `fill`, `contain`, or `cover` (recommended)
    - **Additional Options** (optional):
      - Rotation: -360 to 360 degrees
      - Color Overlay: Hex color code
      - Color Blend Mode: Various blend modes
      - Brightness: -150 to 150
      - Contrast: -100 to 100
      - Opacity: 0-100

  - **Export Options** (optional):
    - Image Format: WebP (recommended), PNG, or JPEG
    - Image Size: Width in pixels (100-10000, default 2048)
    - Quality: 1-100 for JPG/WebP
    - Export Label: Custom label for file naming

  **Example:**
  ```
  Mockup UUID: abc123-def456
  Smart Object 1:
    - UUID: so-uuid-001
    - Design URL: https://cdn.example.com/design.png
    - Fit Mode: Cover
    - Brightness: 10
    - Contrast: 5

  Export Options:
    - Format: WebP
    - Size: 1920
    - Quality: 95
  ```

  **Output:**
  ```json
  {
    "success": true,
    "renderedImageUrl": "https://cdn.sudomock.com/renders/abc123.webp",
    "allRenderedUrls": [
      "https://cdn.sudomock.com/renders/abc123.webp"
    ],
    "data": {
      "print_files": [...]
    }
  }
  ```

  ---

  ### Delete Mockup

  Delete a specific mockup template.

  **Parameters:**
  - **Mockup UUID** (required): UUID of the mockup to delete

  **Example:**
  ```
  Mockup UUID: c315f78f-d2c7-4541-b240-a9372842de94
  ```

  **Output:**
  Deletion confirmation

  ---

  ### Render Video

  Turn a mockup (or an existing image URL) into a short product video. Always asynchronous: returns a `job_id` you can track with **Get Job**.

  **Parameters:**
  - **Input Mode**: `Render Mockup` (render a mockup with your designs first) or `Animate Image URL` (animate a public image directly)
  - **Mockup UUID** (required in Render Mockup mode): UUID of the mockup to animate
  - **Smart Objects** (required in Render Mockup mode): one or more smart objects with a Design URL and Fit Mode
  - **Image URL** (required in Animate Image URL mode): public HTTPS image (`.png`, `.jpg`, `.jpeg`, `.webp`, `.gif`, `.avif`)
  - **Webhook URL** (optional): one-off HTTPS URL notified when this job finishes
  - **Video Options**:
    - **Duration (Seconds)**: clip length (default 4; must be an allowed duration for the chosen model — the default model `veo-3.1-fast` allows 4, 6, or 8; max 15)
    - **Audio**: include a generated audio track (default false; may cost extra credits depending on model)
    - **Motion**: `ambient` (default) or `showcase`
    - **Advanced Model**: optional override pinning a roster model (`veo-3.1-fast`, `kling-v3-pro`, `kling-2.6-pro`, `seedance-2.0`, `wan-2.5`); leave empty to auto-pick by plan tier
  - **Wait for Completion**: poll the job and return the finished clip instead of the queued job
  - **Poll Timeout (Seconds)**: max wait when Wait for Completion is on

  **Output:**
  The 202 acknowledgement (`job_id`, `kind`, `status`, `status_url`, `estimated_credits`, ...), or the finished job (with `result_url` / `resultUrl`) when Wait for Completion is on.

  ---

  ### Get Job

  Track an asynchronous render, upload, or video job by its `job_id`.

  **Parameters:**
  - **Job ID** (required): the `job_id` from an async render, upload, or video request
  - **Wait for Completion**: poll until a terminal status (`succeeded`, `failed`, `cancelled`)
  - **Poll Timeout (Seconds)**: max wait when Wait for Completion is on

  **Output:**
  The job object. On success it surfaces `result_url` / `resultUrl` (render/video) or `mockup_uuid` / `resultMockupUuid` (upload), plus `credits_charged` and `payg` when applicable.

  ---

  ### List Jobs

  List your async render, upload, and video jobs (newest first, keyset paginated).

  **Parameters (all optional, under Filters):**
  - **Kind**: `render`, `upload`, or `video`
  - **Mockup UUID**: only jobs derived from this source mockup
  - **Limit**: 1-50 (default 20)
  - **Cursor**: opaque `next_cursor` from a previous response for pagination

  **Output:**
  `{ jobs: [...], next_cursor }`.

  > **Note:** Bulk "delete all mockups" is intentionally not exposed — the BE gates `DELETE /mockups/all` to dashboard (Bearer/JWT) auth only, so it is not callable with an API key. Delete mockups individually with **Delete Mockup**, or use the SudoMock dashboard.

  ---

  ### Webhook Operations

  Manage webhook endpoints and their deliveries. See the [Webhooks](#webhooks) feature list above for the full operation set and the canonical event types.

  **Common parameters:**
  - **Webhook Endpoint ID** (required for get/update/delete/rotate/test/deliveries/replay/replay-failed)
  - **Endpoint URL** + **Description** (create) and **Events** (create/update): leave Events empty to subscribe to all
  - **Delivery ID** (replay)
  - **Webhook: Events Feed** takes no parameters (returns recent deliveries across all your endpoints)

  ---

  ## Example Workflows

  Ready-to-use n8n workflows are available in the [`examples/`](./examples) folder:

  ### 1. Complete API Test Workflow
  **File**: [`examples/complete-test-workflow.json`](./examples/complete-test-workflow.json)

  Tests the core mockup operations in sequence:
  - Get Account Info → Upload PSD → Get Mockup → List Mockups
  - Render Mockup → Update Name → Verify Update → Delete Mockup

  Perfect for verifying your setup and understanding the complete workflow.

  [View Details →](./examples/README.md#1-complete-api-test-complete-test-workflowjson)

  ### 2. Rate Limit Handling Workflow
  **File**: [`examples/rate-limit-test-workflow.json`](./examples/rate-limit-test-workflow.json)

  Demonstrates proper rate limit error handling with automatic retry logic:
  - Detects 429 errors
  - Extracts retry-after value
  - Waits and automatically retries
  - Shows detailed error information

  [View Details →](./examples/README.md#2-rate-limit-error-handling-test-rate-limit-test-workflowjson)

  ### 3. Sequential Batch Render Workflow
  **File**: [`examples/batch-render-workflow.json`](./examples/batch-render-workflow.json)

  Demonstrates the power of n8n workflows with sequential batch processing:
  - Renders 10 mockups one after another
  - Uses different designs for each render
  - 2-second delay between renders to avoid rate limits
  - Progress tracking and final summary with all rendered URLs

  Perfect for understanding batch processing and workflow automation.

  [View Details →](./examples/README.md#3-sequential-batch-render-batch-render-workflowjson)

  ### Quick Start with Examples

  1. Import a workflow:
     ```
     n8n UI → Workflows → Import from File → Select workflow JSON
     ```

  2. Configure credentials:
     ```
     Click any SudoMock node → Credentials → Select your API key
     ```

  3. Execute:
     ```
     Click "Execute Workflow" button
     ```

  See [`examples/README.md`](./examples/README.md) for detailed instructions, customization options, and troubleshooting.

  ---

  ## Usage Examples

  ### Example 1: Complete Mockup Workflow

  ```
  1. [HTTP Request]
     → Download PSD from URL

  2. [SudoMock: Upload PSD]
     → Upload template
     → Extract: mockupUuid, smartObjectUuid

  3. [SudoMock: Render Mockup]
     → Use extracted UUIDs
     → Add design URL
     → Get: renderedImageUrl

  4. [Etsy/Shopify Node]
     → Create product listing
     → Use rendered mockup image
  ```

  ### Example 2: Batch Process Designs

  ```
  1. [Airtable Trigger]
     → Get list of designs to process

  2. [SudoMock: List Mockups]
     → Get available templates

  3. [Loop Over Designs]
     → [SudoMock: Render Mockup]
     → Generate mockup for each design

  4. [Store Results]
     → Save rendered URLs to database
  ```

  ### Example 3: Account Monitoring

  ```
  1. [Schedule Trigger]
     → Run daily at 9 AM

  2. [SudoMock: Get Account Info]
     → Check credit usage

  3. [IF Node]
     → If credits < 100

  4. [Send Email/Slack]
     → Alert about low credits
  ```

  ## Rate Limits

  ### Request Rate Limits

  All authenticated users have a base rate limit of **1000 requests per minute** with burst capacity of 1500 requests.

  Unauthenticated requests (IP-based): **30 requests per minute**

  ### Concurrent Request Limits (Plan-Based)

  | Plan | Concurrent Renders | Concurrent Uploads |
  |------|-------------------|--------------------|
  | Free | 1 | 1 |
  | Starter | 3 | 2 |
  | Pro | 10 | 5 |
  | Scale | 25 | 10 |

  ### Rate Limit Error Handling

  The node automatically detects and handles two types of rate limit errors:

  #### 1. Request Rate Limit Exceeded (1000 RPM)

  **Error Output:**
  ```json
  {
    "error": "Rate limit exceeded (1000 requests/minute). Please retry after 42 seconds.",
    "operation": "render",
    "statusCode": 429,
    "retryAfter": 42,
    "errorType": "rate_limit_exceeded",
    "errorDetails": {
      "type": "rate_limit_exceeded",
      "limit": 1000,
      "remaining": 0
    }
  }
  ```

  #### 2. Concurrent Limit Exceeded (Plan-Based)

  **Error Output:**
  ```json
  {
    "error": "Concurrent render limit reached (11/10). Please wait 5 seconds and try again.",
    "operation": "render",
    "statusCode": 429,
    "retryAfter": 5,
    "errorType": "concurrent_limit_exceeded",
    "errorDetails": {
      "type": "concurrent_limit_exceeded",
      "resource": "concurrent-render",
      "limit": 10,
      "current": 11
    }
  }
  ```

  ### Best Practices

  1. **Enable "Continue On Fail"** in n8n node settings to capture rate limit errors without stopping the workflow
  2. **Implement retry logic** using the `retryAfter` value from error output
  3. **Monitor `errorType`** to distinguish between request rate limits and concurrent limits
  4. **Use n8n's "Wait" node** with `{{$json.retryAfter}}` seconds before retrying

  ### Example: Retry Logic Workflow

  ```
  [SudoMock Render] (Continue On Fail: ON)
      → [IF: Check statusCode]
          → If 429: [Wait: {{$json.retryAfter}} seconds]
              → [SudoMock Render Again]
          → Else: Continue
  ```

  ## Error Handling

  All operations support the **Continue On Fail** option in n8n. When enabled:
  - Errors are captured as output items
  - Workflow continues to next item
  - Error details included in output

  **Example Error Output:**
  ```json
  {
    "error": "Rate limit exceeded. Retry after 42 seconds.",
    "operation": "render"
  }
  ```

  ## Development

  ### Setup

  ```bash
  # Clone repository
  git clone https://github.com/sudomock/n8n-nodes-sudomock.git
  cd n8n-nodes-sudomock

  # Install dependencies
  pnpm install

  # Build
  pnpm build

  # Development (watch mode)
  pnpm dev
  ```

  ### Testing Locally

  ```bash
  # Link package globally
  npm link

  # Link in n8n's custom nodes
  cd ~/.n8n/custom
  npm link n8n-nodes-sudomock

  # Start n8n
  n8n start
  ```

  Access n8n at `http://localhost:5678` and search for "SudoMock" in the nodes panel.

  ### Build Commands

  ```bash
  # Build TypeScript and icons
  pnpm build

  # Format code
  pnpm format

  # Lint code
  pnpm lint

  # Fix linting issues
  pnpm lintfix
  ```

  ## Resources

  - [SudoMock Website](https://sudomock.com)
  - [API Documentation](https://sudomock.com/docs/api)
  - [n8n Documentation](https://docs.n8n.io)
  - [Report Issues](https://github.com/sudomock/n8n-nodes-sudomock/issues)

  ## License

  MIT

  ## Support

  - Email: hello@sudomock.com
  - Documentation: https://sudomock.com/docs
  - Community: https://community.n8n.io

  ---

  **Made with ❤️ for the n8n community**

ai_documentation_summary:
  {"purpose":"Integrates SudoMock's mockup rendering API into n8n workflows to automate Print-on-Demand image generation by uploading PSD templates and rendering designs onto them.","capabilities":["Retrieve account details, subscription plans, and usage statistics","Upload PSD templates from public URLs","List, get, update, and delete mockup templates","Render mockups by combining templates with user designs (PNG, JPG, WebP)","Apply advanced rendering options including rotation, color overlays, blend modes, brightness, contrast, and opacity","Customize export settings for image format, size, and quality"],"authentication":"API key required","commonUseCases":["Automating Print-on-Demand product image generation","Creating custom mockups for e-commerce listings","Batch rendering designs onto product templates","Managing mockup template libraries within n8n workflows"],"limitations":["PSD templates must be hosted at public URLs","Design images must be in PNG, JPG, or WebP format","Rendering is limited by the user's subscription plan and available credits","PSD file size is limited by Adobe's official PSD file size limit"],"relatedNodes":[]}


node_type: n8n-nodes-youtube-comments-downloader.youtubeCommentsDownloader
package_name: n8n-nodes-youtube-comments-downloader
display_name: YouTube Comments Downloader
description: Download comments from YouTube videos, shorts, channels, etc.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: igloczek
author_github_url: https://github.com/youtube-comments-downloader/
npm_package_name: n8n-nodes-youtube-comments-downloader
npm_version: 1.0.5
community_fetched_at: 2026-07-14T14:40:34.056Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-youtube-comments-downloader

  This is an n8n community node. It lets you use [YouTube Comments Downloader](https://youtubecommentsdownloader.com) in your n8n workflows.

  The YouTube Comments Downloader node allows you to easily export comments from YouTube videos, shorts, channels, playlists, and more directly within your n8n automation pipelines.

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

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

  ## Installation

  To install this node in your n8n instance:

  1.  Go to **Settings** > **Community Nodes**.
  2.  Click **Install**.
  3.  Paste the package name: `n8n-nodes-youtube-comments-downloader`
  4.  Click **Install** again.

  For more detailed instructions or troubleshooting, refer to the [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/installation/).

  ## Operations

  This node supports the following operations:

  - **Download Comments**: Fetch comments from various YouTube content types.
    - **Content Types**:
      - Video
      - Short
      - Channel
      - Playlist
      - Community Posts
      - Live Streams
      - Custom Lists
    - **Return Formats**:
      - **JSON Data**: Returns parsed comments directly in the workflow for further processing.
      - **File Download**: Returns the result as a binary file attachment. Supported formats include:
        - JSON
        - CSV
        - Excel (XLSX)
        - HTML
        - Text
        - _Note: Bulk downloads (e.g., Channels, Playlists) may return a ZIP archive containing multiple files._

  ## Credentials

  You need an API Key from [YouTube Comments Downloader](https://youtubecommentsdownloader.com) to use this node.

  1.  Sign up or log in at [youtubecommentsdownloader.com](https://youtubecommentsdownloader.com).
  2.  Obtain your **API Key** from the dashboard.
  3.  In n8n, create a new credential for **YouTube Comments Downloader API**.
  4.  Enter your API Key.
  5.  (Optional) You can configure a custom API Base URL if needed (default is `https://api.youtubecommentsdownloader.com`).
  6.  (Optional) If your custom API endpoint uses a self-signed or otherwise untrusted certificate, enable **Allow Unauthorized TLS/SSL Certificates** for that credential.

  ## Compatibility

  This node works with n8n version 1.x and the 2.x beta branch.

  ## Usage

  1.  Add the **YouTube Comments Downloader** node to your workflow.
  2.  Select your credentials.
  3.  Enter the **URL** of the YouTube content you want to scrape (e.g., a video link, channel URL).
  4.  Select the **Content Type** that matches your URL (e.g., `Video`, `Channel`).
  5.  Choose your **Return Format**:
      - Select `JSON Data` if you want to process the comments immediately in the next nodes (e.g., sentiment analysis, database insertion).
      - Select `File Download` if you want to save the comments as a file (e.g., upload to Drive, email attachment).
  6.  If using `File Download`, select your desired **File Format** (CSV, Excel, etc.).

  ### Example Workflow

  - **Trigger**: On a schedule or manually.
  - **YouTube Comments Downloader**: Download comments from a specific video URL as JSON.
  - **Split In Batches**: Iterate over the comments.
  - **Google Sheets**: Add each comment to a spreadsheet.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  - [YouTube Comments Downloader Website](https://youtubecommentsdownloader.com)
  - [API Documentation](https://api.youtubecommentsdownloader.com)

ai_documentation_summary:
  {"purpose":"This n8n community node enables users to download and export comments from various YouTube content types (videos, shorts, channels, playlists) directly within automation workflows.","capabilities":["Fetch comments from videos, shorts, channels, playlists, community posts, and live streams","Support for custom comment lists","Return data as parsed JSON for immediate workflow processing","Export data as binary files in multiple formats (JSON, CSV, Excel, HTML, Text)","Handle bulk downloads as ZIP archives for channels and playlists"],"authentication":"API key required","commonUseCases":["Sentiment analysis on video feedback","Archiving community engagement data","Populating databases with user comments","Generating reports from channel or playlist discussions"],"limitations":["Requires an API key from the external YouTube Comments Downloader service","Custom API Base URL configuration is optional and may require SSL certificate handling"],"relatedNodes":["Google Sheets","Split In Batches","HTTP Request"]}


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

updated_at: 2026-07-14 14:40:34
author_name: mylitesoc
author_github_url: https://github.com/LiteSOC/
npm_package_name: n8n-nodes-litesoc
npm_version: 1.4.1
community_fetched_at: 2026-07-14T14:40:34.057Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Track security events and manage alerts with LiteSOC. Severity is automatically assigned based on event type.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "event",
      "options": [
        {
          "name": "Alert",
          "value": "alert",
          "description": "Manage security alerts. Each alert includes severity (critical/high/medium/low) auto-assigned by LiteSOC."
        },
        {
          "name": "Event",
          "value": "event",
          "description": "Track and retrieve security events. Each event includes severity (critical/warning/info) auto-assigned by LiteSOC based on event type."
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an alert",
          "description": "Get a specific alert. Returns: id (UUID), alert_type, severity (critical/high/medium/low), status, title, description, source_ip, actor_id, trigger_event_id (UUID of triggering event), forensics (network/location data for Pro+ tiers, null for Free), created_at, updated_at, metadata. Severity is auto-assigned by LiteSOC."
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many alerts",
          "description": "Get many alerts. Each alert includes: id (UUID), trigger_event_id (UUID of triggering event), forensics object (network: is_vpn, is_tor, is_proxy, is_datacenter, asn, threat_score; location: city, country_code, region, latitude, longitude, timezone) for Pro+ tiers. Severity (critical/high/medium/low) is auto-assigned by LiteSOC."
        },
        {
          "name": "Resolve",
          "value": "resolve",
          "action": "Resolve an alert",
          "description": "Mark an alert as resolved"
        },
        {
          "name": "Mark Safe",
          "value": "markSafe",
          "action": "Mark alert as safe",
          "description": "Mark an alert as safe (false positive)"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "alert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Track a security event",
          "description": "Track a security event. Note: Severity is automatically assigned by LiteSOC based on the event type and cannot be set manually."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a security event",
          "description": "Fetches details of a single event. Returns: id (UUID), event_name, severity (critical/warning/info), actor_id, ip_address, trigger_event_id, forensics object (network: is_vpn, is_tor, is_proxy, is_datacenter, asn, threat_score; location: city, country_code, region, latitude, longitude, timezone) for Pro+ tiers (null for Free tier), metadata, created_at. Severity is auto-assigned by LiteSOC. Note: Free tier users can only fetch events from the last 7 days."
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many security events",
          "description": "Get many security events. Each event includes: id (UUID), trigger_event_id, forensics object (network/location data for Pro+ tiers, null for Free tier), severity (critical/warning/info) auto-assigned by LiteSOC based on event type, enabling easy filtering in IF/Switch nodes."
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "event"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get an alert",
      "description": "Get a specific alert. Returns: id (UUID), alert_type, severity (critical/high/medium/low), status, title, description, source_ip, actor_id, trigger_event_id (UUID of triggering event), forensics (network/location data for Pro+ tiers, null for Free), created_at, updated_at, metadata. Severity is auto-assigned by LiteSOC.",
      "resource": "alert"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many alerts",
      "description": "Get many alerts. Each alert includes: id (UUID), trigger_event_id (UUID of triggering event), forensics object (network: is_vpn, is_tor, is_proxy, is_datacenter, asn, threat_score; location: city, country_code, region, latitude, longitude, timezone) for Pro+ tiers. Severity (critical/high/medium/low) is auto-assigned by LiteSOC.",
      "resource": "alert"
    },
    {
      "name": "Resolve",
      "value": "resolve",
      "action": "Resolve an alert",
      "description": "Mark an alert as resolved",
      "resource": "alert"
    },
    {
      "name": "Mark Safe",
      "value": "markSafe",
      "action": "Mark alert as safe",
      "description": "Mark an alert as safe (false positive)",
      "resource": "alert"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Track a security event",
      "description": "Track a security event. Note: Severity is automatically assigned by LiteSOC based on the event type and cannot be set manually.",
      "resource": "event"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a security event",
      "description": "Fetches details of a single event. Returns: id (UUID), event_name, severity (critical/warning/info), actor_id, ip_address, trigger_event_id, forensics object (network: is_vpn, is_tor, is_proxy, is_datacenter, asn, threat_score; location: city, country_code, region, latitude, longitude, timezone) for Pro+ tiers (null for Free tier), metadata, created_at. Severity is auto-assigned by LiteSOC. Note: Free tier users can only fetch events from the last 7 days.",
      "resource": "event"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many security events",
      "description": "Get many security events. Each event includes: id (UUID), trigger_event_id, forensics object (network/location data for Pro+ tiers, null for Free tier), severity (critical/warning/info) auto-assigned by LiteSOC based on event type, enabling easy filtering in IF/Switch nodes.",
      "resource": "event"
    }
  ]

npm_readme:
  # n8n-nodes-litesoc

  <img src="assets/LiteSoc.svg" alt="LiteSOC Logo" width="120">

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-litesoc.svg)](https://www.npmjs.com/package/n8n-nodes-litesoc)
  [![CI](https://github.com/LiteSOC/n8n-nodes-litesoc/actions/workflows/ci.yml/badge.svg)](https://github.com/LiteSOC/n8n-nodes-litesoc/actions/workflows/ci.yml)
  [![Tests](https://img.shields.io/badge/tests-103%20passed-brightgreen.svg)](https://github.com/LiteSOC/n8n-nodes-litesoc/actions)
  [![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)](https://github.com/LiteSOC/n8n-nodes-litesoc/actions)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![npm provenance](https://img.shields.io/badge/npm-provenance-blue.svg)](https://docs.npmjs.com/generating-provenance-statements)

  This is an n8n community node for [LiteSOC](https://www.litesoc.io) - Security Observability for Startups.

  Track security events and manage alerts directly from your n8n workflows.

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

  ## Installation

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

  ### npm

  ```bash
  npm install n8n-nodes-litesoc
  ```

  ### n8n Desktop

  1. Go to **Settings** → **Community Nodes**
  2. Click **Install a community node**
  3. Enter `n8n-nodes-litesoc`
  4. Click **Install**

  ## Operations

  ### Event

  Track security events in your application:

  | Operation | Description |
  |-----------|-------------|
  | **Create** | Track a security event (login, logout, role change, etc.) |
  | **Get** | Retrieve a specific event by ID |
  | **Get Many** | List events with optional filters |

  **Supported Event Types:**
  - Authentication: `auth.login_success`, `auth.login_failed`, `auth.logout`, `auth.mfa_enabled`, `auth.mfa_disabled`
  - Authorization: `authz.access_denied`, `authz.role_changed`, `authz.permission_granted`
  - Admin: `admin.user_created`, `admin.user_deleted`, `admin.privilege_escalation`
  - Data: `data.export`, `data.bulk_delete`, `data.sensitive_access`
  - Security: `security.suspicious_activity`, `security.brute_force_detected`
  - Custom: Define your own event types

  ### Alert

  Manage security alerts generated by LiteSOC:

  | Operation | Description |
  |-----------|-------------|
  | **Get** | Retrieve a specific alert by ID |
  | **Get Many** | List alerts with filters (severity, status, type) |
  | **Resolve** | Mark an alert as resolved |
  | **Mark Safe** | Mark an alert as a false positive |

  **Alert Types:**
  - Brute Force Attack
  - Impossible Travel
  - Geo Anomaly
  - New Device
  - Privilege Escalation
  - Data Exfiltration
  - Rate Limit Exceeded

  ## Credentials

  To use this node, you need a LiteSOC API key:

  1. Sign up at [litesoc.io](https://www.litesoc.io)
  2. Go to **Settings** → **API Keys**
  3. Click **Generate API Key**
  4. Copy the key and add it to your n8n credentials

  ## Usage Examples

  ### Track Failed Login Attempts

  ```
  1. Trigger: Webhook (receives login failure from your app)
  2. LiteSOC Node: Create Event
     - Event Type: auth.login_failed
     - Actor ID: {{ $json.user_id }}
     - Actor Email: {{ $json.email }}
     - User IP: {{ $json.ip_address }}
     - Metadata: { "reason": "invalid_password" }
  ```

  ### Auto-respond to Critical Alerts

  ```
  1. Trigger: Schedule (every 5 minutes)
  2. LiteSOC Node: Get Many Alerts
     - Filters: severity=critical, status=open
  3. IF Node: Check if alerts exist
  4. Slack Node: Send notification to #security channel
  5. LiteSOC Node: Resolve Alert
  ```

  ### Route Alerts by Severity

  ```
  1. Trigger: Webhook (alert webhook from LiteSOC)
  2. Switch Node: Route by {{ $json.severity }}
     - critical → PagerDuty
     - high → Slack #security
     - medium → Email security team
     - low → Log for review
  ```

  ## Severity

  **Important:** Severity is automatically assigned by LiteSOC based on the event type and threat detection rules. You cannot manually set severity when creating events.

  **Event Severity Levels:**
  - `critical` - Immediate action required (privilege_escalation, brute_force)
  - `warning` - Requires attention (login_failed, mfa_disabled)
  - `info` - Normal activity (login_success, logout)

  **Alert Severity Levels:**
  - `critical` - Active attack or breach
  - `high` - Significant threat detected
  - `medium` - Suspicious activity
  - `low` - Minor anomaly

  ## Plan Restrictions

  Some features require a Pro or Enterprise plan:

  | Feature | Free | Pro | Enterprise |
  |---------|------|-----|------------|
  | Track Events | ✅ | ✅ | ✅ |
  | Get Events (last 7 days) | ✅ | ✅ | ✅ |
  | Get Events (30+ days) | ❌ | ✅ | ✅ |
  | Get Alerts | ❌ | ✅ | ✅ |
  | Resolve Alerts | ❌ | ✅ | ✅ |
  | Mark Alerts Safe | ❌ | ✅ | ✅ |
  | IP Enrichment (VPN/Proxy) | ❌ | ✅ | ✅ |
  | Geo Location Maps | ❌ | ✅ | ✅ |

  If you attempt a restricted operation on the Free plan, you'll receive a clear error message with upgrade instructions.

  ## Resources

  * [LiteSOC Documentation](https://www.litesoc.io/docs/api)
  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [LiteSOC Pricing](https://www.litesoc.io/pricing)

  ## Development

  ### Setup

  ```bash
  npm install
  ```

  ### Build

  ```bash
  npm run build
  ```

  ### Testing

  ```bash
  # Run all tests
  npm test

  # Run tests in watch mode
  npm run test:watch

  # Run tests with coverage
  npm run test:coverage
  ```

  ### Linting

  ```bash
  # Check for lint errors
  npm run lint

  # Fix lint errors automatically
  npm run lintfix
  ```

  ## CI/CD

  This package uses GitHub Actions for continuous integration and publishing with npm provenance.

  ### Continuous Integration

  The CI workflow (`.github/workflows/ci.yml`) runs on every push and pull request:
  - Tests run on Node.js 18 and 20
  - ESLint checks code quality
  - Test coverage is collected

  ### Publishing with Provenance

  This package is published with [npm provenance](https://docs.npmjs.com/generating-provenance-statements), which provides a verifiable link between the published package and its source code.

  **To publish a new version:**

  1. Update the version in `package.json`
  2. Commit and push the changes
  3. Create a new GitHub Release with a tag matching the version (e.g., `v1.0.0`)
  4. The publish workflow will automatically build, test, and publish to npm with provenance

  > **n8n Requirement:** Starting May 1st, 2026, all n8n community nodes must be published using GitHub Actions with provenance. This package already meets this requirement.

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Integrates LiteSOC security observability platform with n8n workflows to track security events and manage alerts automatically.","capabilities":["Create security events with custom metadata","Retrieve specific events by ID","List events with optional filters","Retrieve specific alerts by ID","List alerts with filters for severity, status, and type","Resolve security alerts","Mark alerts as safe (false positives)","Automatic severity assignment based on event type"],"authentication":"API key required","commonUseCases":["Track failed login attempts and authentication failures","Automate responses to critical security alerts","Route alerts to different channels based on severity","Monitor privilege escalation and data exfiltration events","Integrate security telemetry into existing incident response workflows"],"limitations":["Severity cannot be manually set when creating events (automatically assigned by LiteSOC)","Advanced features like 30+ day event history, alert management, and IP enrichment require Pro or Enterprise plans","Free plan limited to basic event tracking only"],"relatedNodes":["n8n-nodes-slack","n8n-nodes-pagerduty","n8n-nodes-email"]}


node_type: n8n-nodes-mihu.mihuTrigger
package_name: n8n-nodes-mihu
display_name: Mihu AI Trigger
description: Triggers when a Mihu AI voice or text evaluation is completed
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: fundaduman
author_github_url: https://github.com/mihu-ai/
npm_package_name: n8n-nodes-mihu
npm_version: 0.1.17
community_fetched_at: 2026-07-14T14:40:34.059Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-mihu

  This is an n8n community node for [Mihu AI](https://mihu.ai) — an AI-powered contact center and voice agent platform.

  ## Installation

  In your n8n instance, go to **Settings → Community Nodes → Install** and enter `n8n-nodes-mihu`.

  ## Credentials

  You need two things to connect:

  - **API Key** — found in your Mihu AI dashboard under Settings → Developer
  - **Account Domain** — your Mihu subdomain (e.g. `acme` for `acme.mihu.ai`)

  ## Supported Resources & Operations

  ### Contact
  - Create Contact
  - Find Contact
  - Update Contact
  - Delete Contact

  ### Call
  - Create Call (outbound AI call)

  ### WhatsApp
  - Send Template Message

  ### Dataset
  - Send Text Prompt
  - Create Record
  - Update Record
  - Delete Record
  - Sync Dataset
  - Assign to Agent
  - Find Dataset
  - List Records

  ### Appointment
  - Find All Appointments
  - Create Appointment
  - Update Appointment
  - Update Appointment Status
  - Delete Appointment

  ### Task
  - Create Task

  ### Listing
  - Create Listing
  - Send Contacts to Listing
  - Delete Contact From Listing

  ## Triggers

  ### Mihu AI Trigger
  - **New Voice Evaluation** — fires when a voice session report is generated
  - **New Text Evaluation** — fires when a text session report is generated

  ## Example Usage

  1. Add a **Mihu AI** node to your workflow
  2. Select **Resource: Contact** and **Operation: Create**
  3. Fill in the phone number and other contact details
  4. Execute the workflow — the contact will be created in your Mihu AI account

  ## Links

  - [Mihu AI Website](https://mihu.ai)
  - [API Documentation](https://developers.mihu.ai)
  - [Support](mailto:support@mihu.ai)

ai_documentation_summary:
  {"purpose":"The Mihu AI Trigger node initiates workflows when voice or text session evaluations are completed in the Mihu AI contact center platform. It serves as the entry point for automating responses based on AI-generated session reports.","capabilities":["Create, find, update, and delete contacts","Create outbound AI calls","Send WhatsApp template messages","Manage datasets (send prompts, create/update/delete records, sync, assign to agents)","Manage appointments (find, create, update status, delete)","Create tasks","Manage listings (create, send contacts, remove contacts)","Trigger on new voice evaluation completion","Trigger on new text evaluation completion"],"authentication":"API key required","commonUseCases":["Automate follow-up actions after AI voice call evaluations","Trigger workflows based on sentiment or outcome of text chat sessions","Sync contact data between Mihu AI and other systems upon evaluation","Automate appointment scheduling based on session results"],"limitations":["Requires both API Key and Account Domain for configuration","Limited to operations supported by the Mihu AI API"],"relatedNodes":[]}


node_type: n8n-nodes-mihu.mihu
package_name: n8n-nodes-mihu
display_name: Mihu AI
description: Interact with Mihu AI contact center and voice agent platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: fundaduman
author_github_url: https://github.com/mihu-ai/
npm_package_name: n8n-nodes-mihu
npm_version: 0.1.17
community_fetched_at: 2026-07-14T14:40:34.060Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "contact",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Appointment",
          "value": "appointment"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Dataset",
          "value": "dataset"
        },
        {
          "name": "Listing",
          "value": "listing"
        },
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "WhatsApp",
          "value": "whatsapp"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Add Note",
          "value": "addNote",
          "action": "Add a note to an agent"
        },
        {
          "name": "Add Webhook",
          "value": "addWebhook",
          "action": "Add a webhook to an agent"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create an agent"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an agent"
        },
        {
          "name": "Update Training",
          "value": "updateTraining",
          "action": "Update training data for an agent"
        },
        {
          "name": "Update Webhook",
          "value": "updateWebhook",
          "action": "Update a webhook on an agent"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find a contact"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Call",
          "value": "create",
          "action": "Create a call"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a conversation"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List conversations"
        },
        {
          "name": "List Messages",
          "value": "listMessages",
          "action": "List messages of a conversation"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send SMS",
          "value": "send",
          "action": "Send an SMS message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendTemplate",
      "options": [
        {
          "name": "Send WhatsApp Template",
          "value": "sendTemplate",
          "action": "Send a WhatsApp template message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "whatsapp"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createRecord",
      "options": [
        {
          "name": "Assign to Agent",
          "value": "assignToAgent",
          "action": "Link a dataset to an AI agent"
        },
        {
          "name": "Create Record",
          "value": "createRecord",
          "action": "Add a new record to a dataset"
        },
        {
          "name": "Delete Record",
          "value": "deleteRecord",
          "action": "Delete a record from a dataset"
        },
        {
          "name": "Find",
          "value": "find",
          "action": "Find a dataset by ID"
        },
        {
          "name": "List Records",
          "value": "listRecords",
          "action": "Get all records from a dataset"
        },
        {
          "name": "Send Text Prompt",
          "value": "sendTextPrompt",
          "action": "Import plain text as training data"
        },
        {
          "name": "Sync",
          "value": "sync",
          "action": "Sync and refresh a dataset"
        },
        {
          "name": "Update Record",
          "value": "updateRecord",
          "action": "Update an existing record"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dataset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an appointment"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an appointment"
        },
        {
          "name": "Find All",
          "value": "findAll",
          "action": "Get all appointments"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an appointment"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update appointment status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "appointment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a scheduled task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a listing"
        },
        {
          "name": "Delete Contact",
          "value": "deleteContact",
          "action": "Remove a contact from a listing"
        },
        {
          "name": "Send Contacts",
          "value": "sendContacts",
          "action": "Add contacts to a listing"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "listing"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Note",
      "value": "addNote",
      "action": "Add a note to an agent",
      "resource": "agent"
    },
    {
      "name": "Add Webhook",
      "value": "addWebhook",
      "action": "Add a webhook to an agent",
      "resource": "agent"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an agent",
      "resource": "agent"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an agent",
      "resource": "agent"
    },
    {
      "name": "Update Training",
      "value": "updateTraining",
      "action": "Update training data for an agent",
      "resource": "agent"
    },
    {
      "name": "Update Webhook",
      "value": "updateWebhook",
      "action": "Update a webhook on an agent",
      "resource": "agent"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "resource": "contact"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact",
      "resource": "contact"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find a contact",
      "resource": "contact"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact",
      "resource": "contact"
    },
    {
      "name": "Create Call",
      "value": "create",
      "action": "Create a call",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a conversation",
      "resource": "conversation"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List conversations",
      "resource": "conversation"
    },
    {
      "name": "List Messages",
      "value": "listMessages",
      "action": "List messages of a conversation",
      "resource": "conversation"
    },
    {
      "name": "Send SMS",
      "value": "send",
      "action": "Send an SMS message",
      "resource": "sms"
    },
    {
      "name": "Send WhatsApp Template",
      "value": "sendTemplate",
      "action": "Send a WhatsApp template message",
      "resource": "whatsapp"
    },
    {
      "name": "Assign to Agent",
      "value": "assignToAgent",
      "action": "Link a dataset to an AI agent",
      "resource": "dataset"
    },
    {
      "name": "Create Record",
      "value": "createRecord",
      "action": "Add a new record to a dataset",
      "resource": "dataset"
    },
    {
      "name": "Delete Record",
      "value": "deleteRecord",
      "action": "Delete a record from a dataset",
      "resource": "dataset"
    },
    {
      "name": "Find",
      "value": "find",
      "action": "Find a dataset by ID",
      "resource": "dataset"
    },
    {
      "name": "List Records",
      "value": "listRecords",
      "action": "Get all records from a dataset",
      "resource": "dataset"
    },
    {
      "name": "Send Text Prompt",
      "value": "sendTextPrompt",
      "action": "Import plain text as training data",
      "resource": "dataset"
    },
    {
      "name": "Sync",
      "value": "sync",
      "action": "Sync and refresh a dataset",
      "resource": "dataset"
    },
    {
      "name": "Update Record",
      "value": "updateRecord",
      "action": "Update an existing record",
      "resource": "dataset"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an appointment",
      "resource": "appointment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an appointment",
      "resource": "appointment"
    },
    {
      "name": "Find All",
      "value": "findAll",
      "action": "Get all appointments",
      "resource": "appointment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an appointment",
      "resource": "appointment"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update appointment status",
      "resource": "appointment"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a scheduled task",
      "resource": "task"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a listing",
      "resource": "listing"
    },
    {
      "name": "Delete Contact",
      "value": "deleteContact",
      "action": "Remove a contact from a listing",
      "resource": "listing"
    },
    {
      "name": "Send Contacts",
      "value": "sendContacts",
      "action": "Add contacts to a listing",
      "resource": "listing"
    }
  ]

npm_readme:
  # n8n-nodes-mihu

  This is an n8n community node for [Mihu AI](https://mihu.ai) — an AI-powered contact center and voice agent platform.

  ## Installation

  In your n8n instance, go to **Settings → Community Nodes → Install** and enter `n8n-nodes-mihu`.

  ## Credentials

  You need two things to connect:

  - **API Key** — found in your Mihu AI dashboard under Settings → Developer
  - **Account Domain** — your Mihu subdomain (e.g. `acme` for `acme.mihu.ai`)

  ## Supported Resources & Operations

  ### Contact
  - Create Contact
  - Find Contact
  - Update Contact
  - Delete Contact

  ### Call
  - Create Call (outbound AI call)

  ### WhatsApp
  - Send Template Message

  ### Dataset
  - Send Text Prompt
  - Create Record
  - Update Record
  - Delete Record
  - Sync Dataset
  - Assign to Agent
  - Find Dataset
  - List Records

  ### Appointment
  - Find All Appointments
  - Create Appointment
  - Update Appointment
  - Update Appointment Status
  - Delete Appointment

  ### Task
  - Create Task

  ### Listing
  - Create Listing
  - Send Contacts to Listing
  - Delete Contact From Listing

  ## Triggers

  ### Mihu AI Trigger
  - **New Voice Evaluation** — fires when a voice session report is generated
  - **New Text Evaluation** — fires when a text session report is generated

  ## Example Usage

  1. Add a **Mihu AI** node to your workflow
  2. Select **Resource: Contact** and **Operation: Create**
  3. Fill in the phone number and other contact details
  4. Execute the workflow — the contact will be created in your Mihu AI account

  ## Links

  - [Mihu AI Website](https://mihu.ai)
  - [API Documentation](https://developers.mihu.ai)
  - [Support](mailto:support@mihu.ai)

ai_documentation_summary:
  {"purpose":"Interact with the Mihu AI contact center and voice agent platform to manage contacts, calls, WhatsApp messages, datasets, appointments, and tasks.","capabilities":["Create, find, update, and delete contacts","Create outbound AI calls","Send WhatsApp template messages","Manage datasets (create, update, delete, sync, assign to agent, find, list)","Manage appointments (find, create, update status, delete)","Create tasks","Manage listings (create, send contacts, delete contacts)","Trigger on new voice evaluation reports","Trigger on new text evaluation reports"],"authentication":"API key and Account Domain required","commonUseCases":["Automating outbound AI voice calls for customer support","Sending WhatsApp template messages to leads","Synchronizing contact data between external systems and Mihu AI","Automating appointment scheduling and status updates","Processing voice and text session evaluation reports"],"limitations":[],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:34
author_name: m-kobori
author_github_url: https://github.com/re-port-flow/
npm_package_name: n8n-nodes-reportflow
npm_version: 0.1.8
community_fetched_at: 2026-07-14T14:40:34.061Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Stop re-entering the same data into every document. Connect your workflow data to Re:port Flow templates and generate invoices, contracts, and reports as PDFs automatically.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "pdf",
      "options": [
        {
          "name": "PDF",
          "value": "pdf",
          "description": "Generate PDF files from designs"
        },
        {
          "name": "Design",
          "value": "design",
          "description": "Get design parameter schema"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "syncSingle",
      "options": [
        {
          "name": "Generate (Sync)",
          "value": "syncSingle",
          "action": "Generate a single PDF synchronously",
          "description": "Generate a single PDF synchronously and return the binary"
        },
        {
          "name": "Generate (Async)",
          "value": "asyncSingle",
          "action": "Generate a single PDF asynchronously",
          "description": "Request a single PDF asynchronously and get requestId and file info"
        },
        {
          "name": "Generate Multiple (Sync)",
          "value": "syncMultiple",
          "action": "Generate multiple PDFs synchronously as ZIP",
          "description": "Generate multiple PDFs synchronously and return a ZIP binary"
        },
        {
          "name": "Generate Multiple (Async)",
          "value": "asyncMultiple",
          "action": "Generate multiple PDFs asynchronously",
          "description": "Request multiple PDFs asynchronously and get requestId and file info"
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download a generated file",
          "description": "Download a generated file by requestId (and optional fileId)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pdf"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getParameters",
      "options": [
        {
          "name": "Get Parameters",
          "value": "getParameters",
          "action": "Get design parameters",
          "description": "Get the parameter schema of a design"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "design"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Generate (Sync)",
      "value": "syncSingle",
      "action": "Generate a single PDF synchronously",
      "description": "Generate a single PDF synchronously and return the binary",
      "resource": "pdf"
    },
    {
      "name": "Generate (Async)",
      "value": "asyncSingle",
      "action": "Generate a single PDF asynchronously",
      "description": "Request a single PDF asynchronously and get requestId and file info",
      "resource": "pdf"
    },
    {
      "name": "Generate Multiple (Sync)",
      "value": "syncMultiple",
      "action": "Generate multiple PDFs synchronously as ZIP",
      "description": "Generate multiple PDFs synchronously and return a ZIP binary",
      "resource": "pdf"
    },
    {
      "name": "Generate Multiple (Async)",
      "value": "asyncMultiple",
      "action": "Generate multiple PDFs asynchronously",
      "description": "Request multiple PDFs asynchronously and get requestId and file info",
      "resource": "pdf"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download a generated file",
      "description": "Download a generated file by requestId (and optional fileId)",
      "resource": "pdf"
    },
    {
      "name": "Get Parameters",
      "value": "getParameters",
      "action": "Get design parameters",
      "description": "Get the parameter schema of a design",
      "resource": "design"
    }
  ]

npm_readme:
  # n8n-nodes-reportflow

  This is an n8n community node for [ReportFlow](https://re-port-flow.com) — a PDF generation API that creates PDFs from design templates.

  [ReportFlow](https://re-port-flow.com) is a PDF form generation API. Design templates in the visual editor, then generate PDFs via API by passing parameters.

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

  ## Installation

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

  ## Credentials

  This node supports two authentication methods:

  ### AppKey Authentication
  1. Go to your ReportFlow workspace settings → API Keys
  2. Copy your **AppKey**
  3. In n8n, create a new **ReportFlow AppKey API** credential and paste it

  ### OAuth2 (Client Credentials)
  1. Register an OAuth2 client in your ReportFlow workspace
  2. In n8n, create a new **ReportFlow OAuth2 API** credential
  3. Enter your **Client ID** and **Client Secret**
  4. Configure the scopes you need (e.g., `templates:read pdf:generate`)

  ## Operations

  ### PDF
  | Operation | Description |
  |-----------|-------------|
  | **Generate (Sync)** | Generate a single PDF synchronously. Returns the PDF binary. |
  | **Generate (Async)** | Generate a single PDF asynchronously. Returns a download URL. |
  | **Generate Multiple (Sync)** | Generate multiple PDFs as a ZIP file. |
  | **Generate Multiple (Async)** | Generate multiple PDFs asynchronously. |
  | **Download** | Download a previously generated file by request UUID. |

  ### Design
  | Operation | Description |
  |-----------|-------------|
  | **Get Parameters** | Retrieve the parameter structure of a design template. |

  ## Usage

  ### Basic PDF Generation
  1. Add the **ReportFlow** node to your workflow
  2. Select **PDF** → **Generate (Sync)**
  3. Enter your **Design ID** (UUID from the ReportFlow dashboard)
  4. Set the **Version** number
  5. Provide a **File Name** (e.g., `invoice.pdf`)
  6. Enter the **Parameters** as JSON matching your design template

  ### Getting Design Parameters
  Use **Design** → **Get Parameters** first to see what parameters your template expects, then pass those to the PDF generation operation.

  ## Resources

  * [ReportFlow API Documentation](https://doc.re-port-flow.com)
  * [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  * [Postman Collection](https://www.postman.com/mone-pla/reportflow)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Automatically generates PDF documents (invoices, contracts, reports) from visual design templates by connecting workflow data to Re:port Flow API.","capabilities":["Generate single PDF synchronously","Generate single PDF asynchronously","Generate multiple PDFs as ZIP synchronously","Generate multiple PDFs asynchronously","Download previously generated PDFs by UUID","Retrieve design template parameter structures"],"authentication":"AppKey or OAuth2 (Client Credentials)","commonUseCases":["Automated invoice generation from order data","Dynamic contract creation from user inputs","Batch report generation for analytics","Form-to-PDF conversion for customer onboarding"],"limitations":["Requires pre-designed templates in the ReportFlow visual editor","Parameter structure must be retrieved before generation to ensure compatibility","Async operations return download URLs rather than immediate binary data"],"relatedNodes":[]}


node_type: @biztory/n8n-nodes-tableau-rest-api.tableauRestApi
package_name: @biztory/n8n-nodes-tableau-rest-api
display_name: Tableau
description: Interact with the Tableau REST API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: timothyvermeirenbiztory
author_github_url: https://github.com/biztory/n8n-nodes-tableau-rest-api.git
npm_package_name: @biztory/n8n-nodes-tableau-rest-api
npm_version: 0.2.4
community_fetched_at: 2026-07-14T14:40:34.063Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "workbook",
      "options": [
        {
          "name": "Authentication",
          "value": "auth"
        },
        {
          "name": "Data Source",
          "value": "datasource"
        },
        {
          "name": "Group",
          "value": "group"
        },
        {
          "name": "Metadata API",
          "value": "metadataApi"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "View",
          "value": "view"
        },
        {
          "name": "VizQL Data Service",
          "value": "vizqlDataService"
        },
        {
          "name": "Workbook",
          "value": "workbook"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getToken",
      "options": [
        {
          "name": "Get Token",
          "value": "getToken",
          "action": "Get an authentication token",
          "description": "Sign in and return the authentication token, site ID, and base URL. Use the output fields to build custom HTTP Request nodes that call Tableau REST API endpoints not yet supported by this node."
        },
        {
          "name": "Sign Out",
          "value": "signOut",
          "action": "Sign out",
          "description": "Invalidate the current authentication token on Tableau and clear the cached token so that the next Tableau node in this workflow re-authenticates."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auth"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a data source",
          "description": "Delete a data source from the site"
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download a data source",
          "description": "Download a data source file (.tds or .tdsx)"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a data source",
          "description": "Get a single data source by ID"
        },
        {
          "name": "Get Connections",
          "value": "getConnections",
          "action": "Get connections for a data source",
          "description": "Get all connections belonging to a data source"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many data sources",
          "description": "Get many data sources for the site"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a data source",
          "description": "Publish a data source file (.tds or .tdsx) to the site"
        },
        {
          "name": "Refresh",
          "value": "refresh",
          "action": "Refresh a data source",
          "description": "Trigger an extract refresh for a data source"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a data source",
          "description": "Update the properties of a data source"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "datasource"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add User",
          "value": "addUser",
          "action": "Add a user to a group",
          "description": "Add a user to a group"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a group",
          "description": "Create a new local group on the site"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many groups",
          "description": "Get many groups on the site"
        },
        {
          "name": "Get Users in Group",
          "value": "getUsersInGroup",
          "action": "Get users in a group",
          "description": "Get all users in a group"
        },
        {
          "name": "Remove User",
          "value": "removeUser",
          "action": "Remove a user from a group",
          "description": "Remove a user from a group"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a group",
          "description": "Update the properties of a group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "group"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "executeQuery",
      "options": [
        {
          "name": "Execute GraphQL Query",
          "value": "executeQuery",
          "action": "Execute a graphql query against the metadata api",
          "description": "Execute a GraphQL query against the Tableau Metadata API and return the raw JSON response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "metadataApi"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a project",
          "description": "Create a new project on the site"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a project",
          "description": "Delete a project and all its contents"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many projects",
          "description": "Get many projects on the site"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a project",
          "description": "Update the properties of a project"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add to Site",
          "value": "add",
          "action": "Add a user to the site",
          "description": "Add a user to the site"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get a single user by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many users",
          "description": "Get many users on the site"
        },
        {
          "name": "Remove From Site",
          "value": "remove",
          "action": "Remove a user from the site",
          "description": "Remove a user from the site"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user",
          "description": "Update the properties of a user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a view",
          "description": "Get a single view by ID"
        },
        {
          "name": "Get Data",
          "value": "getData",
          "action": "Get view data",
          "description": "Download the underlying data of a view as CSV"
        },
        {
          "name": "Get Image",
          "value": "getImage",
          "action": "Get view image",
          "description": "Download a rendered PNG image of a view"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many views",
          "description": "Get many views for the site"
        },
        {
          "name": "Get PDF",
          "value": "getPdf",
          "action": "Get view PDF",
          "description": "Download a PDF export of a view"
        },
        {
          "name": "Get Preview Image",
          "value": "getPreviewImage",
          "action": "Get view preview image",
          "description": "Download a small PNG thumbnail of a view"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "view"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "readMetadata",
      "options": [
        {
          "name": "Build Query",
          "value": "buildQuery",
          "action": "Build a query JSON for use with query datasource",
          "description": "Build a structured query JSON using a form UI. Fields are loaded dynamically from the datasource metadata. Output the query JSON to pass to the \"Query Datasource\" operation"
        },
        {
          "name": "Get Datasource Model",
          "value": "getDatasourceModel",
          "action": "Get the logical table model for a datasource",
          "description": "Returns the logical table structure and relationships for a datasource — useful for understanding multi-table data models"
        },
        {
          "name": "Query Datasource",
          "value": "queryDatasource",
          "action": "Execute a query against a datasource",
          "description": "Query a Tableau datasource and return the resulting rows. Provide the query JSON directly or pipe it from the \"Build Query\" operation."
        },
        {
          "name": "Read Metadata",
          "value": "readMetadata",
          "action": "Read field metadata from a datasource",
          "description": "Returns all fields in a datasource with their captions, data types, roles, and aggregation defaults. Use this before querying to discover available field names."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vizqlDataService"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a workbook",
          "description": "Delete a workbook from the site"
        },
        {
          "name": "Download",
          "value": "download",
          "action": "Download a workbook",
          "description": "Download a workbook file (.twb or .twbx)"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a workbook",
          "description": "Get a single workbook by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many workbooks",
          "description": "Get many workbooks for the site"
        },
        {
          "name": "Get Views",
          "value": "getViews",
          "action": "Get views for a workbook",
          "description": "Get all views belonging to a workbook"
        },
        {
          "name": "Publish",
          "value": "publish",
          "action": "Publish a workbook",
          "description": "Publish a workbook file (.twb or .twbx) to the site"
        },
        {
          "name": "Refresh",
          "value": "refresh",
          "action": "Refresh a workbook",
          "description": "Trigger an extract refresh for a workbook"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a workbook",
          "description": "Update the properties of a workbook"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workbook"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Token",
      "value": "getToken",
      "action": "Get an authentication token",
      "description": "Sign in and return the authentication token, site ID, and base URL. Use the output fields to build custom HTTP Request nodes that call Tableau REST API endpoints not yet supported by this node.",
      "resource": "auth"
    },
    {
      "name": "Sign Out",
      "value": "signOut",
      "action": "Sign out",
      "description": "Invalidate the current authentication token on Tableau and clear the cached token so that the next Tableau node in this workflow re-authenticates.",
      "resource": "auth"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a data source",
      "description": "Delete a data source from the site",
      "resource": "datasource"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download a data source",
      "description": "Download a data source file (.tds or .tdsx)",
      "resource": "datasource"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a data source",
      "description": "Get a single data source by ID",
      "resource": "datasource"
    },
    {
      "name": "Get Connections",
      "value": "getConnections",
      "action": "Get connections for a data source",
      "description": "Get all connections belonging to a data source",
      "resource": "datasource"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many data sources",
      "description": "Get many data sources for the site",
      "resource": "datasource"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a data source",
      "description": "Publish a data source file (.tds or .tdsx) to the site",
      "resource": "datasource"
    },
    {
      "name": "Refresh",
      "value": "refresh",
      "action": "Refresh a data source",
      "description": "Trigger an extract refresh for a data source",
      "resource": "datasource"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a data source",
      "description": "Update the properties of a data source",
      "resource": "datasource"
    },
    {
      "name": "Add User",
      "value": "addUser",
      "action": "Add a user to a group",
      "description": "Add a user to a group",
      "resource": "group"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a group",
      "description": "Create a new local group on the site",
      "resource": "group"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many groups",
      "description": "Get many groups on the site",
      "resource": "group"
    },
    {
      "name": "Get Users in Group",
      "value": "getUsersInGroup",
      "action": "Get users in a group",
      "description": "Get all users in a group",
      "resource": "group"
    },
    {
      "name": "Remove User",
      "value": "removeUser",
      "action": "Remove a user from a group",
      "description": "Remove a user from a group",
      "resource": "group"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a group",
      "description": "Update the properties of a group",
      "resource": "group"
    },
    {
      "name": "Execute GraphQL Query",
      "value": "executeQuery",
      "action": "Execute a graphql query against the metadata api",
      "description": "Execute a GraphQL query against the Tableau Metadata API and return the raw JSON response",
      "resource": "metadataApi"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a project",
      "description": "Create a new project on the site",
      "resource": "project"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a project",
      "description": "Delete a project and all its contents",
      "resource": "project"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many projects",
      "description": "Get many projects on the site",
      "resource": "project"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a project",
      "description": "Update the properties of a project",
      "resource": "project"
    },
    {
      "name": "Add to Site",
      "value": "add",
      "action": "Add a user to the site",
      "description": "Add a user to the site",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get a single user by ID",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many users",
      "description": "Get many users on the site",
      "resource": "user"
    },
    {
      "name": "Remove From Site",
      "value": "remove",
      "action": "Remove a user from the site",
      "description": "Remove a user from the site",
      "resource": "user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user",
      "description": "Update the properties of a user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a view",
      "description": "Get a single view by ID",
      "resource": "view"
    },
    {
      "name": "Get Data",
      "value": "getData",
      "action": "Get view data",
      "description": "Download the underlying data of a view as CSV",
      "resource": "view"
    },
    {
      "name": "Get Image",
      "value": "getImage",
      "action": "Get view image",
      "description": "Download a rendered PNG image of a view",
      "resource": "view"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many views",
      "description": "Get many views for the site",
      "resource": "view"
    },
    {
      "name": "Get PDF",
      "value": "getPdf",
      "action": "Get view PDF",
      "description": "Download a PDF export of a view",
      "resource": "view"
    },
    {
      "name": "Get Preview Image",
      "value": "getPreviewImage",
      "action": "Get view preview image",
      "description": "Download a small PNG thumbnail of a view",
      "resource": "view"
    },
    {
      "name": "Build Query",
      "value": "buildQuery",
      "action": "Build a query JSON for use with query datasource",
      "description": "Build a structured query JSON using a form UI. Fields are loaded dynamically from the datasource metadata. Output the query JSON to pass to the \"Query Datasource\" operation",
      "resource": "vizqlDataService"
    },
    {
      "name": "Get Datasource Model",
      "value": "getDatasourceModel",
      "action": "Get the logical table model for a datasource",
      "description": "Returns the logical table structure and relationships for a datasource — useful for understanding multi-table data models",
      "resource": "vizqlDataService"
    },
    {
      "name": "Query Datasource",
      "value": "queryDatasource",
      "action": "Execute a query against a datasource",
      "description": "Query a Tableau datasource and return the resulting rows. Provide the query JSON directly or pipe it from the \"Build Query\" operation.",
      "resource": "vizqlDataService"
    },
    {
      "name": "Read Metadata",
      "value": "readMetadata",
      "action": "Read field metadata from a datasource",
      "description": "Returns all fields in a datasource with their captions, data types, roles, and aggregation defaults. Use this before querying to discover available field names.",
      "resource": "vizqlDataService"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a workbook",
      "description": "Delete a workbook from the site",
      "resource": "workbook"
    },
    {
      "name": "Download",
      "value": "download",
      "action": "Download a workbook",
      "description": "Download a workbook file (.twb or .twbx)",
      "resource": "workbook"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a workbook",
      "description": "Get a single workbook by ID",
      "resource": "workbook"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get many workbooks",
      "description": "Get many workbooks for the site",
      "resource": "workbook"
    },
    {
      "name": "Get Views",
      "value": "getViews",
      "action": "Get views for a workbook",
      "description": "Get all views belonging to a workbook",
      "resource": "workbook"
    },
    {
      "name": "Publish",
      "value": "publish",
      "action": "Publish a workbook",
      "description": "Publish a workbook file (.twb or .twbx) to the site",
      "resource": "workbook"
    },
    {
      "name": "Refresh",
      "value": "refresh",
      "action": "Refresh a workbook",
      "description": "Trigger an extract refresh for a workbook",
      "resource": "workbook"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a workbook",
      "description": "Update the properties of a workbook",
      "resource": "workbook"
    }
  ]

npm_readme:
  # n8n-nodes-tableau-rest-api

  This is an n8n community node. It lets you use the [Tableau Server/Cloud REST API](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api.htm) directly in n8n.

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

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



  ## Installation

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

  ## Operations

  The **Tableau** node supports the following resources and operations:

  ### Authentication
  | Operation | Description |
  |-----------|-------------|
  | Get Token | Sign in and return the authentication token, site ID, and base URL. Use the output to build custom HTTP Request nodes for Tableau REST API endpoints not yet covered by this node. |
  | Sign Out | Invalidate the current token on Tableau and clear the cached token so the next Tableau node re-authenticates. |

  ### Workbook
  | Operation | Description |
  |-----------|-------------|
  | Delete | Delete a workbook from the site |
  | Download | Download a workbook file (`.twb` or `.twbx`) |
  | Get | Get a single workbook by ID |
  | Get Many | Get many workbooks for the site, with optional filtering and sorting |
  | Get Views | Get all views belonging to a workbook |
  | Publish | Publish a workbook file to the site |
  | Refresh | Trigger an extract refresh for a workbook |
  | Update | Update the properties of a workbook (name, description, project, owner, etc.) |

  ### View
  | Operation | Description |
  |-----------|-------------|
  | Get | Get a single view by ID |
  | Get Data | Download the underlying data of a view as CSV or parsed JSON |
  | Get Image | Download a rendered PNG image of a view |
  | Get Many | Get many views for the site, with optional filtering and sorting |
  | Get PDF | Download a PDF export of a view |
  | Get Preview Image | Download a small PNG thumbnail of a view |

  ### Data Source
  | Operation | Description |
  |-----------|-------------|
  | Delete | Delete a data source from the site |
  | Download | Download a data source file (`.tds` or `.tdsx`) |
  | Get | Get a single data source by ID |
  | Get Connections | Get all connections belonging to a data source |
  | Get Many | Get many data sources for the site, with optional filtering and sorting |
  | Publish | Publish a data source file to the site |
  | Refresh | Trigger an extract refresh for a data source |
  | Update | Update the properties of a data source (name, certification, project, owner, etc.) |

  ### Project
  | Operation | Description |
  |-----------|-------------|
  | Create | Create a new project on the site |
  | Delete | Delete a project from the site |
  | Get Many | Get many projects for the site, with optional filtering and sorting |
  | Update | Update the properties of a project (name, description, parent project, permissions, etc.) |

  ### Group
  | Operation | Description |
  |-----------|-------------|
  | Add User | Add a user to a group |
  | Create | Create a new local group on the site |
  | Get Many | Get many groups on the site |
  | Get Users in Group | Get all users belonging to a group |
  | Remove User | Remove a user from a group |
  | Update | Update the properties of a group |

  ### User
  | Operation | Description |
  |-----------|-------------|
  | Add to Site | Add a user to the site with a specified site role |
  | Get | Get a single user by ID |
  | Get Many | Get many users on the site, with optional filtering and sorting |
  | Remove From Site | Remove a user from the site |
  | Update | Update the properties of a user (role, name, email, password, auth setting, etc.). Password update is only supported on Tableau Server with local authentication. Warning: This operation is supported in API versions `3.27` and later, only. |

  ### VizQL Data Service
  | Operation | Description |
  |-----------|-------------|
  | Build Query | Build a structured query JSON using a form UI, with fields loaded dynamically from datasource metadata. Outputs the query to pass to Query Datasource. |
  | Get Datasource Model | Return the logical table structure and relationships for a datasource |
  | Query Datasource | Execute a query against a Tableau datasource and return the resulting rows |
  | Read Metadata | Return all fields in a datasource with their captions, data types, roles, and aggregation defaults |

  ## Compatibility

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

  The node uses Tableau REST API version **3.24** by default, which is compatible with Tableau Cloud and Tableau Server 2024.2+. The API version is configurable in the credentials. Refer to the Tableau REST API documentation to identify the correct versions and scope(s) to use for your usage.

  ## Usage

  ### Setting up credentials

  The node supports two authentication methods. Select the one that fits your use case on the **Authentication** dropdown of the Tableau node, then create the matching credential type.

  #### Connected App (JWT)

  Connected Apps authenticate by signing a short-lived JWT with a secret you generate in Tableau. This is the recommended method when you need concurrent workflow executions or fine-grained scope control.

  To set up:

  1. In Tableau, go to **Settings > Connected Apps** and create a new Connected App with **Direct Trust** enabled.
  2. Generate a secret and copy the **Client ID**, **Secret ID**, and **Secret Value**.
  3. In n8n, create a new **Tableau Connected App API** credential and fill in:
     - **Server URL** — the base URL of your Tableau Server or Tableau Cloud instance (e.g. `https://10ax.online.tableau.com`)
     - **Site Content URL** — the part after `/site/` in your site's browser URL. Leave empty for the default site.
     - **Connected App Client ID**, **Secret ID**, and **Secret Value** — from the Connected App you created.
     - **Username** — the default Tableau username (email address) the node will act as. Individual nodes can override this to impersonate a different user — see [Impersonating users](#impersonating-users).
     - **API Version** — defaults to `3.24`. Change only if you need a specific version.
     - **Scopes** — comma-separated JWT scopes (e.g. `tableau:content:read,tableau:content:write`). Defaults to `tableau:content:read`.

  Considerations:
  - Connected Apps require Tableau Server 2022.1+ or Tableau Cloud. Some administrative operations on Tableau Server may require a non-scoped session and will not work with a Connected App token; use a Personal Access Token in those cases.
  - Supports concurrent workflow executions without interference.
  - Supports impersonation.

  For more details see the [Tableau Connected Apps documentation](https://help.tableau.com/current/online/en-us/connected_apps_direct.htm).

  #### Personal Access Token (PAT)

  Personal Access Tokens are long-lived tokens you create directly in your Tableau account settings. They are compatible with all Tableau REST API endpoints on both Tableau Server and Tableau Cloud.

  To set up:

  1. In Tableau, go to your account settings and create a new Personal Access Token. Copy the **Token Name** and **Token Secret** shown at creation time — the secret is not shown again.
  2. In n8n, create a new **Tableau Personal Access Token API** credential and fill in:
     - **Server URL** — the base URL of your Tableau Server or Tableau Cloud instance.
     - **Site Content URL** — the part after `/site/` in your site's browser URL. Leave empty for the default site.
     - **Personal Access Token Name** and **Personal Access Token Secret** — from the token you created.
     - **API Version** — defaults to `3.24`.

  Considerations:
  - **PATs do not support concurrent use.** Signing in with a PAT invalidates any existing session for that token. If multiple workflow executions run simultaneously using the same PAT, they will interfere with each other — each new sign-in will invalidate the previous one, causing the earlier execution to fail mid-run. Use a Connected App if your workflows run concurrently.
  - PATs have a configurable maximum age and expire automatically. Rotate them as needed in your Tableau account settings.
  - Does not support impersonation.

  For more details see the [Tableau Personal Access Tokens documentation](https://help.tableau.com/current/online/en-us/security_personal_access_tokens.htm).

  #### Choosing between the two

  | | Connected App | Personal Access Token |
  |---|---|---|
  | Setup complexity | Requires a Connected App configured by an admin | Self-service in account settings |
  | Concurrent workflow executions | Yes | No — concurrent sign-ins invalidate each other |
  | Compatible with all REST API endpoints | Most (some admin operations on Tableau Server may require a non-scoped session) | Yes |
  | Fine-grained scope control | Yes | No |
  | Impersonation | Yes | No |
  | Tableau Cloud | Yes | Yes |
  | Tableau Server | 2022.1+ | All supported versions |

  ### Impersonating users

  When using **Connected App (JWT)** authentication, Connected Apps are designed to let a site administrator act on behalf of any user on the site. The credential's **Username** field sets the default user, but you can override it per node using the **Impersonate User** field that appears directly below the **Authentication** dropdown.

  This lets a single credential power workflows that touch content as multiple users — for example, downloading views as each member of a team, or performing actions on behalf of a specific content owner.

  The **Impersonate User** field supports [n8n expressions](https://docs.n8n.io/code/expressions/), so you can set it dynamically from upstream data (e.g. loop over a list of usernames and impersonate each one in turn).

  A few things to be aware of:

  - **Requires site admin privileges.** The Connected App must be created by a Tableau Server administrator or Tableau Cloud site administrator. Only a site admin can issue tokens on behalf of other users.
  - **Scopes still apply.** The impersonated session is limited by the scopes configured on the credential. Expand the scopes (e.g. add `tableau:content:write`) if the impersonated user needs to perform write operations.
  - **Separate token per user.** Each distinct impersonated username gets its own cached token within a workflow run, so switching between users in a single execution is safe.
  - **Security.** Whoever has access to the Connected App credential in n8n can impersonate any Tableau user. Share the credential only with users who should have that level of access. Use n8n's project-based access control to scope credential visibility appropriately.

  This field is not available when using **Personal Access Token** authentication, as PATs always authenticate as the token owner.

  ### Authentication token caching

  The node automatically caches the authentication token for the duration of its validity and reuses it across multiple operations in the same workflow run. You do not need to manage tokens manually for most use cases.

  Use the **Authentication > Get Token** operation if you need to pass a token to a downstream **HTTP Request** node to call Tableau REST API endpoints not yet supported by this node.

  ### Working with binary data

  The **Download** operations (Workbook, Data Source, View image/PDF) and the **Publish** operations return or consume binary data. Make sure to use an **n8n binary-aware node** (such as Read/Write Binary File) in conjunction with these operations.

  ### Filtering and pagination

  **Get Many** operations support:
  - **Filters** — narrow results by name, owner, project, tags, or date fields.
  - **Sort** — order results by a field in ascending or descending order.
  - **Return All** — toggle to automatically paginate through all results, or set a fixed **Limit**.

  ### VizQL Data Service

  The VizQL Data Service resource provides programmatic access to query Tableau datasources directly, bypassing the need for a published view. A typical workflow looks like:

  1. Use **Read Metadata** to discover the available fields in a datasource.
  2. Use **Build Query** to construct the query JSON interactively (fields are loaded dynamically from the datasource).
  3. Pass the query JSON output to **Query Datasource** to retrieve the data rows.

  _New to n8n? [Try it out](https://docs.n8n.io/try-it-out/) to get started and learn the basics._

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Tableau REST API reference](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api.htm)
  * [Tableau Connected Apps (JWT auth) documentation](https://help.tableau.com/current/online/en-us/connected_apps_direct.htm)
  * [Tableau Personal Access Tokens documentation](https://help.tableau.com/current/online/en-us/security_personal_access_tokens.htm)
  * [Tableau VizQL Data Service documentation](https://help.tableau.com/current/api/vizql-data-service/en-us/index.html)

ai_documentation_summary:
  {"purpose":"Interact with the Tableau Server/Cloud REST API directly within n8n workflows to manage workbooks, views, data sources, users, and execute data queries.","capabilities":["Authenticate with Tableau using JWT tokens","Create, read, update, and delete workbooks","Publish and refresh workbook extracts","Download workbooks as .twb or .twbx files","Retrieve and export view data as CSV or JSON","Generate view exports as PNG images or PDFs","Manage data sources (create, publish, refresh, delete)","Create and manage Tableau projects","Manage user groups and group memberships","Add or remove users from sites with specific roles"],"authentication":"JWT (JSON Web Token) via Tableau Connected App","commonUseCases":["Automate workbook publishing and extraction refreshes","Extract data from Tableau views for downstream processing","Generate automated reports by exporting views as PDF or images","Manage Tableau site users and group permissions","Integrate Tableau data into other applications via custom queries"],"limitations":["Requires a Tableau Connected App with direct trust to be configured beforehand","Default API version 3.24 requires Tableau Server 2024.2+ or Tableau Cloud","Some advanced Tableau REST API endpoints may require custom HTTP Request nodes if not explicitly supported"],"relatedNodes":["n8n-nodes-netsuite","n8n-nodes-salesforce","n8n-nodes-googleSheets","n8n-nodes-httpRequest"]}


node_type: n8n-nodes-docupipe.docuPipe
package_name: n8n-nodes-docupipe
display_name: DocuPipe
description: Automate document processing, data extraction, and classification with DocuPipe
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: docupipe
author_github_url: https://github.com/DocuPipe/docupipe-n8n.git
npm_package_name: n8n-nodes-docupipe
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.065Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Class",
          "value": "class"
        },
        {
          "name": "Classification",
          "value": "classification"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Extraction",
          "value": "extraction"
        },
        {
          "name": "Schema",
          "value": "schema"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List all classes",
          "description": "Get all document classes in your account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "class"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "classify",
      "options": [
        {
          "name": "Classify",
          "value": "classify",
          "action": "Classify a document",
          "description": "Classify a document into categories. <a href=\"https://docs.docupipe.ai/docs/classifying-documents\">Classification guide</a>."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "classification"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document",
          "description": "Retrieve a document by ID - returns filename, text, pages, metadata, and status"
        },
        {
          "name": "Merge",
          "value": "merge",
          "action": "Merge documents",
          "description": "Merge multiple documents into one"
        },
        {
          "name": "Split",
          "value": "split",
          "action": "Split a document",
          "description": "Split a multi-page document into individual documents. <a href=\"https://docs.docupipe.ai/docs/splitting-a-document\">Learn more</a>."
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload a document",
          "description": "Upload a document from a URL, binary file, or base64 string. <a href=\"https://docs.docupipe.ai/docs/quick-start\">Quick start guide</a>."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extract",
      "options": [
        {
          "name": "Extract",
          "value": "extract",
          "action": "Extract data from a document",
          "description": "Extract structured data using a schema. <a href=\"https://docs.docupipe.ai/docs/extraction-basics\">Extraction guide</a>."
        },
        {
          "name": "Get Result",
          "value": "getResult",
          "action": "Get an extraction result",
          "description": "Retrieve the result of a completed extraction"
        },
        {
          "name": "Upload and Extract",
          "value": "uploadAndExtract",
          "action": "Upload and extract data from a document",
          "description": "Upload a document (URL, binary file, or base64) and extract data in one step. <a href=\"https://docs.docupipe.ai/docs/quick-start\">Quick start guide</a>."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "extraction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List all schemas",
          "description": "Get all schemas in your account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "schema"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List all classes",
      "description": "Get all document classes in your account",
      "resource": "class"
    },
    {
      "name": "Classify",
      "value": "classify",
      "action": "Classify a document",
      "description": "Classify a document into categories. <a href=\"https://docs.docupipe.ai/docs/classifying-documents\">Classification guide</a>.",
      "resource": "classification"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document",
      "description": "Retrieve a document by ID - returns filename, text, pages, metadata, and status",
      "resource": "document"
    },
    {
      "name": "Merge",
      "value": "merge",
      "action": "Merge documents",
      "description": "Merge multiple documents into one",
      "resource": "document"
    },
    {
      "name": "Split",
      "value": "split",
      "action": "Split a document",
      "description": "Split a multi-page document into individual documents. <a href=\"https://docs.docupipe.ai/docs/splitting-a-document\">Learn more</a>.",
      "resource": "document"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload a document",
      "description": "Upload a document from a URL, binary file, or base64 string. <a href=\"https://docs.docupipe.ai/docs/quick-start\">Quick start guide</a>.",
      "resource": "document"
    },
    {
      "name": "Extract",
      "value": "extract",
      "action": "Extract data from a document",
      "description": "Extract structured data using a schema. <a href=\"https://docs.docupipe.ai/docs/extraction-basics\">Extraction guide</a>.",
      "resource": "extraction"
    },
    {
      "name": "Get Result",
      "value": "getResult",
      "action": "Get an extraction result",
      "description": "Retrieve the result of a completed extraction",
      "resource": "extraction"
    },
    {
      "name": "Upload and Extract",
      "value": "uploadAndExtract",
      "action": "Upload and extract data from a document",
      "description": "Upload a document (URL, binary file, or base64) and extract data in one step. <a href=\"https://docs.docupipe.ai/docs/quick-start\">Quick start guide</a>.",
      "resource": "extraction"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all schemas",
      "description": "Get all schemas in your account",
      "resource": "schema"
    }
  ]

npm_readme:
  # n8n-nodes-docupipe

  This is an n8n community node for [DocuPipe](https://docupipe.ai) - an intelligent document processing platform. It lets you automate document uploads, data extraction, classification, and more directly from your n8n workflows.

  **What is DocuPipe?** DocuPipe processes documents (PDFs, images, Word files) using AI to extract structured data, classify documents into categories, and split/merge multi-page files. You define schemas (what fields to extract) and classes (document categories) in the [DocuPipe dashboard](https://app.docupipe.ai), then use this node to automate the processing.

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

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

  ## Installation

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

  ## Credentials

  You need a DocuPipe API key to use this node:

  1. [Sign up for free](https://docupipe.ai) or log in at [app.docupipe.ai](https://app.docupipe.ai)
  2. Go to **Settings → General**
  3. Copy your **API Key**
  4. In n8n, create a new **DocuPipe API** credential and paste your key
  5. Click **Test** to verify the connection

  ## Operations

  ### Document

  - **Upload** - Upload a document from a URL, binary file (e.g. email attachment), or base64 string
  - **Get** - Retrieve a document's details by its ID
  - **Split** - Split a multi-page document into individual documents
  - **Merge** - Merge multiple documents into one

  ### Extraction

  - **Extract** - Extract structured data from a document using a schema you defined in DocuPipe. Supports both **V3** (default, latest agentic engine) and **V2** (previous engine) via the API Version field.
  - **Get Result** - Retrieve the extracted data after extraction completes
  - **Upload and Extract** - Upload a document and extract data in one step. Supports both **V3** (default) and **V2** engines.

  ### Classification

  - **Classify** - Classify a document into categories you defined in DocuPipe

  ### Schema / Class

  - **List Schemas** - List all extraction schemas in your account
  - **List Classes** - List all document classes in your account

  ## Triggers

  The DocuPipe Trigger node automatically starts a workflow when DocuPipe finishes processing. No polling needed - DocuPipe sends data to n8n in real-time via webhooks.

  | Event | What it returns |
  |-------|-----------------|
  | Document Processed | documentId, filename, text, numPages |
  | Extraction Complete | standardizationId, documentId, schemaId, extracted data |
  | Classification Complete | documentId, assigned classIds |
  | Split Complete | parentDocumentId, childDocumentIds |
  | Merge Complete | new documentId, source documentIds |
  | Document Error | documentId, errorMessage |
  | Extraction Error | standardizationId, documentId, errorMessage |
  | Classification Error | documentId, errorMessage |
  | Split Error | documentId, errorMessage |
  | Merge Error | documentIds, errorMessage |

  ## Examples

  ### Example 1: Upload a file from URL and extract data

  The simplest workflow - upload a document and extract structured data from it.

  1. Add a **Manual Trigger** node (click to run)
  2. Add a **DocuPipe** node → Resource: **Extraction** → Operation: **Upload and Extract**
  3. Set Input Mode to **URL**
  4. Enter the file URL (e.g. `https://example.com/invoice.pdf`) and filename
  5. Select a **Schema** from the dropdown (create one first at [app.docupipe.ai](https://app.docupipe.ai) → Schemas)
  6. Run the workflow - you'll get back a `documentId` and `standardizationId`
  7. To get the extracted data, add a **DocuPipe Trigger** (Extraction Complete) in a separate workflow

  ### Example 2: Process email attachments automatically

  Automatically extract data from every email attachment you receive.

  1. Add a **Gmail Trigger** node → Event: **Message Received**
  2. Add a **DocuPipe** node → Resource: **Document** → Operation: **Upload**
  3. Set Input Mode to **Binary File**
  4. Leave Binary Property as `data` (Gmail outputs attachments as "data")
  5. Connect Gmail → DocuPipe

  Now every email attachment is automatically uploaded to DocuPipe. Add a DocuPipe Trigger (Document Processed) in another workflow to process them after upload.

  ### Example 3: Extract data from Google Drive files

  Process documents saved in Google Drive.

  1. Add a **Google Drive Trigger** node → Event: **File Created**
  2. Add a **Google Drive** node → Operation: **Download** (to get the file as binary)
  3. Add a **DocuPipe** node → Resource: **Extraction** → Operation: **Upload and Extract**
  4. Set Input Mode to **Binary File**
  5. Leave Binary Property as `data`
  6. Select your **Schema**
  7. Connect: Google Drive Trigger → Google Drive Download → DocuPipe

  ### Example 4: Extract data and send results to Google Sheets

  End-to-end automation: extract invoice data and write it to a spreadsheet.

  **Workflow 1 - Kick off extraction:**
  1. **Gmail Trigger** (Message Received)
  2. **DocuPipe** → Upload and Extract (Binary File mode, select your invoice schema)

  **Workflow 2 - Process results:**
  1. **DocuPipe Trigger** → Event: **Extraction Complete** (receives standardizationId and extracted data)
  2. **Google Sheets** → Append Row (map the extracted fields to spreadsheet columns)

  ### Example 5: Classify and route documents

  Automatically classify documents and take different actions based on the type.

  **Workflow 1 - Upload and classify:**
  1. **HTTP Request** node → Download a file (set Response Format to **File**)
  2. **DocuPipe** → Upload (Binary File mode)
  3. **DocuPipe** → Classify (use the documentId from upload, select your classes)

  **Workflow 2 - Route based on classification:**
  1. **DocuPipe Trigger** → Event: **Classification Complete** (returns documentId and classIds)
  2. **IF** node → Check which class was assigned
  3. Route to different actions (e.g. invoices → accounting software, contracts → legal team)

  ### Example 6: Upload a document from base64 (database or API)

  If your documents are stored as base64 strings (e.g. in a database or returned by an API):

  1. Add a node that outputs base64 content (e.g. a **Postgres** node querying a `documents` table, or a **Code** node)
  2. Add a **DocuPipe** node → Resource: **Document** → Operation: **Upload**
  3. Set Input Mode to **Base64**
  4. Set **Base64 Content** to reference the field from the previous node (e.g. `{{ $json.fileContent }}`)
  5. Set **Filename** (e.g. `invoice.pdf`) - DocuPipe needs this to know the file format

  ### Example 7: Split a document and process each part

  Split a multi-page PDF into individual documents, then extract data from each one.

  **Workflow 1 - Upload and split:**
  1. **Manual Trigger**
  2. **DocuPipe** → Upload (URL or Binary File)
  3. **DocuPipe** → Split (use the documentId from upload)

  **Workflow 2 - Process each child document:**
  1. **DocuPipe Trigger** → Event: **Split Complete** (returns parentDocumentId and childDocumentIds)
  2. **Split In Batches** node → loop through each childDocumentId
  3. **DocuPipe** → Extract (use each childDocumentId + select a schema)

  ### How Binary File mode works

  Many n8n nodes output files as "binary data" (Gmail attachments, HTTP downloads, Google Drive files, Dropbox, etc.). DocuPipe's **Binary File** mode reads these files automatically - no manual conversion needed.

  **Steps:**
  1. Add a node that outputs a file (e.g. HTTP Request with Response Format: **File**)
  2. Connect it to a **DocuPipe** node
  3. Set Input Mode to **Binary File**
  4. Leave Binary Property as **data** (this is the default for most nodes)
  5. Run it - DocuPipe automatically reads the file and uploads it

  **How to check the binary property name:** If "data" doesn't work, run the previous node first and click on the **Binary** tab in the output. The property name is shown there (e.g. "data", "attachment_0", "file").

  ## AI Agent Support

  This node supports `usableAsTool`, making it available as a tool in n8n's AI Agent workflows. Self-hosted users need to set the environment variable:

  ```
  N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  ## Compatibility

  - Tested with n8n version 2.12.3
  - Requires Node.js 18 or later

  ## Upgrading from 0.1.2 to 0.1.3

  The Extract and Upload+Extract operations now support both V3 (default) and V2 engines, with parameters reorganized into version-specific Additional Fields and Advanced Options collections.

  **For existing workflows, please re-open each Extract / Upload+Extract node and:**

  1. **API Version** defaults to **V3**. If you want to keep using the V2 engine, switch it to **V2**.
  2. Re-add any settings you previously configured under Additional Fields (Display Mode, Split Mode, Effort Level, Guidelines, Dataset). These do not auto-migrate because the parameter was renamed.
  3. Pages, Timeout, Metadata, and Use Metadata are now under **Advanced Options**.

  Workflows that used Extract with no Additional Fields will keep working but will route to the V3 engine, which may produce slightly different extractions than V2. Switch to V2 if you need byte-identical output.

  ## Resources

  - [DocuPipe Dashboard](https://app.docupipe.ai) - Create schemas, classes, and manage documents
  - [DocuPipe Documentation](https://docs.docupipe.ai) - API reference and guides
  - [DocuPipe Website](https://docupipe.ai) - Sign up for a free account
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"The DocuPipe n8n community node automates intelligent document processing, including uploading files, extracting structured data using custom schemas, classifying documents into categories, and splitting or merging multi-page files.","capabilities":["Upload documents from URLs, binary files, or base64 strings","Extract structured data using predefined schemas (V2 and V3 engines)","Classify documents into user-defined categories","Split multi-page documents into individual files","Merge multiple documents into a single file","Retrieve document details and extraction results by ID","Receive real-time webhook notifications for processing completion or errors"],"authentication":"API key required","commonUseCases":["Automatically extract invoice data from email attachments","Process and classify incoming PDFs from cloud storage (e.g., Google Drive)","Route documents to different workflows based on AI classification","Convert unstructured documents into structured database records"],"limitations":["Requires a DocuPipe account and pre-configured schemas/classes in the DocuPipe dashboard","Webhook triggers require a separate workflow to receive real-time notifications","Limited to file formats supported by the underlying DocuPipe AI engine (PDFs, images, Word files)"],"relatedNodes":["Gmail","Google Drive","HTTP Request","Manual Trigger","Webhook"]}


node_type: n8n-nodes-docupipe.docuPipeTrigger
package_name: n8n-nodes-docupipe
display_name: DocuPipe Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: docupipe
author_github_url: https://github.com/DocuPipe/docupipe-n8n.git
npm_package_name: n8n-nodes-docupipe
npm_version: 0.1.3
community_fetched_at: 2026-07-14T14:40:34.066Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Triggers when DocuPipe completes a document operation (processing, extraction, classification, split, or merge)

npm_readme:
  # n8n-nodes-docupipe

  This is an n8n community node for [DocuPipe](https://docupipe.ai) - an intelligent document processing platform. It lets you automate document uploads, data extraction, classification, and more directly from your n8n workflows.

  **What is DocuPipe?** DocuPipe processes documents (PDFs, images, Word files) using AI to extract structured data, classify documents into categories, and split/merge multi-page files. You define schemas (what fields to extract) and classes (document categories) in the [DocuPipe dashboard](https://app.docupipe.ai), then use this node to automate the processing.

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

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

  ## Installation

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

  ## Credentials

  You need a DocuPipe API key to use this node:

  1. [Sign up for free](https://docupipe.ai) or log in at [app.docupipe.ai](https://app.docupipe.ai)
  2. Go to **Settings → General**
  3. Copy your **API Key**
  4. In n8n, create a new **DocuPipe API** credential and paste your key
  5. Click **Test** to verify the connection

  ## Operations

  ### Document

  - **Upload** - Upload a document from a URL, binary file (e.g. email attachment), or base64 string
  - **Get** - Retrieve a document's details by its ID
  - **Split** - Split a multi-page document into individual documents
  - **Merge** - Merge multiple documents into one

  ### Extraction

  - **Extract** - Extract structured data from a document using a schema you defined in DocuPipe. Supports both **V3** (default, latest agentic engine) and **V2** (previous engine) via the API Version field.
  - **Get Result** - Retrieve the extracted data after extraction completes
  - **Upload and Extract** - Upload a document and extract data in one step. Supports both **V3** (default) and **V2** engines.

  ### Classification

  - **Classify** - Classify a document into categories you defined in DocuPipe

  ### Schema / Class

  - **List Schemas** - List all extraction schemas in your account
  - **List Classes** - List all document classes in your account

  ## Triggers

  The DocuPipe Trigger node automatically starts a workflow when DocuPipe finishes processing. No polling needed - DocuPipe sends data to n8n in real-time via webhooks.

  | Event | What it returns |
  |-------|-----------------|
  | Document Processed | documentId, filename, text, numPages |
  | Extraction Complete | standardizationId, documentId, schemaId, extracted data |
  | Classification Complete | documentId, assigned classIds |
  | Split Complete | parentDocumentId, childDocumentIds |
  | Merge Complete | new documentId, source documentIds |
  | Document Error | documentId, errorMessage |
  | Extraction Error | standardizationId, documentId, errorMessage |
  | Classification Error | documentId, errorMessage |
  | Split Error | documentId, errorMessage |
  | Merge Error | documentIds, errorMessage |

  ## Examples

  ### Example 1: Upload a file from URL and extract data

  The simplest workflow - upload a document and extract structured data from it.

  1. Add a **Manual Trigger** node (click to run)
  2. Add a **DocuPipe** node → Resource: **Extraction** → Operation: **Upload and Extract**
  3. Set Input Mode to **URL**
  4. Enter the file URL (e.g. `https://example.com/invoice.pdf`) and filename
  5. Select a **Schema** from the dropdown (create one first at [app.docupipe.ai](https://app.docupipe.ai) → Schemas)
  6. Run the workflow - you'll get back a `documentId` and `standardizationId`
  7. To get the extracted data, add a **DocuPipe Trigger** (Extraction Complete) in a separate workflow

  ### Example 2: Process email attachments automatically

  Automatically extract data from every email attachment you receive.

  1. Add a **Gmail Trigger** node → Event: **Message Received**
  2. Add a **DocuPipe** node → Resource: **Document** → Operation: **Upload**
  3. Set Input Mode to **Binary File**
  4. Leave Binary Property as `data` (Gmail outputs attachments as "data")
  5. Connect Gmail → DocuPipe

  Now every email attachment is automatically uploaded to DocuPipe. Add a DocuPipe Trigger (Document Processed) in another workflow to process them after upload.

  ### Example 3: Extract data from Google Drive files

  Process documents saved in Google Drive.

  1. Add a **Google Drive Trigger** node → Event: **File Created**
  2. Add a **Google Drive** node → Operation: **Download** (to get the file as binary)
  3. Add a **DocuPipe** node → Resource: **Extraction** → Operation: **Upload and Extract**
  4. Set Input Mode to **Binary File**
  5. Leave Binary Property as `data`
  6. Select your **Schema**
  7. Connect: Google Drive Trigger → Google Drive Download → DocuPipe

  ### Example 4: Extract data and send results to Google Sheets

  End-to-end automation: extract invoice data and write it to a spreadsheet.

  **Workflow 1 - Kick off extraction:**
  1. **Gmail Trigger** (Message Received)
  2. **DocuPipe** → Upload and Extract (Binary File mode, select your invoice schema)

  **Workflow 2 - Process results:**
  1. **DocuPipe Trigger** → Event: **Extraction Complete** (receives standardizationId and extracted data)
  2. **Google Sheets** → Append Row (map the extracted fields to spreadsheet columns)

  ### Example 5: Classify and route documents

  Automatically classify documents and take different actions based on the type.

  **Workflow 1 - Upload and classify:**
  1. **HTTP Request** node → Download a file (set Response Format to **File**)
  2. **DocuPipe** → Upload (Binary File mode)
  3. **DocuPipe** → Classify (use the documentId from upload, select your classes)

  **Workflow 2 - Route based on classification:**
  1. **DocuPipe Trigger** → Event: **Classification Complete** (returns documentId and classIds)
  2. **IF** node → Check which class was assigned
  3. Route to different actions (e.g. invoices → accounting software, contracts → legal team)

  ### Example 6: Upload a document from base64 (database or API)

  If your documents are stored as base64 strings (e.g. in a database or returned by an API):

  1. Add a node that outputs base64 content (e.g. a **Postgres** node querying a `documents` table, or a **Code** node)
  2. Add a **DocuPipe** node → Resource: **Document** → Operation: **Upload**
  3. Set Input Mode to **Base64**
  4. Set **Base64 Content** to reference the field from the previous node (e.g. `{{ $json.fileContent }}`)
  5. Set **Filename** (e.g. `invoice.pdf`) - DocuPipe needs this to know the file format

  ### Example 7: Split a document and process each part

  Split a multi-page PDF into individual documents, then extract data from each one.

  **Workflow 1 - Upload and split:**
  1. **Manual Trigger**
  2. **DocuPipe** → Upload (URL or Binary File)
  3. **DocuPipe** → Split (use the documentId from upload)

  **Workflow 2 - Process each child document:**
  1. **DocuPipe Trigger** → Event: **Split Complete** (returns parentDocumentId and childDocumentIds)
  2. **Split In Batches** node → loop through each childDocumentId
  3. **DocuPipe** → Extract (use each childDocumentId + select a schema)

  ### How Binary File mode works

  Many n8n nodes output files as "binary data" (Gmail attachments, HTTP downloads, Google Drive files, Dropbox, etc.). DocuPipe's **Binary File** mode reads these files automatically - no manual conversion needed.

  **Steps:**
  1. Add a node that outputs a file (e.g. HTTP Request with Response Format: **File**)
  2. Connect it to a **DocuPipe** node
  3. Set Input Mode to **Binary File**
  4. Leave Binary Property as **data** (this is the default for most nodes)
  5. Run it - DocuPipe automatically reads the file and uploads it

  **How to check the binary property name:** If "data" doesn't work, run the previous node first and click on the **Binary** tab in the output. The property name is shown there (e.g. "data", "attachment_0", "file").

  ## AI Agent Support

  This node supports `usableAsTool`, making it available as a tool in n8n's AI Agent workflows. Self-hosted users need to set the environment variable:

  ```
  N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  ```

  ## Compatibility

  - Tested with n8n version 2.12.3
  - Requires Node.js 18 or later

  ## Upgrading from 0.1.2 to 0.1.3

  The Extract and Upload+Extract operations now support both V3 (default) and V2 engines, with parameters reorganized into version-specific Additional Fields and Advanced Options collections.

  **For existing workflows, please re-open each Extract / Upload+Extract node and:**

  1. **API Version** defaults to **V3**. If you want to keep using the V2 engine, switch it to **V2**.
  2. Re-add any settings you previously configured under Additional Fields (Display Mode, Split Mode, Effort Level, Guidelines, Dataset). These do not auto-migrate because the parameter was renamed.
  3. Pages, Timeout, Metadata, and Use Metadata are now under **Advanced Options**.

  Workflows that used Extract with no Additional Fields will keep working but will route to the V3 engine, which may produce slightly different extractions than V2. Switch to V2 if you need byte-identical output.

  ## Resources

  - [DocuPipe Dashboard](https://app.docupipe.ai) - Create schemas, classes, and manage documents
  - [DocuPipe Documentation](https://docs.docupipe.ai) - API reference and guides
  - [DocuPipe Website](https://docupipe.ai) - Sign up for a free account
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows automatically when DocuPipe completes specific document operations such as processing, extraction, classification, splitting, or merging, eliminating the need for polling.","capabilities":["Receive real-time notifications for document processing completion","Receive notifications for extraction completion with structured data","Receive notifications for classification results","Receive notifications for document splitting results","Receive notifications for document merging results","Receive error notifications for various document operations","Return document metadata including IDs, filenames, page counts, and extracted content"],"authentication":"API key required","commonUseCases":["Automatically process extracted invoice data from emails","Route classified documents to different workflows based on category","Handle split or merged document results in downstream actions","Error handling for failed document processing tasks"],"limitations":["Requires a separate DocuPipe node to initiate the document operation; this node only receives results","Dependent on DocuPipe's webhook infrastructure to send real-time updates"],"relatedNodes":["DocuPipe","Gmail Trigger","Google Drive Trigger","HTTP Request","Google Sheets"]}


node_type: n8n-nodes-shipstatic.shipstatic
package_name: n8n-nodes-shipstatic
display_name: ShipStatic
description: Deploy static sites and HTML pages to a live URL — free, no account needed
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: shipstatic-com
author_github_url: https://github.com/shipstatic/n8n.git
npm_package_name: n8n-nodes-shipstatic
npm_version: 0.7.0
community_fetched_at: 2026-07-14T14:40:34.067Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "deployment",
      "options": [
        {
          "name": "Deployment",
          "value": "deployment"
        },
        {
          "name": "Domain",
          "value": "domain"
        },
        {
          "name": "Account",
          "value": "account"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "deploy",
      "options": [
        {
          "name": "Deploy",
          "value": "deploy",
          "action": "Deploy a site",
          "description": "Publish files and get a live URL. Without an API key, the response includes a claim URL — show both to the user. To make the site private, set Password under Options."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a deployment",
          "description": "Get deployment details including URL, status, file count, size, labels, and password protection state"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all deployments",
          "description": "List all deployments with their URLs, status, labels, and password protection state"
        },
        {
          "name": "Remove",
          "value": "remove",
          "action": "Remove a deployment",
          "description": "Permanently remove a deployment and all its files. Confirm with the user before calling this — it cannot be undone."
        },
        {
          "name": "Set",
          "value": "set",
          "action": "Set deployment labels",
          "description": "Update labels on a deployment. Replaces all existing labels."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "deployment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "set",
      "options": [
        {
          "name": "DNS",
          "value": "dns",
          "action": "Look up DNS provider",
          "description": "Look up the DNS provider for a domain (e.g. Cloudflare, Namecheap) to know where to configure records"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a domain",
          "description": "Get domain details including linked deployment, verification status, and labels"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all domains",
          "description": "List all domains with their linked deployment and verification status"
        },
        {
          "name": "Records",
          "value": "records",
          "action": "Get DNS records",
          "description": "Get the DNS records you need to configure at your DNS provider. Call after Set; show the records to the user, then call Verify once DNS is configured."
        },
        {
          "name": "Remove",
          "value": "remove",
          "action": "Remove a domain",
          "description": "Permanently disconnect and remove a custom domain. Confirm with the user before calling this — it cannot be undone."
        },
        {
          "name": "Set",
          "value": "set",
          "action": "Set a domain",
          "description": "Create or update a custom domain. Reserve a name, link it to a deployment, switch deployments, or update labels."
        },
        {
          "name": "Share",
          "value": "share",
          "action": "Get share hash",
          "description": "Get a shareable setup hash so someone else can view the required DNS records without an API key"
        },
        {
          "name": "Validate",
          "value": "validate",
          "action": "Validate a domain",
          "description": "Check if a domain name is valid and available before connecting it"
        },
        {
          "name": "Verify",
          "value": "verify",
          "action": "Verify DNS",
          "description": "Trigger DNS verification for a custom domain. Call after the user configures DNS records — verification is asynchronous and the domain status updates once DNS propagates."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "domain"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get account info",
          "description": "Get your account details including email, plan, and usage"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Deploy",
      "value": "deploy",
      "action": "Deploy a site",
      "description": "Publish files and get a live URL. Without an API key, the response includes a claim URL — show both to the user. To make the site private, set Password under Options.",
      "resource": "deployment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a deployment",
      "description": "Get deployment details including URL, status, file count, size, labels, and password protection state",
      "resource": "deployment"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all deployments",
      "description": "List all deployments with their URLs, status, labels, and password protection state",
      "resource": "deployment"
    },
    {
      "name": "Remove",
      "value": "remove",
      "action": "Remove a deployment",
      "description": "Permanently remove a deployment and all its files. Confirm with the user before calling this — it cannot be undone.",
      "resource": "deployment"
    },
    {
      "name": "Set",
      "value": "set",
      "action": "Set deployment labels",
      "description": "Update labels on a deployment. Replaces all existing labels.",
      "resource": "deployment"
    },
    {
      "name": "DNS",
      "value": "dns",
      "action": "Look up DNS provider",
      "description": "Look up the DNS provider for a domain (e.g. Cloudflare, Namecheap) to know where to configure records",
      "resource": "domain"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a domain",
      "description": "Get domain details including linked deployment, verification status, and labels",
      "resource": "domain"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all domains",
      "description": "List all domains with their linked deployment and verification status",
      "resource": "domain"
    },
    {
      "name": "Records",
      "value": "records",
      "action": "Get DNS records",
      "description": "Get the DNS records you need to configure at your DNS provider. Call after Set; show the records to the user, then call Verify once DNS is configured.",
      "resource": "domain"
    },
    {
      "name": "Remove",
      "value": "remove",
      "action": "Remove a domain",
      "description": "Permanently disconnect and remove a custom domain. Confirm with the user before calling this — it cannot be undone.",
      "resource": "domain"
    },
    {
      "name": "Set",
      "value": "set",
      "action": "Set a domain",
      "description": "Create or update a custom domain. Reserve a name, link it to a deployment, switch deployments, or update labels.",
      "resource": "domain"
    },
    {
      "name": "Share",
      "value": "share",
      "action": "Get share hash",
      "description": "Get a shareable setup hash so someone else can view the required DNS records without an API key",
      "resource": "domain"
    },
    {
      "name": "Validate",
      "value": "validate",
      "action": "Validate a domain",
      "description": "Check if a domain name is valid and available before connecting it",
      "resource": "domain"
    },
    {
      "name": "Verify",
      "value": "verify",
      "action": "Verify DNS",
      "description": "Trigger DNS verification for a custom domain. Call after the user configures DNS records — verification is asynchronous and the domain status updates once DNS propagates.",
      "resource": "domain"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get account info",
      "description": "Get your account details including email, plan, and usage",
      "resource": "account"
    }
  ]

npm_readme:
  # n8n-nodes-shipstatic

  n8n community node for [ShipStatic](https://shipstatic.com) — deploy static websites, landing pages, and prototypes instantly from n8n workflows.

  ## Installation

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

  ```
  n8n-nodes-shipstatic
  ```

  Or install manually:

  ```bash
  cd ~/.n8n/custom
  npm init -y
  npm install n8n-nodes-shipstatic
  ```

  Restart n8n after installing.

  ## Deploy — Free, No Account Needed

  Add a **ShipStatic** node to your workflow. No credentials to configure.

  **From binary files** (Binary File toggle ON — default):

  1. Set Resource to **Deployment**, Operation to **Deploy**
  2. Connect binary files from an upstream node (e.g. HTTP Request, Google Drive, Convert to File)
  3. Run — you get a live URL on `*.shipstatic.com`

  **From text content** (Binary File toggle OFF):

  1. Set Resource to **Deployment**, Operation to **Deploy**, toggle **Binary File** off
  2. Paste or wire your HTML into **File Content**
  3. Run — deployed as `index.html` by default (customizable via **File Name**)

  That's it. Your site is live instantly. No API key, no sign-up, no configuration.

  Deployments without an API key are public and expire in 3 days. The output includes a **claim URL** — visit it to keep the site permanently.

  Want a private site? Add a **Password** under the Deploy operation's Options (6–128 characters; whitespace significant). Visitors will be prompted to unlock before viewing, including on any custom domains pointing at the deployment.

  ## All Operations — Free API Key

  For permanent deployments and full control over your sites and domains, add a free API key:

  1. Get a free key at [my.shipstatic.com/api-key](https://my.shipstatic.com/api-key)
  2. In n8n, go to **Credentials > New Credential > ShipStatic API**
  3. Paste your API key and save — n8n verifies the connection automatically

  ### Deployments

  | Operation  | Description                                                                                            |
  | ---------- | ------------------------------------------------------------------------------------------------------ |
  | **Deploy** | Publish files and get a live URL instantly                                                             |
  | **Get**    | Get deployment details including URL, status, file count, size, labels, and password protection state |
  | **List**   | List all deployments with their URLs, status, labels, and password protection state                   |
  | **Remove** | Permanently remove a deployment and all its files                                                      |
  | **Set**    | Update labels on a deployment (replaces all existing labels)                                           |

  ### Domains

  | Operation    | Description                                                                     |
  | ------------ | ------------------------------------------------------------------------------- |
  | **DNS**      | Look up which DNS provider hosts a domain (e.g. Cloudflare, Namecheap)          |
  | **Get**      | Get domain details including linked deployment, verification status, and labels |
  | **List**     | List all domains with their linked deployment and verification status           |
  | **Records**  | Get the DNS records you need to configure at your DNS provider                  |
  | **Remove**   | Permanently disconnect and remove a custom domain                               |
  | **Set**      | Create or update a custom domain — reserve, link, switch deployments, or update labels |
  | **Share**    | Get a shareable setup hash so someone else can view the required DNS records    |
  | **Validate** | Check if a domain name is valid and available before connecting it              |
  | **Verify**   | Check if DNS is configured correctly after you set up the records               |

  ### Account

  | Operation | Description                                               |
  | --------- | --------------------------------------------------------- |
  | **Get**   | Get your account details including email, plan, and usage |

  ## Example Workflows

  ### Publish and connect a custom domain

  1. **ShipStatic** > Deployment: Deploy (get the deployment ID)
  2. **ShipStatic** > Domain: Set (link your domain to the deployment)
  3. **ShipStatic** > Domain: Records (get the records to configure)
  4. Configure DNS with your provider
  5. **ShipStatic** > Domain: Verify (confirm everything is connected)

  ### Scheduled redeployment

  Use an n8n **Schedule Trigger** to redeploy a site on a recurring basis — useful for sites that pull content from external sources.

  ## Picking Deployments and Domains

  Deployment and Domain fields use n8n's **Resource Locator** with two modes:

  - **From List** — search-as-you-type through your existing deployments or domains
  - **By Hostname** / **By Name** — type the value directly (useful for new domains via Set/Validate, or for piping in dynamic values from previous nodes)

  You can also switch any field to **Expression** mode to use values from upstream nodes.

  ## AI Agent Support

  This node works as a tool in n8n's AI Agent workflows (`usableAsTool: true`). Connect it to an AI agent and let it deploy sites, manage domains, and check deployment status as part of a conversation.

  ## Resources

  - [ShipStatic Documentation](https://docs.shipstatic.com)
  - [ShipStatic Dashboard](https://my.shipstatic.com)
  - [Report an Issue](https://github.com/shipstatic/n8n/issues)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Deploys static websites, landing pages, and prototypes to live URLs via the ShipStatic platform directly from n8n workflows.","capabilities":["Deploy static files from binary inputs","Deploy HTML content from text strings","Retrieve deployment details and status","List all existing deployments","Remove deployments permanently","Update deployment labels","Manage custom domain connections","Retrieve DNS configuration records","Validate domain availability","Verify DNS configuration"],"authentication":"None required for basic deployments; API key required for permanent deployments and advanced domain management","commonUseCases":["Instantly publishing prototypes and landing pages","Automated redeployment of static sites on a schedule","Connecting custom domains to deployed sites","AI agent workflows for site management"],"limitations":["Public deployments without an API key expire in 3 days","No account creation required for basic use, limiting advanced features without API key"],"relatedNodes":["Schedule Trigger","HTTP Request","Google Drive","Convert to File"]}


node_type: n8n-nodes-promptlock-guard.promptLockGuard
package_name: n8n-nodes-promptlock-guard
display_name: PromptLock Guard
description: AI-powered guardrail that analyzes, redacts, or blocks content based on compliance frameworks
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main",
  "main",
  "main",
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: promptlock
author_github_url: https://github.com/True-North-Analytics/
npm_package_name: n8n-nodes-promptlock-guard
npm_version: 1.0.14
community_fetched_at: 2026-07-14T14:40:34.069Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "prompt",
      "options": [
        {
          "name": "Prompt",
          "value": "prompt"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "analyze",
      "options": [
        {
          "name": "Analyze",
          "value": "analyze",
          "action": "Analyze a prompt",
          "description": "Analyze text for compliance violations and prompt injection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "prompt"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Analyze",
      "value": "analyze",
      "action": "Analyze a prompt",
      "description": "Analyze text for compliance violations and prompt injection",
      "resource": "prompt"
    }
  ]

npm_readme:
  # PromptLock Guard for n8n

  🛡️ AI-powered security guardrails for your n8n workflows

  PromptLock Guard is a community node that adds content analysis and sensitive data detection to your n8n automations. Detect prompt injection attacks, identify PII/PHI patterns, and route content based on risk assessment.

  ## ✨ Features

  - 🔍 **Sensitive Data Detection**: Identifies patterns associated with HIPAA, GDPR, and PCI requirements
  - 🚦 **4-Output Routing**: Route workflows based on risk assessment (Allow/Flag/Redact/Block)
  - 🔒 **Fail-Closed Security**: Secure by default with configurable error handling
  - ⚡ **Real-time Analysis**: Fast API integration with configurable timeouts
  - 🎯 **Flexible Targeting**: Support for nested field paths with dot notation
  - 📊 **Rich Metadata**: Detailed analysis results attached to each item

  > **Note:** Prompt injection detection is always enabled by default, regardless of which compliance frameworks are selected.

  ## 🚀 Installation

  ### Community Nodes (Recommended)

  1. In n8n, go to Settings → Community Nodes
  2. Click Install a community node
  3. Enter: `n8n-nodes-promptlock-guard`
  4. Click Install
  5. Restart n8n

  ### npm Installation
  ```bash
  # Install globally for n8n
  npm install -g n8n-nodes-promptlock-guard

  # Or install in your n8n user directory
  cd ~/.n8n/
  npm install n8n-nodes-promptlock-guard

  # Restart n8n
  ```

  ## ⚙️ Setup

  ### 1. Create Credentials

  In n8n, create new PromptLock API Key credentials:

  - **Base URL**: `https://api.promptlock.io`
  - **API Key**: Your PromptLock API key (starts with `ps_`)
  - **Header Style**: `X-API-Key` (preferred) or `Bearer Token`

  Get your API key at [promptlock.io](https://promptlock.io)

  ### 2. Add the Node

  1. Search for "PromptLock Guard" in the node panel
  2. Configure:
     - **Text Field**: Path to your text data (e.g., `text`, `payload.message`)
     - **Frameworks**: Select detection frameworks (HIPAA, GDPR, PCI)
     - **Credentials**: Select your PromptLock API Key

  ### 3. Wire the Outputs

  The node provides four distinct outputs:

  - ✅ **Allow**: Content is safe, proceed normally
  - ⚠️ **Flag**: Content needs review, proceed with caution
  - 🔒 **Redact**: Content has been cleaned, use `cleanText` field
  - 🚫 **Block**: Content is blocked, do not proceed

  ## 📋 Quick Example
  ```
  Webhook → PromptLock Guard
  ├─ Allow → Process Normally
  ├─ Flag → Send to Review Queue
  ├─ Redact → Process with Clean Text
  └─ Block → Return 403 Error
  ```

  ## 🔧 Configuration Options

  ### Core Settings

  - **Text Field**: Path to analyze (supports dot notation like `data.message.text`)
  - **Detection Frameworks**: Select HIPAA, GDPR, and/or PCI pattern detection
  - **Action on High Risk**: Override server policy (inherit/flag/redact/block/score)

  ### Advanced Settings

  - **Write Clean Text To**: Field path for redacted content (default: `cleanText`)
  - **Attach Metadata Under**: Field path for analysis results (default: `promptLock`)
  - **On API Error**: Error handling strategy (block/flag/allow/throw)
  - **Request Timeout**: API timeout in milliseconds (default: 15000)

  ## 📊 Metadata Structure

  The node attaches analysis data to each item:
  ```json
  {
    "promptLock": {
      "risk_score": 56,
      "action_taken": "redact",
      "clean_text": "Patient [HIPAA_PERSON_NAME] (SSN: [HIPAA_SSN]) needs treatment",
      "violations": [
        {
          "type": "pii_detection",
          "category": "person_name",
          "confidence": 0.95,
          "position": [8, 18],
          "text": "John Smith",
          "placeholder": "[HIPAA_PERSON_NAME]",
          "compliance_frameworks": ["HIPAA"]
        }
      ],
      "compliance_status": {
        "HIPAA": 2,
        "GDPR": 0,
        "PCI": 0
      },
      "usage": {
        "tokens_analyzed": 8,
        "processing_time_ms": 78
      }
    }
  }
  ```

  ## 🔒 Security Best Practices

  - **On API Error**: Keep as "Block (Fail Closed)" for maximum security
  - **Action on High Risk**: Use "Inherit from Policy" to leverage server-side rules
  - **Write Clean Text To**: Use a separate field to preserve original data

  ## ⚠️ Important Note

  PromptLock is a security tool that helps detect sensitive data patterns and prompt injection attempts. It is not a compliance certification and does not guarantee regulatory compliance. You remain responsible for your own compliance obligations.

  ## 📞 Support

  - Website: [promptlock.io](https://promptlock.io)
  - Email: support@promptlock.io

  ## 📜 License

  MIT License - see LICENSE file for details.

  ---

  Built by the PromptLock team

ai_documentation_summary:
  {"purpose":"Analyze content for sensitive data patterns and prompt injection attacks, then route workflows based on risk assessment levels (Allow, Flag, Redact, Block).","capabilities":["Detects HIPAA, GDPR, and PCI sensitive data patterns","Identifies prompt injection attempts","Routes workflow execution based on risk assessment","Redacts sensitive information in real-time","Supports nested field paths with dot notation","Attaches detailed metadata including risk scores and violation details"],"authentication":"API key required","commonUseCases":["Filtering user inputs before processing in AI workflows","Automated redaction of PII/PHI in customer support tickets","Compliance checking for healthcare or financial data handling","Blocking malicious prompt injection attempts"],"limitations":["Not a compliance certification tool; does not guarantee regulatory compliance","Requires external API integration with configurable timeouts"],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:34
author_name: greip
author_github_url: https://github.com/gredevelopment/
npm_package_name: n8n-nodes-arca
npm_version: 1.0.11
community_fetched_at: 2026-07-14T14:40:34.070Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Interact with the Arca API to manage users, workspaces, folders, lists, tasks, statuses, labels, and comments.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "Comment",
          "value": "comment"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Label",
          "value": "label"
        },
        {
          "name": "List",
          "value": "list"
        },
        {
          "name": "Status",
          "value": "status"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "Workspace",
          "value": "workspace"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getCurrentUser",
      "options": [
        {
          "name": "Get Current User",
          "value": "getCurrentUser",
          "action": "Get the authenticated user profile",
          "description": "Get the authenticated user profile"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listWorkspaces",
      "options": [
        {
          "name": "Get Workspace",
          "value": "getWorkspace",
          "action": "Get details of a workspace",
          "description": "Get details of a specific workspace"
        },
        {
          "name": "List Workspace Members",
          "value": "listWorkspaceMembers",
          "action": "List members of a workspace",
          "description": "List members of a workspace"
        },
        {
          "name": "List Workspaces",
          "value": "listWorkspaces",
          "action": "List workspaces",
          "description": "List workspaces the user has access to"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "workspace"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listFolders",
      "options": [
        {
          "name": "Create Folder",
          "value": "createFolder",
          "action": "Create a new folder",
          "description": "Create a new folder in a workspace"
        },
        {
          "name": "Delete Folder",
          "value": "deleteFolder",
          "action": "Delete a folder",
          "description": "Delete a folder and its contents"
        },
        {
          "name": "List Folders",
          "value": "listFolders",
          "action": "List folders",
          "description": "List all folders in a workspace"
        },
        {
          "name": "Update Folder",
          "value": "updateFolder",
          "action": "Update an existing folder",
          "description": "Update an existing folder by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listLists",
      "options": [
        {
          "name": "Create List",
          "value": "createList",
          "action": "Create a new list",
          "description": "Create a new list inside a folder"
        },
        {
          "name": "Delete List",
          "value": "deleteList",
          "action": "Delete a list",
          "description": "Delete a list and its tasks"
        },
        {
          "name": "List Lists",
          "value": "listLists",
          "action": "List all lists in a workspace",
          "description": "List all lists in a workspace"
        },
        {
          "name": "Update List",
          "value": "updateList",
          "action": "Update an existing list",
          "description": "Update an existing list by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "list"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listTasks",
      "options": [
        {
          "name": "Create Task",
          "value": "createTask",
          "action": "Create a new task",
          "description": "Create a new task in a list"
        },
        {
          "name": "Delete Task",
          "value": "deleteTask",
          "action": "Delete a task",
          "description": "Delete a task by ID"
        },
        {
          "name": "Get Task",
          "value": "getTask",
          "action": "Get a task",
          "description": "Get a task by ID"
        },
        {
          "name": "List Tasks",
          "value": "listTasks",
          "action": "List tasks in a workspace",
          "description": "List tasks in a workspace"
        },
        {
          "name": "Update Task",
          "value": "updateTask",
          "action": "Update an existing task",
          "description": "Update an existing task by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listStatuses",
      "options": [
        {
          "name": "Create Status",
          "value": "createStatus",
          "action": "Create a new status",
          "description": "Create a new status in a workspace"
        },
        {
          "name": "Delete Status",
          "value": "deleteStatus",
          "action": "Delete a status",
          "description": "Delete a status from a workspace"
        },
        {
          "name": "List Statuses",
          "value": "listStatuses",
          "action": "List statuses",
          "description": "List all statuses in a workspace"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update an existing status",
          "description": "Update an existing status in a workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "status"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listLabels",
      "options": [
        {
          "name": "Create Label",
          "value": "createLabel",
          "action": "Create a label",
          "description": "Create a new workspace label"
        },
        {
          "name": "Delete Label",
          "value": "deleteLabel",
          "action": "Delete a label",
          "description": "Delete a label"
        },
        {
          "name": "List Labels",
          "value": "listLabels",
          "action": "List labels in a workspace",
          "description": "List all labels in a workspace"
        },
        {
          "name": "Update Label",
          "value": "updateLabel",
          "action": "Update an existing label",
          "description": "Update an existing label by ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "label"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listComments",
      "options": [
        {
          "name": "Create Comment",
          "value": "createComment",
          "action": "Create a new comment",
          "description": "Create a new comment on a task"
        },
        {
          "name": "List Comments",
          "value": "listComments",
          "action": "List comments",
          "description": "List all comments on a task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comment"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Current User",
      "value": "getCurrentUser",
      "action": "Get the authenticated user profile",
      "description": "Get the authenticated user profile",
      "resource": "user"
    },
    {
      "name": "Get Workspace",
      "value": "getWorkspace",
      "action": "Get details of a workspace",
      "description": "Get details of a specific workspace",
      "resource": "workspace"
    },
    {
      "name": "List Workspace Members",
      "value": "listWorkspaceMembers",
      "action": "List members of a workspace",
      "description": "List members of a workspace",
      "resource": "workspace"
    },
    {
      "name": "List Workspaces",
      "value": "listWorkspaces",
      "action": "List workspaces",
      "description": "List workspaces the user has access to",
      "resource": "workspace"
    },
    {
      "name": "Create Folder",
      "value": "createFolder",
      "action": "Create a new folder",
      "description": "Create a new folder in a workspace",
      "resource": "folder"
    },
    {
      "name": "Delete Folder",
      "value": "deleteFolder",
      "action": "Delete a folder",
      "description": "Delete a folder and its contents",
      "resource": "folder"
    },
    {
      "name": "List Folders",
      "value": "listFolders",
      "action": "List folders",
      "description": "List all folders in a workspace",
      "resource": "folder"
    },
    {
      "name": "Update Folder",
      "value": "updateFolder",
      "action": "Update an existing folder",
      "description": "Update an existing folder by ID",
      "resource": "folder"
    },
    {
      "name": "Create List",
      "value": "createList",
      "action": "Create a new list",
      "description": "Create a new list inside a folder",
      "resource": "list"
    },
    {
      "name": "Delete List",
      "value": "deleteList",
      "action": "Delete a list",
      "description": "Delete a list and its tasks",
      "resource": "list"
    },
    {
      "name": "List Lists",
      "value": "listLists",
      "action": "List all lists in a workspace",
      "description": "List all lists in a workspace",
      "resource": "list"
    },
    {
      "name": "Update List",
      "value": "updateList",
      "action": "Update an existing list",
      "description": "Update an existing list by ID",
      "resource": "list"
    },
    {
      "name": "Create Task",
      "value": "createTask",
      "action": "Create a new task",
      "description": "Create a new task in a list",
      "resource": "task"
    },
    {
      "name": "Delete Task",
      "value": "deleteTask",
      "action": "Delete a task",
      "description": "Delete a task by ID",
      "resource": "task"
    },
    {
      "name": "Get Task",
      "value": "getTask",
      "action": "Get a task",
      "description": "Get a task by ID",
      "resource": "task"
    },
    {
      "name": "List Tasks",
      "value": "listTasks",
      "action": "List tasks in a workspace",
      "description": "List tasks in a workspace",
      "resource": "task"
    },
    {
      "name": "Update Task",
      "value": "updateTask",
      "action": "Update an existing task",
      "description": "Update an existing task by ID",
      "resource": "task"
    },
    {
      "name": "Create Status",
      "value": "createStatus",
      "action": "Create a new status",
      "description": "Create a new status in a workspace",
      "resource": "status"
    },
    {
      "name": "Delete Status",
      "value": "deleteStatus",
      "action": "Delete a status",
      "description": "Delete a status from a workspace",
      "resource": "status"
    },
    {
      "name": "List Statuses",
      "value": "listStatuses",
      "action": "List statuses",
      "description": "List all statuses in a workspace",
      "resource": "status"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update an existing status",
      "description": "Update an existing status in a workspace",
      "resource": "status"
    },
    {
      "name": "Create Label",
      "value": "createLabel",
      "action": "Create a label",
      "description": "Create a new workspace label",
      "resource": "label"
    },
    {
      "name": "Delete Label",
      "value": "deleteLabel",
      "action": "Delete a label",
      "description": "Delete a label",
      "resource": "label"
    },
    {
      "name": "List Labels",
      "value": "listLabels",
      "action": "List labels in a workspace",
      "description": "List all labels in a workspace",
      "resource": "label"
    },
    {
      "name": "Update Label",
      "value": "updateLabel",
      "action": "Update an existing label",
      "description": "Update an existing label by ID",
      "resource": "label"
    },
    {
      "name": "Create Comment",
      "value": "createComment",
      "action": "Create a new comment",
      "description": "Create a new comment on a task",
      "resource": "comment"
    },
    {
      "name": "List Comments",
      "value": "listComments",
      "action": "List comments",
      "description": "List all comments on a task",
      "resource": "comment"
    }
  ]

npm_readme:
  # n8n Nodes - Arca Integration

  This repository contains an n8n community node for the Arca API, enabling management of users, workspaces, folders, lists, tasks, statuses, labels, and comments directly from n8n workflows.

  [Arca](https://getarca.app/) is a task and workspace management platform built for teams that need structured workspaces and collaboration tools.

  ## Installation (self-hosted)

  To install the Arca community node directly from the n8n Editor UI:

  1. Open your n8n instance.
  2. Go to Settings > Community Nodes.
  3. Select Install.
  4. Enter the npm package name: `n8n-nodes-arca`.
  5. Agree to the risks of using community nodes and select Install.
  6. The Arca node will appear in the workflow editor.

  ## Installation (n8n Cloud)

  If you're using n8n Cloud:

  1. Open the Canvas and nodes panel.
  2. Search for `Arca` in the community node registry.
  3. Click Install node to add the Arca integration.

  ## Resources and operations

  This node supports the following Arca resources:

  - User
  - Workspaces
  - Folders
  - Lists
  - Tasks
  - Statuses
  - Labels
  - Comments

  Available operations include listing, creating, updating, deleting, and fetching details for each supported resource.

  ## Using as an AI Agent Tool

  The Arca node is fully compatible with n8n AI agents and can be used as a tool in AI workflows. When connected to an AI agent, the node enables:

  - **Task Management**: Create, update, and organize tasks through natural language
  - **Label Management**: Update label names and colors dynamically
  - **Workspace Organization**: Manage folders, lists, and statuses
  - **Productivity Automation**: Let AI agents handle routine workspace operations

  ### Example: Update Label Tool

  When used as an AI agent tool, you can ask the agent to:

  - "Update the label 'Bug' to 'Critical Bug' with red color"
  - "Change the color of label ID 5 to orange"
  - "Rename the 'Tech Debt' label to 'Technical Improvements'"

  The agent will automatically:

  1. Select the correct resource (label)
  2. Choose the update operation
  3. Fill in the required parameters (label ID)
  4. Apply optional fields (name, color) as needed

  All operations support this natural language interface when the node is connected to an AI agent in your workflow.

  ## Usage Examples

  ### Example 1: List All Workspaces

  This example shows how to retrieve all workspaces accessible with your Arca API credentials.

  **Steps:**

  1. Add the **Arca** node to your workflow
  2. Configure your **Arca API** credentials (see Credentials section)
  3. Select the following parameters:
     - **Resource**: Workspaces
     - **Operation**: List Workspaces
  4. Execute the node

  **Result:** The node returns a JSON array of all workspaces with their details (id, name, slug, description, created date, etc.).

  ### Example 2: Create a New Task

  This example demonstrates creating a task in a specific workspace and list.

  **Steps:**

  1. Add the **Arca** node to your workflow
  2. Configure your **Arca API** credentials
  3. Select the following parameters:
     - **Resource**: Tasks
     - **Operation**: Create Task
     - **Workspace ID**: Select your target workspace from the dropdown
     - **Title**: Enter the task title (e.g., "Review Q1 metrics")
     - **List ID** (optional): Select a list to organize the task
     - **Description** (optional): Add task details
     - **Status ID** (optional): Set initial status
     - **Priority** (optional): Set priority (low, medium, high, urgent)
     - **Due Date** (optional): Set a deadline
  4. Execute the node

  **Result:** The node returns the newly created task object with all its properties including the assigned task ID.

  ### Example 3: Automated Webhook Processing

  This example shows how to receive real-time notifications from Arca when tasks are updated.

  **Steps:**

  1. Add the **Arca Trigger** node to your workflow
  2. Copy the webhook URL shown in the node
  3. In your Arca workspace:
     - Go to **Settings → Webhooks**
     - Click **Add Webhook**
     - Paste the webhook URL from step 2
     - Select the events you want to receive (e.g., task.created, task.updated)
     - Optionally set an auth token for security
  4. (Optional) If you set an auth token in Arca, enter the same token in the **Auth Token** field of the Arca Trigger node
  5. Activate your workflow

  **Result:** When a task event occurs in your Arca workspace, the workflow automatically triggers and processes the webhook payload. The trigger node outputs the event data including the event type, workspace info, user who triggered the event, and before/after states of the changed resource.

  ## Credentials

  To use the Arca node, configure your Arca API credentials in n8n:

  1. Go to Settings > Credentials in n8n.
  2. Click New Credential and select Arca API.
  3. Enter your Arca API Key.
  4. Save the credential.

  ## Documentation

  - [Arca API Documentation](https://docs.getarca.app/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Compatibility

  This node targets n8n Community Node integration and is expected to work with n8n versions compatible with `n8n-workflow` 1.x.

  ## Troubleshooting

  ### Common issues

  - Authentication errors
    - Verify your Arca API Key and ensure it has the required scopes.
  - Missing resources
    - Confirm the workspace, list, folder, or task exists and the API user has access.
  - Operation failures
    - Double-check the parameters and IDs passed to each operation.

  ### Getting help

  If you need help, consult the Arca documentation or the n8n community node docs.

ai_documentation_summary:
  {"purpose":"Enables interaction with the Arca API to manage users, workspaces, folders, lists, tasks, statuses, labels, and comments directly within n8n workflows.","capabilities":["List, create, update, and delete users","List, create, update, and delete workspaces","List, create, update, and delete folders","List, create, update, and delete lists","List, create, update, and delete tasks","List, create, update, and delete statuses","List, create, update, and delete labels","List and manage comments","Receive real-time webhook notifications for task events","Natural language interface for AI agents to manage tasks and labels"],"authentication":"API key required","commonUseCases":["Automated task creation and updates based on triggers","Dynamic label management for project categorization","Workspace organization and folder structure maintenance","Real-time notification processing for task lifecycle events","AI agent integration for natural language task management"],"limitations":["Requires valid Arca API key with appropriate scopes","Dependent on n8n Community Node integration compatibility","Webhook security relies on optional auth tokens configured in Arca workspace"],"relatedNodes":["Webhook Trigger","n8n AI Agent Tools"]}


node_type: n8n-nodes-arca.arcaTrigger
package_name: n8n-nodes-arca
display_name: Arca Trigger
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: greip
author_github_url: https://github.com/gredevelopment/
npm_package_name: n8n-nodes-arca
npm_version: 1.0.11
community_fetched_at: 2026-07-14T14:40:34.072Z
ai_summary_generated_at: 2026-05-02 08:57:17
description:
  Receive real-time notifications from Arca when events happen in your workspaces, such as task creation, status changes, list updates, and more

npm_readme:
  # n8n Nodes - Arca Integration

  This repository contains an n8n community node for the Arca API, enabling management of users, workspaces, folders, lists, tasks, statuses, labels, and comments directly from n8n workflows.

  [Arca](https://getarca.app/) is a task and workspace management platform built for teams that need structured workspaces and collaboration tools.

  ## Installation (self-hosted)

  To install the Arca community node directly from the n8n Editor UI:

  1. Open your n8n instance.
  2. Go to Settings > Community Nodes.
  3. Select Install.
  4. Enter the npm package name: `n8n-nodes-arca`.
  5. Agree to the risks of using community nodes and select Install.
  6. The Arca node will appear in the workflow editor.

  ## Installation (n8n Cloud)

  If you're using n8n Cloud:

  1. Open the Canvas and nodes panel.
  2. Search for `Arca` in the community node registry.
  3. Click Install node to add the Arca integration.

  ## Resources and operations

  This node supports the following Arca resources:

  - User
  - Workspaces
  - Folders
  - Lists
  - Tasks
  - Statuses
  - Labels
  - Comments

  Available operations include listing, creating, updating, deleting, and fetching details for each supported resource.

  ## Using as an AI Agent Tool

  The Arca node is fully compatible with n8n AI agents and can be used as a tool in AI workflows. When connected to an AI agent, the node enables:

  - **Task Management**: Create, update, and organize tasks through natural language
  - **Label Management**: Update label names and colors dynamically
  - **Workspace Organization**: Manage folders, lists, and statuses
  - **Productivity Automation**: Let AI agents handle routine workspace operations

  ### Example: Update Label Tool

  When used as an AI agent tool, you can ask the agent to:

  - "Update the label 'Bug' to 'Critical Bug' with red color"
  - "Change the color of label ID 5 to orange"
  - "Rename the 'Tech Debt' label to 'Technical Improvements'"

  The agent will automatically:

  1. Select the correct resource (label)
  2. Choose the update operation
  3. Fill in the required parameters (label ID)
  4. Apply optional fields (name, color) as needed

  All operations support this natural language interface when the node is connected to an AI agent in your workflow.

  ## Usage Examples

  ### Example 1: List All Workspaces

  This example shows how to retrieve all workspaces accessible with your Arca API credentials.

  **Steps:**

  1. Add the **Arca** node to your workflow
  2. Configure your **Arca API** credentials (see Credentials section)
  3. Select the following parameters:
     - **Resource**: Workspaces
     - **Operation**: List Workspaces
  4. Execute the node

  **Result:** The node returns a JSON array of all workspaces with their details (id, name, slug, description, created date, etc.).

  ### Example 2: Create a New Task

  This example demonstrates creating a task in a specific workspace and list.

  **Steps:**

  1. Add the **Arca** node to your workflow
  2. Configure your **Arca API** credentials
  3. Select the following parameters:
     - **Resource**: Tasks
     - **Operation**: Create Task
     - **Workspace ID**: Select your target workspace from the dropdown
     - **Title**: Enter the task title (e.g., "Review Q1 metrics")
     - **List ID** (optional): Select a list to organize the task
     - **Description** (optional): Add task details
     - **Status ID** (optional): Set initial status
     - **Priority** (optional): Set priority (low, medium, high, urgent)
     - **Due Date** (optional): Set a deadline
  4. Execute the node

  **Result:** The node returns the newly created task object with all its properties including the assigned task ID.

  ### Example 3: Automated Webhook Processing

  This example shows how to receive real-time notifications from Arca when tasks are updated.

  **Steps:**

  1. Add the **Arca Trigger** node to your workflow
  2. Copy the webhook URL shown in the node
  3. In your Arca workspace:
     - Go to **Settings → Webhooks**
     - Click **Add Webhook**
     - Paste the webhook URL from step 2
     - Select the events you want to receive (e.g., task.created, task.updated)
     - Optionally set an auth token for security
  4. (Optional) If you set an auth token in Arca, enter the same token in the **Auth Token** field of the Arca Trigger node
  5. Activate your workflow

  **Result:** When a task event occurs in your Arca workspace, the workflow automatically triggers and processes the webhook payload. The trigger node outputs the event data including the event type, workspace info, user who triggered the event, and before/after states of the changed resource.

  ## Credentials

  To use the Arca node, configure your Arca API credentials in n8n:

  1. Go to Settings > Credentials in n8n.
  2. Click New Credential and select Arca API.
  3. Enter your Arca API Key.
  4. Save the credential.

  ## Documentation

  - [Arca API Documentation](https://docs.getarca.app/)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## Compatibility

  This node targets n8n Community Node integration and is expected to work with n8n versions compatible with `n8n-workflow` 1.x.

  ## Troubleshooting

  ### Common issues

  - Authentication errors
    - Verify your Arca API Key and ensure it has the required scopes.
  - Missing resources
    - Confirm the workspace, list, folder, or task exists and the API user has access.
  - Operation failures
    - Double-check the parameters and IDs passed to each operation.

  ### Getting help

  If you need help, consult the Arca documentation or the n8n community node docs.

ai_documentation_summary:
  {"purpose":"The Arca Trigger node receives real-time notifications from the Arca platform when events occur in workspaces, such as task creation, status changes, or list updates. It acts as a webhook listener to automatically trigger n8n workflows based on Arca activity.","capabilities":["Receive real-time webhook notifications","Listen for task creation events","Listen for task update events","Listen for list update events","Output event data including event type, workspace info, user details, and before/after states"],"authentication":"API key required (via Auth Token field in node configuration)","commonUseCases":["Automate follow-up actions when a new task is created","Trigger notifications when task status changes","Update external systems when workspaces or lists are modified","Monitor workspace activity for reporting or analytics"],"limitations":["Requires manual setup of webhook URL in the Arca platform settings","Auth token must be configured in both Arca platform and the n8n node if security is enabled"],"relatedNodes":["Arca (main Arca API node for CRUD operations)"]}


node_type: n8n-nodes-ticktick.tickTickTrigger
package_name: n8n-nodes-ticktick
display_name: TickTick Trigger
description: Polls TickTick for newly created tasks, optionally filtered by project or assignee
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: hansdoe
author_github_url: https://github.com/hansdoebel/
npm_package_name: n8n-nodes-ticktick
npm_version: 2.2.0
community_fetched_at: 2026-07-14T14:40:34.074Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  <h1 align="center">
    <br>
    n8n-nodes-ticktick
    <br>
  </h1>

  <p align="center">
  	<img alt="NPM Version" src="https://img.shields.io/npm/v/n8n-nodes-ticktick">
  	<img alt="GitHub License" src="https://img.shields.io/github/license/hansdoebel/n8n-nodes-ticktick">
  	<img alt="NPM Downloads" src="https://img.shields.io/npm/dm/n8n-nodes-ticktick">
  	<img alt="NPM Last Update" src="https://img.shields.io/npm/last-update/n8n-nodes-ticktick">
  	<img alt="Static Badge" src="https://img.shields.io/badge/n8n-2.21.7-EA4B71?logo=n8n">
  </p>

  <p align="center">
    <a href="#installation">Installation</a> |
    <a href="#credentials">Credentials</a> |
    <a href="#resources">Resources</a> |
    <a href="#development">Development</a> |
    <a href="#contributors">Contributors</a> |
    <a href="#license">License</a>
  </p>

  ---

  An n8n community node for integrating [TickTick](https://ticktick.com) with your workflows to manage tasks, projects, tags, habits, focus time, and more.

  ## Installation

  1. Create a new workflow or open an existing one
  2. Open the nodes panel by selecting **+** or pressing **N**
  3. Search for **TickTick**
  4. Select **Install** to install the node for your instance

  ## Credentials

  This node supports three authentication methods:

  1. **TickTick Session API (V2)** -- Enter your TickTick email and password in n8n. Provides access to all features including V2 API operations. Session tokens are managed automatically.
  2. **TickTick API Token (V1)** -- Go to TickTick Account Settings, then API Token, then Manage. Copy the token and paste it into a new TickTick API Token credential in n8n.
  3. **TickTick OAuth2 (V1)** -- Visit [developer.ticktick.com](https://developer.ticktick.com/), go to Manage Apps, create a new app, copy the Client ID and Client Secret, and paste them into a new TickTick OAuth2 API credential in n8n.

  ## Resources

  <details>
  <summary><strong>Task</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Create | Create a new task with optional subtasks |
  | Get | Get a specific task by ID |
  | Update | Update task properties |
  | Complete | Mark a task as complete |
  | Delete | Delete a task |
  | Assign | Assign task to a user (shared projects only) |
  | List All | List all tasks across projects with filtering |
  | List Completed | Get completed tasks in date range |
  | List Deleted | Get deleted/trashed tasks |
  | Move | Move task to different project |
  | Search | Search tasks by keyword across all projects (V2 API only) |
  | Set Parent | Set a parent task (create subtask relationship) |

  </details>

  <details>
  <summary><strong>Project</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Create | Create a new project |
  | Get | Get all projects, a specific project, or project with tasks and columns |
  | Update | Update project properties |
  | Delete | Delete a project |
  | Get Users | Get users in a shared/collaborative project |
  | List Closed | Get all closed projects |

  </details>

  <details>
  <summary><strong>Tag</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Create | Create a new tag |
  | Update | Update existing tag |
  | Delete | Delete a tag |
  | List | List all tags |
  | Rename | Rename a tag |
  | Merge | Merge tag into another |

  </details>

  <details>
  <summary><strong>Habit</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Create | Create a new habit |
  | Get | Get a specific habit |
  | Update | Update existing habit |
  | Archive | Archive a habit |
  | Unarchive | Unarchive a habit |
  | Delete | Delete a habit |
  | List | List all habits |
  | Checkin | Record habit check-in |

  </details>

  <details>
  <summary><strong>Focus</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Get Heatmap | Get focus heatmap data for date range |
  | Get Distribution | Get focus time distribution for date range |

  </details>

  <details>
  <summary><strong>Project Group</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Create | Create a project group |
  | Update | Update existing group |
  | Delete | Delete a project group |
  | List | List all project groups |

  </details>

  <details>
  <summary><strong>User</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Get Profile | Get user profile information |
  | Get Status | Get user status |
  | Get Preferences | Get user preferences |

  </details>

  <details>
  <summary><strong>Sync</strong></summary>

  | Operation | Description |
  | --------- | ----------- |
  | Sync All | Get all data (tasks, projects, tags, habits, etc.) |

  </details>

  ## Development

  ```bash
  git clone https://github.com/hansdoebel/n8n-nodes-ticktick.git
  cd n8n-nodes-ticktick
  npm install
  npm run build
  npm run lint
  ```

  ## Contributors

  Contributions are welcome! Please open an [issue](https://github.com/hansdoebel/n8n-nodes-ticktick/issues) or [pull request](https://github.com/hansdoebel/n8n-nodes-ticktick/pulls).

  <p align="left">
      <a href="https://github.com/mrozekadam"><img src="https://avatars.githubusercontent.com/u/56890953?v=4&s=48" width="48" height="48" alt="mrozekadam" title="mrozekadam"/></a><a href="https://github.com/kazhuravlev"><img src="https://avatars.githubusercontent.com/u/7666955?v=4&s=48" width="48" height="48" alt="kazhuravlev" title="kazhuravlev"/></a>
  </p>

  ## License

  [MIT](LICENSE.md)

  <p align="center">
    <a href="https://github.com/hansdoebel/n8n-nodes-ticktick">GitHub</a> |
    <a href="https://github.com/hansdoebel/n8n-nodes-ticktick/issues">Issues</a> |
    <a href="https://developer.ticktick.com">TickTick API Docs</a>
  </p>

ai_documentation_summary:
  {"purpose":"Polls TickTick for newly created tasks, optionally filtered by project or assignee, and integrates TickTick task management into n8n workflows.","capabilities":["Create tasks with optional subtasks","Get, update, complete, delete, and assign tasks","List all tasks with filtering options","Search tasks by keyword across all projects","Manage projects (create, update, delete, list)","Manage tags (create, update, delete, merge)","Manage habits (create, update, check-in, archive)","Analyze focus time (heatmap, distribution)","Manage project groups","Sync all data from TickTick"],"authentication":"API key required (supports TickTick Session API V2, API Token V1, or OAuth2 V1)","commonUseCases":["Automated task creation based on workflow triggers","Task status updates and completion tracking","Project management and organization","Habit tracking and reminders","Focus time analysis and reporting"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-cloro.cloro
package_name: n8n-nodes-cloro
display_name: Cloro
description: Extract structured data from AI responses and search results via cloro API
category: Community
development_style: declarative
version: 2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: cloro-dev
author_github_url: https://github.com/cloro-dev/
npm_package_name: n8n-nodes-cloro
npm_version: 0.2.1
community_fetched_at: 2026-07-14T14:40:34.075Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "dataExtraction",
      "options": [
        {
          "name": "Data Extraction",
          "value": "dataExtraction"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Get Countries",
          "value": "getCountries",
          "action": "Get list of supported countries",
          "description": "Get list of supported countries"
        },
        {
          "name": "Get Task Status",
          "value": "getTaskStatus",
          "action": "Get status of a monitoring task",
          "description": "Get status of a monitoring task"
        },
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Extract structured data from provider",
          "description": "Extract structured data from provider"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ],
          "resource": [
            "dataExtraction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "resource",
      "type": "options",
      "default": "chatgpt",
      "options": [
        {
          "name": "ChatGPT",
          "value": "chatgpt"
        },
        {
          "name": "Country",
          "value": "country"
        },
        {
          "name": "Google AI Mode",
          "value": "aimode"
        },
        {
          "name": "Google Gemini",
          "value": "gemini"
        },
        {
          "name": "Google News",
          "value": "googleNews"
        },
        {
          "name": "Google Search",
          "value": "google"
        },
        {
          "name": "Grok",
          "value": "grok"
        },
        {
          "name": "Microsoft Copilot",
          "value": "copilot"
        },
        {
          "name": "Perplexity",
          "value": "perplexity"
        },
        {
          "name": "Task",
          "value": "task"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor ChatGPT",
          "description": "Extract structured data from a ChatGPT response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "chatgpt"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Google AI Mode",
          "description": "Extract structured data from a Google AI Mode response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "aimode"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Google Gemini",
          "description": "Extract structured data from a Google Gemini response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "gemini"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Google News",
          "description": "Extract structured data from Google News results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "googleNews"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Google Search",
          "description": "Extract structured data from Google Search results"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "google"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Grok",
          "description": "Extract structured data from a Grok response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "grok"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Microsoft Copilot",
          "description": "Extract structured data from a Microsoft Copilot response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "copilot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "monitor",
      "options": [
        {
          "name": "Monitor",
          "value": "monitor",
          "action": "Monitor Perplexity",
          "description": "Extract structured data from a Perplexity response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "perplexity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many countries",
          "description": "Get list of supported countries"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "country"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get task status",
          "description": "Get status of a monitoring task"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ],
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Countries",
      "value": "getCountries",
      "action": "Get list of supported countries",
      "description": "Get list of supported countries",
      "resource": "dataExtraction"
    },
    {
      "name": "Get Task Status",
      "value": "getTaskStatus",
      "action": "Get status of a monitoring task",
      "description": "Get status of a monitoring task",
      "resource": "dataExtraction"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Extract structured data from provider",
      "description": "Extract structured data from provider",
      "resource": "dataExtraction"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor ChatGPT",
      "description": "Extract structured data from a ChatGPT response",
      "resource": "chatgpt"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Google AI Mode",
      "description": "Extract structured data from a Google AI Mode response",
      "resource": "aimode"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Google Gemini",
      "description": "Extract structured data from a Google Gemini response",
      "resource": "gemini"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Google News",
      "description": "Extract structured data from Google News results",
      "resource": "googleNews"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Google Search",
      "description": "Extract structured data from Google Search results",
      "resource": "google"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Grok",
      "description": "Extract structured data from a Grok response",
      "resource": "grok"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Microsoft Copilot",
      "description": "Extract structured data from a Microsoft Copilot response",
      "resource": "copilot"
    },
    {
      "name": "Monitor",
      "value": "monitor",
      "action": "Monitor Perplexity",
      "description": "Extract structured data from a Perplexity response",
      "resource": "perplexity"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many countries",
      "description": "Get list of supported countries",
      "resource": "country"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get task status",
      "description": "Get status of a monitoring task",
      "resource": "task"
    }
  ]

npm_readme:
  # n8n-nodes-cloro

  This is an n8n community node for [cloro API](https://cloro.dev/docs). It lets you extract structured data from AI responses and search results in your n8n workflows.

  cloro is an API service that provides structured data extraction from multiple AI providers including ChatGPT, Google Search, Google News, Google Gemini, Perplexity, Microsoft Copilot, Grok, and Google AI Mode.

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

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

  ## Installation

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

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

  ```bash
  npm install n8n-nodes-cloro
  ```

  Or use the community nodes installation feature in the n8n UI by searching for `n8n-nodes-cloro`.

  ## Operations

  Since version 0.2.0 each AI engine is its own resource, mapping 1:1 to the matching [cloro monitor endpoint](https://cloro.dev/docs/guides/making-requests/sync) (`POST /v1/monitor/<engine>`). Workflows built with earlier versions keep the original provider dropdown and continue to work unchanged.

  ### Engine resources (Monitor)

  Each engine resource supports a **Monitor** operation that extracts structured data from that engine:

  - **ChatGPT** - OpenAI's ChatGPT with optional raw response and search queries
  - **Google AI Mode** - Google's AI-powered search mode
  - **Google Gemini** - Google's Gemini AI model
  - **Google News** - Google News search results
  - **Google Search** - Traditional Google Search with AI Overview support
  - **Grok** - xAI's Grok AI assistant
  - **Microsoft Copilot** - Microsoft's Copilot AI
  - **Perplexity** - Perplexity AI search

  **Engine-Specific Options:**
  - **Google Search**: Query, country, city, device type (desktop/mobile), number of pages, include HTML, include AI Overview, include markdown
  - **Google News**: Query, country (required), device type (desktop/mobile), number of pages (1-10), include HTML
  - **Other AI Engines**: Prompt, country, include HTML, include markdown
  - **ChatGPT (additional)**: Include raw response, include search queries (query fan-out)

  ### Country: Get Many
  Retrieve a list of supported countries, optionally filtered by model/engine.

  ### Task: Get Status
  Check the status of a monitoring task using its task ID.

  ## Credentials

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

  ### Prerequisites
  1. Sign up at [cloro.dev](https://cloro.dev) to get your API key
  2. Visit the [cloro documentation](https://cloro.dev/docs) for API details

  ### Authentication
  The node uses API Key authentication via Bearer token:
  - In n8n, create a new credential for "cloro API"
  - Enter your API key in the "API Key" field
  - The node automatically includes the key in the Authorization header as `Bearer YOUR_API_KEY`

  ## Compatibility

  - **Minimum n8n version**: Compatible with n8n version 1.0.0 and later
  - **Node version**: 1.0.0
  - **License**: MIT

  ## Usage

  ### Basic Example Workflow

  1. Add the **cloro** node to your workflow
  2. Select your **Resource** (e.g., ChatGPT, Google Search)
  3. Choose the **Operation** (typically "Monitor")
  4. Configure your parameters:
     - For **Google Search**: Enter a query, select country, device, and other options
     - For **AI engines**: Enter a prompt and select country
  5. Configure optional fields like include HTML, markdown, or other engine-specific options

  ### Example: Monitoring Google Search Results

  ```
  Node: cloro
  Resource: Google Search
  Operation: Monitor
  Query: "best coffee shops in New York"
  Country: United States
  Device: Desktop
  Pages: 2
  Include AI Overview: true
  Include Markdown: true
  ```

  ### Example: Extracting Data from ChatGPT

  ```
  Node: cloro
  Resource: ChatGPT
  Operation: Monitor
  Prompt: "What are the top 5 programming languages in 2025?"
  Country: United States
  Include Raw Response: true
  Include Query Fan-Out: true
  ```

  ### Using Get Many Countries

  ```
  Node: cloro
  Resource: Country
  Operation: Get Many
  Filter by Model: chatgpt (optional)
  ```

  This returns a list of countries supported by the specified engine.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [cloro API Documentation](https://cloro.dev/docs)
  * [cloro Website](https://cloro.dev)

  ## Version History

  ### 0.2.0
  - Node typeVersion 2: one resource per AI engine (ChatGPT, Google AI Mode, Google Gemini, Google News, Google Search, Grok, Microsoft Copilot, Perplexity), matching the per-engine cloro monitor endpoints
  - New Google News resource covering the `/v1/monitor/google/news` endpoint
  - Country (Get Many) and Task (Get Status) as dedicated resources
  - Existing workflows keep running on typeVersion 1 with the provider dropdown

  ### 0.1.0
  - Initial release
  - Support for 7 AI/search providers (ChatGPT, Google Search, Google Gemini, Google AI Mode, Perplexity, Microsoft Copilot, Grok)
  - Operations: Monitor, Get Countries, Get Task Status
  - Provider-specific options for each service
  - Support for HTML, Markdown, AI Overview, raw response, and search queries
  - Country/location filtering capabilities

ai_documentation_summary:
  {"purpose":"Extract structured data from AI responses and search results using the Cloro API, supporting multiple AI providers like ChatGPT, Google Search, and Perplexity.","capabilities":["Monitor AI and search providers for structured data","Extract data from ChatGPT, Google Gemini, Google AI Mode, Grok, Microsoft Copilot, Perplexity, and Google Search","Retrieve supported countries list filtered by model/provider","Check task status using task ID","Support for custom prompts and search queries","Options to include raw responses, HTML, markdown, and AI overviews","Country and device type filtering for search results"],"authentication":"API key required (Bearer token)","commonUseCases":["Automated extraction of structured data from AI-generated content","Aggregating search results with AI overviews for analysis","Multi-provider comparison of AI responses","Geographically filtered AI data retrieval"],"limitations":["Requires a valid Cloro API key from cloro.dev","Limited to providers supported by the Cloro API (ChatGPT, Google Search, Gemini, Grok, Copilot, Perplexity, Google AI Mode)","Minimum n8n version 1.0.0 required"],"relatedNodes":[]}


node_type: n8n-nodes-kis.kisGetDataTrigger
package_name: n8n-nodes-kis
display_name: KIS New Document
description: Triggers when new documents are created in a KIS collection
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: getkis
author_github_url: https://github.com/dilawarudemy/
npm_package_name: n8n-nodes-kis
npm_version: 0.2.0
community_fetched_at: 2026-07-14T14:40:34.076Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-kis

  Community node package for **KIS ([getkis](https://kis.work))** in **n8n**.

  This package provides nodes to interact with KIS collections
  (datatables) and documents directly from n8n workflows.

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

  ## Features

  -   List collections
  -   Search documents
  -   Create documents
  -   Update documents
  -   Delete documents
  -   Optional polling trigger 

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

  ## Installation

  ### Install via n8n UI

  1.  Go to **Settings → Community Nodes**

  2.  Click **Install**

  3.  Enter:

      n8n-nodes-kis

  4.  Restart n8n

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

  ## Credentials Setup

  Create new credentials in n8n:

  -   **Base URL**: https://api.getkis.io/api/v1
  -   **App Token**
  -   **App Secret**

  Click **Save** and then **Test** to validate.

  If authentication fails with 401: - Double-check token/secret - Remove
  trailing spaces - Confirm correct Base URL

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

  ## Nodes Included

  ### KIS Get All Collections

  Lists all accessible collections.

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

  ### KIS Search Data

  Searches documents inside a collection.

  Inputs: - Collection Name - Filters (if configured)

  Returns: - One n8n item per document

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

  ### KIS Create Data

  Creates a new document in a collection.

  Inputs: - Collection Name - Fields (UI) OR Fields (JSON)

  Example JSON: { "name": "John Doe", "age": 35, "active": true }

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

  ### KIS Update Data

  Updates an existing document.

  Inputs: - Collection Name - Document ID - Fields (UI) OR Fields (JSON)

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

  ### KIS Delete Data

  Deletes a document by ID.

  Note: Be careful when running workflows with multiple incoming items, as
  nodes execute once per item by default.

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

  ## Permissions

  If you receive errors like: - "Api key is not allowed to do this" - HTTP
  422 permission errors

  Check API access permissions in KIS Cloud and ensure: - Collection
  access is enabled - Write permission is granted for Create/Update/Delete

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

  ## Example Workflow

  Manual Trigger → KIS Create Data

  Fields JSON example: { "title": "Test Entry", "status": "active" }

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

  ## Development

  Build the project:

  npm install npm run build

  For local testing:

  Windows CMD: set
  N8N_CUSTOM_EXTENSIONS=C:`\path`{=tex}`\to`{=tex}`\n`{=tex}8n-nodes-kis`\dist`{=tex}
  n8n start

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

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Triggers workflows when new documents are created in a KIS collection and provides CRUD operations for managing documents within KIS datatables.","capabilities":["List collections","Search documents","Create documents","Update documents","Delete documents","Optional polling trigger"],"authentication":"API key required (Base URL, App Token, App Secret)","commonUseCases":["Automate document creation in KIS","Sync data between n8n and KIS collections","Monitor new document creation events"],"limitations":["Nodes execute once per item by default, requiring caution with multiple incoming items for delete operations","Requires specific API permissions (collection access, write permissions) to perform Create/Update/Delete actions"],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:34
author_name: getkis
author_github_url: https://github.com/dilawarudemy/
npm_package_name: n8n-nodes-kis
npm_version: 0.2.0
community_fetched_at: 2026-07-14T14:40:34.077Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "data",
      "options": [
        {
          "name": "Data",
          "value": "data"
        },
        {
          "name": "Collection",
          "value": "collection"
        }
      ],
      "displayName": "Resource"
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Create",
          "value": "create"
        },
        {
          "name": "Update",
          "value": "update"
        },
        {
          "name": "Delete",
          "value": "delete"
        },
        {
          "name": "Search",
          "value": "search"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "data"
          ]
        }
      }
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get All",
          "value": "getAll"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "collection"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "resource": "data"
    },
    {
      "name": "Update",
      "value": "update",
      "resource": "data"
    },
    {
      "name": "Delete",
      "value": "delete",
      "resource": "data"
    },
    {
      "name": "Search",
      "value": "search",
      "resource": "data"
    },
    {
      "name": "Get All",
      "value": "getAll",
      "resource": "collection"
    }
  ]

npm_readme:
  # n8n-nodes-kis

  Community node package for **KIS ([getkis](https://kis.work))** in **n8n**.

  This package provides nodes to interact with KIS collections
  (datatables) and documents directly from n8n workflows.

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

  ## Features

  -   List collections
  -   Search documents
  -   Create documents
  -   Update documents
  -   Delete documents
  -   Optional polling trigger 

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

  ## Installation

  ### Install via n8n UI

  1.  Go to **Settings → Community Nodes**

  2.  Click **Install**

  3.  Enter:

      n8n-nodes-kis

  4.  Restart n8n

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

  ## Credentials Setup

  Create new credentials in n8n:

  -   **Base URL**: https://api.getkis.io/api/v1
  -   **App Token**
  -   **App Secret**

  Click **Save** and then **Test** to validate.

  If authentication fails with 401: - Double-check token/secret - Remove
  trailing spaces - Confirm correct Base URL

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

  ## Nodes Included

  ### KIS Get All Collections

  Lists all accessible collections.

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

  ### KIS Search Data

  Searches documents inside a collection.

  Inputs: - Collection Name - Filters (if configured)

  Returns: - One n8n item per document

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

  ### KIS Create Data

  Creates a new document in a collection.

  Inputs: - Collection Name - Fields (UI) OR Fields (JSON)

  Example JSON: { "name": "John Doe", "age": 35, "active": true }

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

  ### KIS Update Data

  Updates an existing document.

  Inputs: - Collection Name - Document ID - Fields (UI) OR Fields (JSON)

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

  ### KIS Delete Data

  Deletes a document by ID.

  Note: Be careful when running workflows with multiple incoming items, as
  nodes execute once per item by default.

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

  ## Permissions

  If you receive errors like: - "Api key is not allowed to do this" - HTTP
  422 permission errors

  Check API access permissions in KIS Cloud and ensure: - Collection
  access is enabled - Write permission is granted for Create/Update/Delete

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

  ## Example Workflow

  Manual Trigger → KIS Create Data

  Fields JSON example: { "title": "Test Entry", "status": "active" }

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

  ## Development

  Build the project:

  npm install npm run build

  For local testing:

  Windows CMD: set
  N8N_CUSTOM_EXTENSIONS=C:`\path`{=tex}`\to`{=tex}`\n`{=tex}8n-nodes-kis`\dist`{=tex}
  n8n start

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

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Enables interaction with KIS (getkis) data by allowing workflows to list collections, search, create, update, and delete documents directly.","capabilities":["List collections","Search documents within a collection","Create new documents in a collection","Update existing documents by ID","Delete documents by ID","Optional polling trigger"],"authentication":"API key required (App Token and App Secret)","commonUseCases":["Syncing customer data from KIS to other systems","Automated document creation based on workflow triggers","Real-time data updates and status changes","Batch processing of records via search and delete"],"limitations":["Nodes execute once per item by default, requiring caution with multiple incoming items for delete operations","Requires specific API permissions (collection access and write permissions) to be granted in KIS Cloud"],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:34
author_name: ycloud-admin
author_github_url: https://github.com/YCloud-Developers/n8n-nodes-ycloud.git
npm_package_name: @ycloud-ai/n8n-nodes-ycloud
npm_version: 0.1.12
community_fetched_at: 2026-07-14T14:40:34.078Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "whatsappTemplate",
      "options": [
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "WhatsApp Template",
          "value": "whatsappTemplate"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact",
          "routing": {
            "request": {
              "url": "/contact/contacts",
              "body": {
                "phoneNumber": "={{$parameter.phoneNumber}}"
              },
              "method": "POST"
            }
          },
          "description": "Create a new contact"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact",
          "routing": {
            "request": {
              "url": "=/contact/contacts/{{$parameter.contactId}}",
              "method": "GET"
            }
          },
          "description": "Retrieve a contact by ID"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get contacts",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/contact/contacts",
              "method": "GET"
            }
          },
          "description": "Get a list of contacts"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendText",
      "options": [
        {
          "name": "Send Button",
          "value": "sendInteractiveButton",
          "action": "Send button message",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/whatsapp/messages/sendDirectly",
              "body": {
                "to": "={{$parameter.to}}",
                "from": "={{$parameter.from}}",
                "type": "interactive",
                "interactive": {
                  "body": {
                    "text": "={{$parameter.bodyText}}"
                  },
                  "type": "button"
                }
              },
              "method": "POST"
            }
          },
          "description": "Send an interactive button message"
        },
        {
          "name": "Send List",
          "value": "sendInteractiveList",
          "action": "Send list message",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/whatsapp/messages/sendDirectly",
              "body": {
                "to": "={{$parameter.to}}",
                "from": "={{$parameter.from}}",
                "type": "interactive",
                "interactive": {
                  "body": {
                    "text": "={{$parameter.bodyText}}"
                  },
                  "type": "list"
                }
              },
              "method": "POST"
            }
          },
          "description": "Send an interactive list message"
        },
        {
          "name": "Send Template",
          "value": "sendTemplate",
          "action": "Send template message",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/whatsapp/messages/sendDirectly",
              "body": {
                "to": "={{$parameter.to}}",
                "from": "={{$parameter.from}}",
                "type": "template",
                "template": {
                  "name": "={{$parameter.templateName}}",
                  "language": {
                    "code": "={{$parameter.languageCode}}"
                  }
                }
              },
              "method": "POST"
            }
          },
          "description": "Send a WhatsApp template message"
        },
        {
          "name": "Send Text",
          "value": "sendText",
          "action": "Send text message",
          "routing": {
            "request": {
              "url": "/whatsapp/messages/sendDirectly",
              "body": {
                "to": "={{$parameter.to}}",
                "from": "={{$parameter.from}}",
                "text": {
                  "body": "={{$parameter.body}}",
                  "preview_url": "={{$parameter.previewUrl}}"
                },
                "type": "text"
              },
              "method": "POST"
            }
          },
          "description": "Send a text message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get templates",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "rootProperty",
                  "properties": {
                    "property": "items"
                  }
                }
              ]
            },
            "request": {
              "url": "/whatsapp/templates",
              "method": "GET"
            }
          },
          "description": "Get a list of WhatsApp templates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "whatsappTemplate"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact",
      "routing": {
        "request": {
          "url": "/contact/contacts",
          "body": {
            "phoneNumber": "={{$parameter.phoneNumber}}"
          },
          "method": "POST"
        }
      },
      "description": "Create a new contact",
      "resource": "contact"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact",
      "routing": {
        "request": {
          "url": "=/contact/contacts/{{$parameter.contactId}}",
          "method": "GET"
        }
      },
      "description": "Retrieve a contact by ID",
      "resource": "contact"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get contacts",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/contact/contacts",
          "method": "GET"
        }
      },
      "description": "Get a list of contacts",
      "resource": "contact"
    },
    {
      "name": "Send Button",
      "value": "sendInteractiveButton",
      "action": "Send button message",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/whatsapp/messages/sendDirectly",
          "body": {
            "to": "={{$parameter.to}}",
            "from": "={{$parameter.from}}",
            "type": "interactive",
            "interactive": {
              "body": {
                "text": "={{$parameter.bodyText}}"
              },
              "type": "button"
            }
          },
          "method": "POST"
        }
      },
      "description": "Send an interactive button message",
      "resource": "message"
    },
    {
      "name": "Send List",
      "value": "sendInteractiveList",
      "action": "Send list message",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/whatsapp/messages/sendDirectly",
          "body": {
            "to": "={{$parameter.to}}",
            "from": "={{$parameter.from}}",
            "type": "interactive",
            "interactive": {
              "body": {
                "text": "={{$parameter.bodyText}}"
              },
              "type": "list"
            }
          },
          "method": "POST"
        }
      },
      "description": "Send an interactive list message",
      "resource": "message"
    },
    {
      "name": "Send Template",
      "value": "sendTemplate",
      "action": "Send template message",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/whatsapp/messages/sendDirectly",
          "body": {
            "to": "={{$parameter.to}}",
            "from": "={{$parameter.from}}",
            "type": "template",
            "template": {
              "name": "={{$parameter.templateName}}",
              "language": {
                "code": "={{$parameter.languageCode}}"
              }
            }
          },
          "method": "POST"
        }
      },
      "description": "Send a WhatsApp template message",
      "resource": "message"
    },
    {
      "name": "Send Text",
      "value": "sendText",
      "action": "Send text message",
      "routing": {
        "request": {
          "url": "/whatsapp/messages/sendDirectly",
          "body": {
            "to": "={{$parameter.to}}",
            "from": "={{$parameter.from}}",
            "text": {
              "body": "={{$parameter.body}}",
              "preview_url": "={{$parameter.previewUrl}}"
            },
            "type": "text"
          },
          "method": "POST"
        }
      },
      "description": "Send a text message",
      "resource": "message"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get templates",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "rootProperty",
              "properties": {
                "property": "items"
              }
            }
          ]
        },
        "request": {
          "url": "/whatsapp/templates",
          "method": "GET"
        }
      },
      "description": "Get a list of WhatsApp templates",
      "resource": "whatsappTemplate"
    }
  ]

npm_readme:
  # @ycloud-ai/n8n-nodes-ycloud

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

  YCloud is a cloud communication platform providing WhatsApp Business API, SMS, and other messaging services for businesses.

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

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

  ## Installation

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

  ## Operations

  ### WhatsApp Template
  - **Get Many** - Retrieve a list of WhatsApp templates with optional filters (WABA ID, template name, language)

  ### Message
  - **Send Text** - Send a text message
  - **Send Template** - Send a template message with dynamic variable loading
  - **Send Button** - Send an interactive button message (up to 3 reply buttons)
  - **Send List** - Send an interactive list message with sections and rows

  ### Contact
  - **Create** - Create a new contact
  - **Get** - Retrieve a contact by ID
  - **Get Many** - Retrieve a list of contacts with optional filters (tags, country code, phone number, email)

  ## Credentials

  You need a YCloud API key to use this node.

  1. Sign up at [YCloud](https://www.ycloud.com/)
  2. Go to your dashboard and navigate to **Settings** > **API Keys**
  3. Copy your API key
  4. In n8n, create a new **YCloud API** credential and paste your API key

  ## Compatibility

  Tested with n8n version 2.13.x. Minimum required version: 1.x.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [YCloud API documentation](https://docs.ycloud.com/reference)
  * [YCloud website](https://www.ycloud.com/)

ai_documentation_summary:
  {"purpose":"Enables interaction with the YCloud API to manage WhatsApp Business API, SMS, and messaging services within n8n workflows.","capabilities":["Retrieve WhatsApp templates with filtering","Send text messages","Send template messages with dynamic variables","Send interactive button messages (up to 3 reply buttons)","Send interactive list messages with sections and rows","Create new contacts","Retrieve individual contacts by ID","Retrieve lists of contacts with filtering by tags, country code, phone number, or email"],"authentication":"API key required","commonUseCases":["Automating WhatsApp Business API messaging","Sending templated messages with dynamic data","Managing customer contact lists","Creating interactive messaging flows with buttons and lists"],"limitations":[],"relatedNodes":[]}


node_type: n8n-nodes-linkup-so.linkup
package_name: n8n-nodes-linkup-so
display_name: Linkup
description: Consume Linkup API for web search, content fetching, research and async task operations
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: romainjeff
author_github_url: https://github.com/RomainJeff/n8n-nodes-linkup.git
npm_package_name: n8n-nodes-linkup-so
npm_version: 0.4.0
community_fetched_at: 2026-07-14T14:40:34.079Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Fetch",
          "value": "fetch"
        },
        {
          "name": "Research",
          "value": "research"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "Task",
          "value": "task"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Search",
          "value": "search",
          "action": "Perform a web search",
          "routing": {
            "request": {
              "url": "/search",
              "method": "POST"
            }
          },
          "description": "Search the web and retrieve context for AI grounding"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetch",
      "options": [
        {
          "name": "Fetch",
          "value": "fetch",
          "action": "Fetch webpage content",
          "routing": {
            "request": {
              "url": "/fetch",
              "method": "POST"
            }
          },
          "description": "Fetch and convert a webpage to markdown"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fetch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "start",
      "options": [
        {
          "name": "Start",
          "value": "start",
          "action": "Start a research task",
          "routing": {
            "request": {
              "url": "/research",
              "method": "POST"
            }
          },
          "description": "Start an asynchronous research task. Returns a task ID and initial status — poll Get to retrieve the final result."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a research task",
          "routing": {
            "request": {
              "url": "=/research/{{$parameter.id}}",
              "method": "GET"
            }
          },
          "description": "Retrieve the current status and result of a research task by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many research tasks",
          "routing": {
            "request": {
              "url": "/research",
              "method": "GET"
            }
          },
          "description": "List research tasks for the authenticated organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "research"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a task",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "request": {
              "url": "/tasks",
              "method": "POST"
            }
          },
          "description": "Create an asynchronous task for search, fetch, or research. Returns a task ID and initial status — poll Get to retrieve the final result."
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a task",
          "routing": {
            "request": {
              "url": "=/tasks/{{$parameter.id}}",
              "method": "GET"
            }
          },
          "description": "Retrieve the current status and result of a task by ID"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many tasks",
          "routing": {
            "request": {
              "url": "/tasks",
              "method": "GET"
            }
          },
          "description": "List tasks for the authenticated organization"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "search",
      "action": "Perform a web search",
      "routing": {
        "request": {
          "url": "/search",
          "method": "POST"
        }
      },
      "description": "Search the web and retrieve context for AI grounding",
      "resource": "search"
    },
    {
      "name": "Fetch",
      "value": "fetch",
      "action": "Fetch webpage content",
      "routing": {
        "request": {
          "url": "/fetch",
          "method": "POST"
        }
      },
      "description": "Fetch and convert a webpage to markdown",
      "resource": "fetch"
    },
    {
      "name": "Start",
      "value": "start",
      "action": "Start a research task",
      "routing": {
        "request": {
          "url": "/research",
          "method": "POST"
        }
      },
      "description": "Start an asynchronous research task. Returns a task ID and initial status — poll Get to retrieve the final result.",
      "resource": "research"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a research task",
      "routing": {
        "request": {
          "url": "=/research/{{$parameter.id}}",
          "method": "GET"
        }
      },
      "description": "Retrieve the current status and result of a research task by ID",
      "resource": "research"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many research tasks",
      "routing": {
        "request": {
          "url": "/research",
          "method": "GET"
        }
      },
      "description": "List research tasks for the authenticated organization",
      "resource": "research"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a task",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "request": {
          "url": "/tasks",
          "method": "POST"
        }
      },
      "description": "Create an asynchronous task for search, fetch, or research. Returns a task ID and initial status — poll Get to retrieve the final result.",
      "resource": "task"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a task",
      "routing": {
        "request": {
          "url": "=/tasks/{{$parameter.id}}",
          "method": "GET"
        }
      },
      "description": "Retrieve the current status and result of a task by ID",
      "resource": "task"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many tasks",
      "routing": {
        "request": {
          "url": "/tasks",
          "method": "GET"
        }
      },
      "description": "List tasks for the authenticated organization",
      "resource": "task"
    }
  ]

npm_readme:
  # n8n-nodes-linkup-so

  ![npm update](https://img.shields.io/npm/last-update/n8n-nodes-linkup-so)
  ![npm version](https://img.shields.io/npm/v/n8n-nodes-linkup-so)
  ![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-linkup-so)


  This is an n8n community node that integrates the [Linkup API](https://linkup.so) into your n8n workflows. Linkup is a web search engine designed specifically for AI applications, providing reliable and factual grounding data for LLMs.

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

  **Table of Contents:**
  - [Installation](#installation)
  - [Operations](#operations)
  - [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.

  Community nodes are installed from npm. The package name is: `n8n-nodes-linkup-so`

  ## Operations

  This node provides four main resources for interacting with the Linkup API:

  ### Search

  Perform web searches and retrieve context for AI grounding. The search operation returns relevant web content that can be used to ground your AI responses with factual information.

  **Configuration Options:**

  - **Query** (required): Your natural language search question
  - **Depth** (required): Choose search precision level
    - **Fast**: Sub-second search optimized for simple, focused queries (beta)
    - **Standard**: Fast search for straightforward queries
    - **Deep**: Comprehensive search for complex queries requiring detailed analysis
  - **Output Type** (required): Select the response format
    - **Sourced Answer**: Returns a concise answer with source citations
    - **Search Results**: Returns a list of relevant documents
    - **Structured**: Returns data according to a custom JSON schema you define

  **Optional Filters:**
  - Date range filtering (from/to dates)
  - Domain inclusion/exclusion lists
  - Include images in results
  - Inline citations (for sourced answers)
  - Include sources (for structured output)

  ### Fetch

  Fetch and convert any webpage to markdown format. This operation retrieves webpage content and converts it to clean, structured markdown.

  **Configuration Options:**

  - **URL** (required): The webpage URL you want to fetch
  - **Render JavaScript** (optional): Enable JavaScript rendering for dynamic content
  - **Extract Images** (optional): Extract and include image references from the page
  - **Include Raw HTML** (optional): Include the original HTML alongside the markdown

  ### Research

  Run an **asynchronous, deep research task**. Unlike Search, the Research API kicks off a long-running job that performs comprehensive web research and is retrieved separately once it completes. Three operations are exposed so you (or an AI agent) can manage the task lifecycle:

  #### Start

  Kicks off a new research task. Returns a task `id` and an initial `status` (`pending`).

  **Configuration Options:**

  - **Query** (required): Your natural language research question
  - **Output Type** (required):
    - **Sourced Answer**: Returns a concise answer with source citations
    - **Structured**: Returns data according to a custom JSON schema you define
  - **Mode** (optional, default `Auto`):
    - **Answer**: Direct answer for simple questions
    - **Auto**: Agent auto-classifies per request
    - **Investigate**: Investigative mode for deeper analysis
    - **Research**: Full research mode for comprehensive results
  - **Reasoning Depth** (optional, default `L`):
    - **S**: Fastest, least thorough
    - **M**: Balanced speed and depth
    - **L**: Default depth, thorough
    - **XL**: Most thorough, highest latency
  - **Structured Output Schema** (required when Output Type is Structured): JSON schema defining the response shape

  **Optional Filters:**
  - Date range filtering (from/to dates)
  - Domain inclusion (up to 100) / exclusion lists
  - Include images in results

  #### Get

  Retrieves a research task by its `id`. Use this to poll until `status` is `completed` (or `failed`) and read the final `output`.

  **Configuration Options:**

  - **Task ID** (required): The identifier returned by the Start operation

  #### Get Many

  Lists research tasks for your organization, with pagination and sorting.

  **Configuration Options:**

  - **Limit**: Max number of results per page (default 50, max 100)
  - **Page**: Page number (1-indexed)
  - **Sort By**: `createdAt` or `updatedAt`
  - **Sort Direction**: `asc` or `desc`

  > **Polling pattern.** Because Research is asynchronous, the typical workflow is **Start → Wait → Get → IF status == completed**. Loop the Wait/Get until the task completes, then continue with the `output`. AI agents can do the same by calling the `Get` tool again later instead of blocking.

  ### Task

  Create and manage **asynchronous batch tasks** via the unified `/v1/tasks` endpoint. A task wraps any of the three operation types (search, fetch, research) in an async job that you can poll for results. This is useful when you want to fire-and-forget, or when working with long-running operations.

  #### Create

  Creates an asynchronous task. You select the task type (search, fetch, or research) and configure the same parameters as the corresponding resource. Returns a task `id` and initial `status` (`pending`).

  **Configuration Options:**

  - **Task Type** (required): Choose `Search`, `Fetch`, or `Research`
  - All parameters from the selected type are available (query, depth, output type, URL, mode, reasoning depth, etc.)
  - The same optional filters apply depending on the task type

  #### Get

  Retrieves a task by its `id`. Use this to poll until `status` is `completed` (or `failed`) and read the final `output`.

  **Configuration Options:**

  - **Task ID** (required): The identifier returned by the Create operation

  #### Get Many

  Lists tasks for your organization, with pagination, sorting, and filtering.

  **Configuration Options:**

  - **Limit**: Max number of results per page (default 50, max 100)
  - **Page**: Page number (1-indexed)
  - **Sort By**: `createdAt` or `updatedAt`
  - **Sort Direction**: `asc` or `desc`
  - **Status**: Filter by `pending`, `processing`, `completed`, or `failed`
  - **Type**: Filter by `search`, `fetch`, or `research`

  > **Polling pattern.** The typical workflow is **Create → Wait → Get → IF status == completed**. Loop the Wait/Get until the task completes, then continue with the `output`.

  ## Credentials

  This node uses API key authentication to connect to the Linkup API.

  ### Getting Your API Key

  1. Create a free account at [https://app.linkup.so](https://app.linkup.so)
  2. Navigate to your account settings or API section
  3. Generate or copy your API key
  4. In n8n, create a new **Linkup API** credential
  5. Paste your API key into the credential field

  **Note**: When you test your credentials in n8n, the node verifies your API key by checking your account balance. This validation does not consume any credits.

  ### API Key Security

  - Your API key is stored securely by n8n
  - The key is transmitted using Bearer token authentication
  - Never share your API key or commit it to version control

  For more information on obtaining and managing your API key, refer to the [Linkup quickstart guide](https://docs.linkup.so/pages/documentation/get-started/quickstart).

  ## Compatibility

  - **Minimum n8n version**: 1.60.0 or later
  - **n8n API version**: 1 (declarative routing)

  ## Usage Tips

  ### Choosing a Depth

  - Use **fast** for simple, focused queries when latency matters
  - Use **standard** for most everyday queries
  - Reserve **deep** searches for complex questions requiring comprehensive analysis

  ### Search Output Types

  - **Sourced Answer**: Best for getting quick, factual answers with citations
  - **Search Results**: Best for gathering multiple sources for further processing
  - **Structured**: Best when you need data in a specific format for downstream integrations

  ### Search vs. Research

  - Use **Search** when you need a synchronous answer in seconds (one node, one response).
  - Use **Research** for in-depth investigations where it's acceptable to wait minutes for a more thorough result. Research returns a task you poll asynchronously.

  ### Combining Operations

  You can combine Search, Fetch, Research, and Task operations in your workflows:
  1. Use **Search** to find relevant URLs
  2. Use **Fetch** to retrieve full content from those URLs
  3. Use **Research** for deep, multi-source investigations on a topic
  4. Use **Task** to run any of the above asynchronously and poll for results
  5. Process the markdown / structured content with other n8n nodes

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Linkup official website](https://www.linkup.so/)
  * [Linkup API documentation](https://docs.linkup.so)
  * [Linkup quickstart guide](https://docs.linkup.so/pages/documentation/get-started/quickstart)
  * [Linkup API reference](https://docs.linkup.so/pages/documentation/api-reference)

  ## License

  [MIT](LICENSE)

  ## Support

  For issues with this n8n node, please [open an issue](https://github.com/romainjeff/n8n-nodes-linkup/issues) on GitHub.

  For Linkup API support, contact: support@linkup.so

ai_documentation_summary:
  {"purpose":"Integrates the Linkup API into n8n workflows to perform web searches for AI grounding and fetch webpage content converted to markdown.","capabilities":["Perform web searches with configurable depth (Standard or Deep)","Retrieve sourced answers with citations","Return lists of relevant search results","Output data in custom JSON schema structures","Filter search results by date range and domain","Fetch webpage content and convert to markdown","Render JavaScript for dynamic content","Extract images from webpages","Include raw HTML alongside markdown output"],"authentication":"API key required","commonUseCases":["Grounding LLM responses with factual web data","Automated research and information gathering","Converting web articles to structured markdown for processing","Building RAG (Retrieval-Augmented Generation) pipelines"],"limitations":["Requires an active Linkup API account and credit balance","Deep searches consume 10 credits per query compared to 1 credit for standard searches","Minimum n8n version 1.60.0 required"],"relatedNodes":[]}


node_type: n8n-nodes-snaprender.snapRender
package_name: n8n-nodes-snaprender
display_name: SnapRender
description: Capture website screenshots as PNG, JPEG, WebP, or PDF
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: k-soft
author_github_url: https://github.com/User0856/
npm_package_name: n8n-nodes-snaprender
npm_version: 0.2.2
community_fetched_at: 2026-07-14T14:40:34.080Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "screenshot",
      "options": [
        {
          "name": "Batch Screenshots",
          "value": "batch",
          "action": "Create a batch screenshot job",
          "description": "Create a batch screenshot job for multiple URLs (1-50)"
        },
        {
          "name": "Check Cache",
          "value": "checkCache",
          "action": "Check if a screenshot is cached",
          "description": "Check if a screenshot is cached (free, no quota cost)"
        },
        {
          "name": "Create Webhook",
          "value": "createWebhook",
          "action": "Create a webhook",
          "description": "Register a webhook for event notifications"
        },
        {
          "name": "Delete Webhook",
          "value": "deleteWebhook",
          "action": "Delete a webhook",
          "description": "Delete a webhook by ID"
        },
        {
          "name": "Extract Content",
          "value": "extract",
          "action": "Extract content from a web page",
          "description": "Extract content from a web page (markdown, text, HTML, article, links, metadata)"
        },
        {
          "name": "Get Batch Status",
          "value": "getBatchStatus",
          "action": "Get batch job status",
          "description": "Get the status of a batch screenshot job"
        },
        {
          "name": "Get Usage",
          "value": "getUsage",
          "action": "Get usage statistics",
          "description": "Get current month screenshot usage statistics"
        },
        {
          "name": "List Webhooks",
          "value": "listWebhooks",
          "action": "List webhooks",
          "description": "List all webhooks for the account"
        },
        {
          "name": "Sign URL",
          "value": "signUrl",
          "action": "Generate a signed screenshot URL",
          "description": "Generate a signed screenshot URL (free, no quota cost)"
        },
        {
          "name": "Take Screenshot",
          "value": "screenshot",
          "action": "Capture a screenshot of a website",
          "description": "Capture a screenshot of a website"
        },
        {
          "name": "Test Webhook",
          "value": "testWebhook",
          "action": "Test a webhook",
          "description": "Send a test delivery to a webhook"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Batch Screenshots",
      "value": "batch",
      "action": "Create a batch screenshot job",
      "description": "Create a batch screenshot job for multiple URLs (1-50)"
    },
    {
      "name": "Check Cache",
      "value": "checkCache",
      "action": "Check if a screenshot is cached",
      "description": "Check if a screenshot is cached (free, no quota cost)"
    },
    {
      "name": "Create Webhook",
      "value": "createWebhook",
      "action": "Create a webhook",
      "description": "Register a webhook for event notifications"
    },
    {
      "name": "Delete Webhook",
      "value": "deleteWebhook",
      "action": "Delete a webhook",
      "description": "Delete a webhook by ID"
    },
    {
      "name": "Extract Content",
      "value": "extract",
      "action": "Extract content from a web page",
      "description": "Extract content from a web page (markdown, text, HTML, article, links, metadata)"
    },
    {
      "name": "Get Batch Status",
      "value": "getBatchStatus",
      "action": "Get batch job status",
      "description": "Get the status of a batch screenshot job"
    },
    {
      "name": "Get Usage",
      "value": "getUsage",
      "action": "Get usage statistics",
      "description": "Get current month screenshot usage statistics"
    },
    {
      "name": "List Webhooks",
      "value": "listWebhooks",
      "action": "List webhooks",
      "description": "List all webhooks for the account"
    },
    {
      "name": "Sign URL",
      "value": "signUrl",
      "action": "Generate a signed screenshot URL",
      "description": "Generate a signed screenshot URL (free, no quota cost)"
    },
    {
      "name": "Take Screenshot",
      "value": "screenshot",
      "action": "Capture a screenshot of a website",
      "description": "Capture a screenshot of a website"
    },
    {
      "name": "Test Webhook",
      "value": "testWebhook",
      "action": "Test a webhook",
      "description": "Send a test delivery to a webhook"
    }
  ]

npm_readme:
  # n8n-nodes-snaprender

  [n8n](https://n8n.io) community node for [SnapRender Screenshot API](https://snap-render.com). Capture website screenshots as PNG, JPEG, WebP, or PDF directly in your n8n workflows.

  ## Install

  In your n8n instance:

  1. Go to **Settings** > **Community Nodes**
  2. Enter `n8n-nodes-snaprender`
  3. Click **Install**

  ## Credentials

  1. Sign up at [snap-render.com](https://snap-render.com/auth/signup) — free, no credit card
  2. Create an API key in your dashboard
  3. In n8n, go to **Credentials** > **New** > **SnapRender API**
  4. Paste your API key (starts with `sk_live_`)

  ## Operations

  ### Take Screenshot

  Capture any website as PNG, JPEG, WebP, or PDF.

  - **URL** — Website to capture
  - **Format** — PNG, JPEG, WebP, or PDF
  - **Full Page** — Capture entire scrollable page
  - **Device** — iPhone 14, iPhone 15 Pro, Pixel 7, iPad Pro, MacBook Pro
  - **Dark Mode** — Enable dark mode CSS emulation
  - **Block Ads** — Remove advertisements
  - **Block Cookie Banners** — Remove cookie consent popups
  - **Output** — Binary (image file) or JSON (base64 data URI)
  - **Additional Options** — Width, height, quality, delay, hide selectors, click selector

  ### Check Cache

  Check if a screenshot is cached without capturing. Free, doesn't count against quota.

  ### Get Usage

  Get current month's screenshot usage statistics.

  ## Example Workflow

  1. **Trigger** (e.g., webhook, schedule, form)
  2. **SnapRender** node — Take Screenshot with URL from trigger
  3. **Send Email** / **Save to S3** / **Slack** — Use the binary output

  ## Free Tier

  500 screenshots/month, no credit card required. Paid plans from $9/month.

  ## Links

  - [SnapRender Website](https://snap-render.com)
  - [API Documentation](https://snap-render.com/docs)
  - [GitHub](https://github.com/User0856/n8n-nodes-snaprender)

  ## License

  MIT

ai_documentation_summary:
  {"purpose":"Captures website screenshots in various formats (PNG, JPEG, WebP, PDF) directly within n8n workflows using the SnapRender Screenshot API.","capabilities":["Capture website screenshots as PNG, JPEG, WebP, or PDF","Capture full scrollable pages","Emulate specific mobile and desktop devices (iPhone, Pixel, iPad, MacBook)","Enable dark mode CSS emulation","Block advertisements and cookie consent popups","Output as binary image files or JSON base64 data URIs","Customize screenshot dimensions, quality, and delay","Hide specific CSS selectors","Simulate clicking selectors before capture","Check cache status without consuming quota"],"authentication":"API key required","commonUseCases":["Automated visual regression testing","Generating social media preview images","Documenting website changes over time","Creating PDF reports from web content","Device-specific rendering checks"],"limitations":["Free tier limited to 500 screenshots per month","Requires external API key from SnapRender dashboard","Dependent on third-party service availability and rate limits"],"relatedNodes":["n8n-nodes-netsuite","n8n-nodes-aws-s3","n8n-nodes-email"]}


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

updated_at: 2026-07-14 14:40:34
author_name: banksynchq
author_github_url: https://github.com/banksynchq/
npm_package_name: n8n-nodes-banksync
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:34.081Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "bank",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Balance",
          "value": "balance"
        },
        {
          "name": "Bank",
          "value": "bank"
        },
        {
          "name": "Enrichment",
          "value": "enrichment"
        },
        {
          "name": "Feed",
          "value": "feed"
        },
        {
          "name": "Holding",
          "value": "holding"
        },
        {
          "name": "Integration",
          "value": "integration"
        },
        {
          "name": "Job",
          "value": "job"
        },
        {
          "name": "Loan",
          "value": "loan"
        },
        {
          "name": "Trade",
          "value": "trade"
        },
        {
          "name": "Transaction",
          "value": "transaction"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a bank",
          "description": "Delete a bank connection"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a bank",
          "description": "Retrieve a bank connection"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List banks",
          "description": "List all bank connections"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bank"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an account",
          "description": "Retrieve an account"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List accounts",
          "description": "List all accounts for a bank"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List transactions",
          "description": "List transactions for an account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transaction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get balance",
          "description": "Get live balance for an account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "balance"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List trades",
          "description": "List trades for an investment account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trade"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List holdings",
          "description": "List holdings for an investment account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "holding"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get loan details",
          "description": "Get loan/liability details for an account"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "loan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a feed",
          "description": "Create a new feed"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a feed",
          "description": "Delete a feed"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a feed",
          "description": "Retrieve a feed"
        },
        {
          "name": "Learn",
          "value": "learn",
          "action": "Trigger learn",
          "description": "Trigger Memory enrichment learn phase for a feed"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List feeds",
          "description": "List all feeds"
        },
        {
          "name": "Sync",
          "value": "sync",
          "action": "Trigger sync",
          "description": "Trigger a sync for a feed"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a feed",
          "description": "Update a feed"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "feed"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Cancel",
          "value": "cancel",
          "action": "Cancel a job",
          "description": "Cancel a running job"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a job",
          "description": "Retrieve a job"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List jobs",
          "description": "List jobs for a feed"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an enrichment",
          "description": "Create a new enrichment"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an enrichment",
          "description": "Delete an enrichment"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get an enrichment",
          "description": "Retrieve an enrichment"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List enrichments",
          "description": "List all enrichments"
        },
        {
          "name": "Preview",
          "value": "preview",
          "action": "Preview enrichment",
          "description": "Preview enrichment results on sample data"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an enrichment",
          "description": "Update an enrichment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "enrichment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an integration",
          "description": "Delete an integration"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List integrations",
          "description": "List all integrations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "integration"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a bank",
      "description": "Delete a bank connection",
      "resource": "bank"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a bank",
      "description": "Retrieve a bank connection",
      "resource": "bank"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List banks",
      "description": "List all bank connections",
      "resource": "bank"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an account",
      "description": "Retrieve an account",
      "resource": "account"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List accounts",
      "description": "List all accounts for a bank",
      "resource": "account"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List transactions",
      "description": "List transactions for an account",
      "resource": "transaction"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get balance",
      "description": "Get live balance for an account",
      "resource": "balance"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List trades",
      "description": "List trades for an investment account",
      "resource": "trade"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List holdings",
      "description": "List holdings for an investment account",
      "resource": "holding"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get loan details",
      "description": "Get loan/liability details for an account",
      "resource": "loan"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a feed",
      "description": "Create a new feed",
      "resource": "feed"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a feed",
      "description": "Delete a feed",
      "resource": "feed"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a feed",
      "description": "Retrieve a feed",
      "resource": "feed"
    },
    {
      "name": "Learn",
      "value": "learn",
      "action": "Trigger learn",
      "description": "Trigger Memory enrichment learn phase for a feed",
      "resource": "feed"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List feeds",
      "description": "List all feeds",
      "resource": "feed"
    },
    {
      "name": "Sync",
      "value": "sync",
      "action": "Trigger sync",
      "description": "Trigger a sync for a feed",
      "resource": "feed"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a feed",
      "description": "Update a feed",
      "resource": "feed"
    },
    {
      "name": "Cancel",
      "value": "cancel",
      "action": "Cancel a job",
      "description": "Cancel a running job",
      "resource": "job"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a job",
      "description": "Retrieve a job",
      "resource": "job"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List jobs",
      "description": "List jobs for a feed",
      "resource": "job"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an enrichment",
      "description": "Create a new enrichment",
      "resource": "enrichment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an enrichment",
      "description": "Delete an enrichment",
      "resource": "enrichment"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an enrichment",
      "description": "Retrieve an enrichment",
      "resource": "enrichment"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List enrichments",
      "description": "List all enrichments",
      "resource": "enrichment"
    },
    {
      "name": "Preview",
      "value": "preview",
      "action": "Preview enrichment",
      "description": "Preview enrichment results on sample data",
      "resource": "enrichment"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an enrichment",
      "description": "Update an enrichment",
      "resource": "enrichment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an integration",
      "description": "Delete an integration",
      "resource": "integration"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List integrations",
      "description": "List all integrations",
      "resource": "integration"
    }
  ]

npm_readme:
  # n8n-nodes-banksync

  n8n community node for the [BankSync](https://banksync.io) financial data API.

  Connect your bank accounts, transactions, balances, and more to 500+ n8n integrations.

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

  ## Installation

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

  **Package name:** `n8n-nodes-banksync`

  ## Nodes

  ### BankSync

  Action node with CRUD operations across all BankSync resources:

  | Resource    | Operations                                     |
  | ----------- | ---------------------------------------------- |
  | Bank        | List, Get, Delete                              |
  | Account     | List, Get                                      |
  | Transaction | List (with pagination & date filtering)        |
  | Balance     | Get (live balance)                             |
  | Trade       | List                                           |
  | Holding     | List                                           |
  | Loan        | Get                                            |
  | Feed        | List, Get, Create, Update, Delete, Sync, Learn |
  | Job         | List, Get, Cancel                              |
  | Enrichment  | List, Get, Create, Update, Delete, Preview     |
  | Integration | List, Delete                                   |

  ### BankSync Trigger

  Polling trigger node with two modes:

  - **New Transactions** — Polls for new transactions using cursor-based incremental sync
  - **Job Completed** — Polls for newly completed sync jobs

  ## Credentials

  1. Log in to [BankSync](https://app.banksync.io)
  2. Go to **Settings > API Keys**
  3. Create a new API key with the scopes you need
  4. In n8n, create a new **BankSync API** credential and paste your key

  API keys start with `bsk_` and are workspace-scoped.

  ### Scopes

  | Scope               | Access                                                           |
  | ------------------- | ---------------------------------------------------------------- |
  | `banks:read`        | Banks, accounts, transactions, balances, trades, holdings, loans |
  | `banks:write`       | Delete banks                                                     |
  | `feeds:read`        | List/get feeds                                                   |
  | `feeds:write`       | Create/update/delete feeds                                       |
  | `jobs:read`         | List/get jobs                                                    |
  | `jobs:write`        | Trigger syncs, cancel jobs, trigger learn                        |
  | `enrichments:read`  | List/get enrichments, preview                                    |
  | `enrichments:write` | Create/update/delete enrichments                                 |
  | `workspaces:read`   | List integrations                                                |
  | `workspaces:write`  | Delete integrations                                              |

  ## Example Workflows

  ### Transaction alerts

  BankSync Trigger (New Transactions) -> IF (amount > 200) -> Slack

  ### Sync to database

  Schedule -> BankSync (Transaction List, Return All) -> Postgres

  ### Balance monitoring

  Schedule (hourly) -> BankSync (Balance Get) -> IF (current < 5000) -> Email

  ### Sync health monitoring

  Schedule (30min) -> BankSync (Job List, status=failed) -> IF (has items) -> Slack

  ## Development

  ```bash
  pnpm install
  pnpm run build
  pnpm test
  ```

  ### Local n8n testing (Docker)

  Requires Docker. Builds the node and starts n8n at `http://localhost:5678` with the node loaded:

  ```bash
  pnpm run dev          # Build + start n8n
  pnpm run dev:restart  # Rebuild + restart after code changes
  pnpm run dev:stop     # Stop n8n
  ```

  Then in the n8n UI: add a BankSync credential with your API key and test the node.

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"Connects n8n workflows to the BankSync financial data API to retrieve and manage bank accounts, transactions, balances, and investment data.","capabilities":["List, get, and delete bank accounts","Retrieve transaction history with pagination and date filtering","Get live account balances","Access trade, holding, and loan data","Manage feed subscriptions (create, update, delete, sync, learn)","Trigger and monitor sync jobs","Create and manage data enrichments","Poll for new transactions using cursor-based incremental sync","Poll for completed sync jobs"],"authentication":"API key required","commonUseCases":["Real-time transaction monitoring and alerts","Automated balance tracking and low-balance notifications","Syncing financial data to external databases","Monitoring sync job health and failures"],"limitations":["Requires an active BankSync account and API key with appropriate scopes","Some operations like deleting banks or integrations require specific write scopes"],"relatedNodes":["n8n-nodes-slack","n8n-nodes-postgres","n8n-nodes-email"]}


node_type: n8n-nodes-banksync.bankSyncTrigger
package_name: n8n-nodes-banksync
display_name: BankSync Trigger
description: Triggers when new transactions arrive or jobs complete in BankSync
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: banksynchq
author_github_url: https://github.com/banksynchq/
npm_package_name: n8n-nodes-banksync
npm_version: 0.1.5
community_fetched_at: 2026-07-14T14:40:34.083Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-banksync

  n8n community node for the [BankSync](https://banksync.io) financial data API.

  Connect your bank accounts, transactions, balances, and more to 500+ n8n integrations.

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

  ## Installation

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

  **Package name:** `n8n-nodes-banksync`

  ## Nodes

  ### BankSync

  Action node with CRUD operations across all BankSync resources:

  | Resource    | Operations                                     |
  | ----------- | ---------------------------------------------- |
  | Bank        | List, Get, Delete                              |
  | Account     | List, Get                                      |
  | Transaction | List (with pagination & date filtering)        |
  | Balance     | Get (live balance)                             |
  | Trade       | List                                           |
  | Holding     | List                                           |
  | Loan        | Get                                            |
  | Feed        | List, Get, Create, Update, Delete, Sync, Learn |
  | Job         | List, Get, Cancel                              |
  | Enrichment  | List, Get, Create, Update, Delete, Preview     |
  | Integration | List, Delete                                   |

  ### BankSync Trigger

  Polling trigger node with two modes:

  - **New Transactions** — Polls for new transactions using cursor-based incremental sync
  - **Job Completed** — Polls for newly completed sync jobs

  ## Credentials

  1. Log in to [BankSync](https://app.banksync.io)
  2. Go to **Settings > API Keys**
  3. Create a new API key with the scopes you need
  4. In n8n, create a new **BankSync API** credential and paste your key

  API keys start with `bsk_` and are workspace-scoped.

  ### Scopes

  | Scope               | Access                                                           |
  | ------------------- | ---------------------------------------------------------------- |
  | `banks:read`        | Banks, accounts, transactions, balances, trades, holdings, loans |
  | `banks:write`       | Delete banks                                                     |
  | `feeds:read`        | List/get feeds                                                   |
  | `feeds:write`       | Create/update/delete feeds                                       |
  | `jobs:read`         | List/get jobs                                                    |
  | `jobs:write`        | Trigger syncs, cancel jobs, trigger learn                        |
  | `enrichments:read`  | List/get enrichments, preview                                    |
  | `enrichments:write` | Create/update/delete enrichments                                 |
  | `workspaces:read`   | List integrations                                                |
  | `workspaces:write`  | Delete integrations                                              |

  ## Example Workflows

  ### Transaction alerts

  BankSync Trigger (New Transactions) -> IF (amount > 200) -> Slack

  ### Sync to database

  Schedule -> BankSync (Transaction List, Return All) -> Postgres

  ### Balance monitoring

  Schedule (hourly) -> BankSync (Balance Get) -> IF (current < 5000) -> Email

  ### Sync health monitoring

  Schedule (30min) -> BankSync (Job List, status=failed) -> IF (has items) -> Slack

  ## Development

  ```bash
  pnpm install
  pnpm run build
  pnpm test
  ```

  ### Local n8n testing (Docker)

  Requires Docker. Builds the node and starts n8n at `http://localhost:5678` with the node loaded:

  ```bash
  pnpm run dev          # Build + start n8n
  pnpm run dev:restart  # Rebuild + restart after code changes
  pnpm run dev:stop     # Stop n8n
  ```

  Then in the n8n UI: add a BankSync credential with your API key and test the node.

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"The BankSync Trigger node monitors BankSync for new financial transactions or completed sync jobs, allowing workflows to react automatically to banking data changes.","capabilities":["Poll for new transactions using cursor-based incremental sync","Poll for newly completed sync jobs","Trigger workflows based on transaction arrival","Trigger workflows based on job status changes"],"authentication":"API key required","commonUseCases":["Real-time transaction alerts (e.g., spending limits, large purchases)","Automated balance monitoring and notifications","Triggering downstream actions when sync jobs complete","Health monitoring of sync job status"],"limitations":["Relies on polling rather than real-time webhooks","Requires a separate BankSync account and API key setup","Limited to BankSync-supported banks and data sources"],"relatedNodes":["n8n-nodes-banksync.BankSync","n8n-nodes-core.Schedule","n8n-nodes-core.IF","n8n-nodes-slack.Slack"]}


node_type: n8n-nodes-market-sentiment.marketSentiment
package_name: n8n-nodes-market-sentiment
display_name: Market Sentiment
description: Get stock snapshots, trending tickers, or enrich incoming items with Adanos market sentiment data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: alexanderschneider
author_github_url: https://github.com/adanos-software/
npm_package_name: n8n-nodes-market-sentiment
npm_version: 0.1.4
community_fetched_at: 2026-07-14T14:40:34.083Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "getStockSnapshot",
      "options": [
        {
          "name": "Get Stock Snapshot",
          "value": "getStockSnapshot",
          "action": "Get stock snapshot",
          "description": "Fetch a combined or per-source market sentiment snapshot for one or more tickers"
        },
        {
          "name": "Get Trending Stocks",
          "value": "getTrendingStocks",
          "action": "Get trending stocks",
          "description": "Fetch the current trending stocks for one source"
        },
        {
          "name": "Enrich Incoming Items",
          "value": "enrichIncomingItems",
          "action": "Enrich incoming items",
          "description": "Attach combined market sentiment data to each incoming item using a ticker field"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Stock Snapshot",
      "value": "getStockSnapshot",
      "action": "Get stock snapshot",
      "description": "Fetch a combined or per-source market sentiment snapshot for one or more tickers"
    },
    {
      "name": "Get Trending Stocks",
      "value": "getTrendingStocks",
      "action": "Get trending stocks",
      "description": "Fetch the current trending stocks for one source"
    },
    {
      "name": "Enrich Incoming Items",
      "value": "enrichIncomingItems",
      "action": "Enrich incoming items",
      "description": "Attach combined market sentiment data to each incoming item using a ticker field"
    }
  ]

npm_readme:
  # n8n Market Sentiment Node

  `n8n-nodes-market-sentiment` brings structured stock sentiment data from Adanos into n8n workflows.

  It is built for finance automations that need usable outputs instead of raw posts:

  - enrich a watchlist from Google Sheets, Airtable, or Notion
  - send Slack or Discord alerts when a ticker gets unusually hot
  - build daily market recap and newsletter workflows
  - compare names like `NVDA`, `AMD`, `TSLA`, or `PLTR` before the open

  ## What it looks like in n8n

  Real editor run with the `Enrich Incoming Items` operation on a live watchlist:

  ![n8n Market Sentiment runtime validation](./docs/runtime-validation.png)

  ## What the node does

  The package exposes a single `Market Sentiment` node with three operations:

  | Operation | Best for | Output |
  | --- | --- | --- |
  | `Get Stock Snapshot` | multi-ticker scans | combined or per-source sentiment snapshots |
  | `Get Trending Stocks` | source-specific movers | one item per trending ticker |
  | `Enrich Incoming Items` | watchlists and downstream routing | original items plus nested sentiment data |

  Supported sources:

  - `reddit`
  - `x`
  - `news`
  - `polymarket`

  ## Install in n8n

  1. Open `Settings -> Community Nodes`.
  2. Install `n8n-nodes-market-sentiment`.
  3. Create an `Adanos API` credential.
  4. Add the `Market Sentiment` node to your workflow.

  Get an API key:

  - [https://adanos.org/reddit-stock-sentiment#api-form](https://adanos.org/reddit-stock-sentiment#api-form)

  ## Credential

  The node uses a single credential:

  - `API Key`

  The node always talks to the official Adanos API at `https://api.adanos.org`.

  ## Operation guide

  ### 1. Get Stock Snapshot

  Use this for pre-market scans, manual comparisons, and one-shot ticker lookups.

  Inputs:

  - `tickers`: comma-separated list like `AAPL,NVDA,TSLA`
  - `sources`: any mix of `reddit`, `x`, `news`, `polymarket`
  - `days`: lookback window, `1` to `90`
  - `outputMode`
    - `combined`: one row per ticker with averaged metrics and source alignment
    - `perSource`: one row per ticker/source pair
    - `raw`: raw source payloads grouped into one result item

  ### 2. Get Trending Stocks

  Use this for “what is moving right now?” workflows.

  Inputs:

  - `source`: `reddit`, `x`, `news`, or `polymarket`
  - `days`: lookback window, `1` to `90`
  - `limit`: `1` to `100`
  - `offset`
  - `assetType`: `all`, `stock`, or `etf`

  ### 3. Enrich Incoming Items

  Use this when you already have items coming from Sheets, Airtable, Notion, webhooks, or a Code node.

  Inputs:

  - `tickerField`: input field that holds the stock ticker
  - `targetField`: field that will receive the combined snapshot
  - `sources`
  - `days`
  - `includeSources`: include nested per-source breakdowns or not

  Typical flow:

  `Google Sheets -> Market Sentiment -> IF / Slack / AI summarizer`

  ## Output shape

  Combined snapshot example:

  ```json
  {
    "ticker": "AAPL",
    "companyName": "Apple Inc",
    "averageBuzz": 36.73,
    "averageBullishPct": 63.5,
    "averageBearishPct": 15,
    "averageSentimentScore": 0.16,
    "coverage": 3,
    "sourceAlignment": "divergent",
    "sources": {
      "news": {
        "sourceLabel": "Finance News",
        "buzzScore": 43.9,
        "bullishPct": 80,
        "activity": 25,
        "activityLabel": "mentions",
        "trend": "stable"
      },
      "x": {
        "sourceLabel": "X.com",
        "buzzScore": 66.3,
        "bullishPct": 47,
        "activity": 287,
        "activityLabel": "mentions",
        "trend": "falling"
      }
    }
  }
  ```

  Enriched item example:

  ```json
  {
    "symbol": "NVDA",
    "marketSentiment": {
      "averageBuzz": 38.8,
      "averageBullishPct": 59.5,
      "coverage": 3,
      "sourceAlignment": "mixed"
    }
  }
  ```

  ## Import-ready example workflows

  These are the fastest way to smoke-test the node inside a real n8n instance:

  - [Manual snapshot validation](./examples/manual-snapshot-validation.workflow.json)
  - [Manual enrichment validation](./examples/manual-enrichment-validation.workflow.json)

  More workflow templates:

  - [Daily market recap](./examples/daily-market-recap.workflow.json)
  - [Watchlist enrichment](./examples/watchlist-enrichment.workflow.json)
  - [Trending alert](./examples/trending-alert.workflow.json)

  After import, select your `Adanos API` credential on the `Market Sentiment` node and run the workflow.

  ## Local runtime validation

  This package was validated inside a real Docker n8n instance on `2026-03-29`.

  Validated paths:

  - node installs as a community node
  - credential loads in the running n8n server
  - `Manual Snapshot Validation` runs in the editor
  - `Manual Enrichment Validation` returns `4` enriched watchlist items in the editor output

  Practical note:

  - editor/manual execution in the running n8n server works
  - standalone `n8n execute --id ...` can hit a credential/license-state path in some local environments, so use the editor flow for smoke tests

  ## Local development

  ```bash
  cd integrations/n8n/market-sentiment-node
  npm install
  npm run test
  npm run typecheck
  npm run build
  ```

  Release and submission notes live in [docs/RELEASE_CHECKLIST.md](./docs/RELEASE_CHECKLIST.md).

  ## Maintainer release flow

  This repo publishes from Git tags through [`.github/workflows/publish.yml`](./.github/workflows/publish.yml).

  Release steps:

  1. bump `package.json` to the target version
  2. push `main`
  3. create and push the matching tag, for example `v0.1.0`
  4. let GitHub Actions run `npm publish --provenance --access public`

  The publish workflow fails if the pushed tag does not match `package.json` exactly.

ai_documentation_summary:
  {"purpose":"Retrieves structured stock sentiment data from Adanos to enrich workflows with market insights from sources like Reddit, X, news, and Polymarket.","capabilities":["Get combined or per-source sentiment snapshots for multiple tickers","Retrieve trending stocks based on specific sources and time windows","Enrich incoming workflow items with nested sentiment data","Supports multiple data sources: reddit, x, news, polymarket","Configurable lookback windows (1 to 90 days)","Outputs metrics including buzz scores, bullish/bearish percentages, and sentiment scores"],"authentication":"API key required","commonUseCases":["Pre-market scanner for comparing multiple tickers","Alerting systems for unusual market sentiment spikes","Daily market recap and newsletter generation","Enriching watchlists from Google Sheets, Airtable, or Notion","Routing workflow logic based on sentiment thresholds"],"limitations":["Requires manual installation of the community node package","Lookback window is limited to a maximum of 90 days","Trending stocks limit is capped at 100 results per request","Local standalone execution may encounter credential/license-state issues in some environments"],"relatedNodes":["Google Sheets","Airtable","Notion","Slack","Discord"]}


node_type: n8n-nodes-paytm.paytm
package_name: n8n-nodes-paytm
display_name: Paytm for Business
description: Manage payments, subscriptions, refunds, and settlements using Paytm APIs
category: Community
development_style: declarative
version: 31
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: paytmsupport
author_github_url: https://github.com/paytm/
npm_package_name: n8n-nodes-paytm
npm_version: 1.6.3
community_fetched_at: 2026-07-14T14:40:34.084Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "orderActions",
      "options": [
        {
          "name": "Order",
          "value": "orderActions"
        },
        {
          "name": "Payment Link",
          "value": "payments"
        },
        {
          "name": "Refund",
          "value": "refund"
        },
        {
          "name": "Settlement",
          "value": "settlement"
        },
        {
          "name": "Subscription",
          "value": "subscription"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchOrderList",
      "options": [
        {
          "name": "Fetch All",
          "value": "fetchOrderList",
          "action": "Fetch all orders",
          "description": "Fetch all orders"
        },
        {
          "name": "Fetch",
          "value": "orderDetail",
          "action": "Fetch order details",
          "description": "Fetch order details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "orderActions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchTransactionsForLink",
      "options": [
        {
          "name": "Create",
          "value": "createPaymentLink",
          "action": "Create a payment link",
          "description": "Create and share a payment link"
        },
        {
          "name": "Fetch",
          "value": "fetchTransactionsForLink",
          "action": "Fetch a payment link",
          "description": "Fetch payment link details"
        },
        {
          "name": "Fetch All",
          "value": "fetchPaymentLinks",
          "action": "Fetch all payment links",
          "description": "Fetch all payment links"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchRefundList",
      "options": [
        {
          "name": "Create",
          "value": "initiateRefund",
          "action": "Create a refund",
          "description": "Initiate a full or partial refund"
        },
        {
          "name": "Fetch",
          "value": "checkRefundStatus",
          "action": "Fetch a refund",
          "description": "Fetch refund status"
        },
        {
          "name": "Fetch All",
          "value": "fetchRefundList",
          "action": "Fetch all refunds",
          "description": "Fetch all refund requests"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "refund"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "fetchSubscriptionStatus",
      "options": [
        {
          "name": "Cancel",
          "value": "cancelSubscription",
          "action": "Cancel a subscription",
          "description": "Cancel an active subscription"
        },
        {
          "name": "Fetch",
          "value": "fetchSubscriptionStatus",
          "action": "Fetch a subscription",
          "description": "Fetch details and status of subscription"
        },
        {
          "name": "Pause or Resume",
          "value": "pauseResumeSubscription",
          "action": "Pause or resume a subscription",
          "description": "Pause or resume a subscription"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "subscription"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "settlementTxnListByDate",
      "options": [
        {
          "name": "Fetch All Transactions",
          "value": "settlementTxnListByDate",
          "action": "Fetch all settlement transactions",
          "description": "Fetch transaction level details for a settlement"
        },
        {
          "name": "Fetch All",
          "value": "settlementBillList",
          "action": "Fetch all settlements",
          "description": "Fetch all settlement details"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "settlement"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Fetch All",
      "value": "fetchOrderList",
      "action": "Fetch all orders",
      "description": "Fetch all orders",
      "resource": "orderActions"
    },
    {
      "name": "Fetch",
      "value": "orderDetail",
      "action": "Fetch order details",
      "description": "Fetch order details",
      "resource": "orderActions"
    },
    {
      "name": "Create",
      "value": "createPaymentLink",
      "action": "Create a payment link",
      "description": "Create and share a payment link",
      "resource": "payments"
    },
    {
      "name": "Fetch",
      "value": "fetchTransactionsForLink",
      "action": "Fetch a payment link",
      "description": "Fetch payment link details",
      "resource": "payments"
    },
    {
      "name": "Fetch All",
      "value": "fetchPaymentLinks",
      "action": "Fetch all payment links",
      "description": "Fetch all payment links",
      "resource": "payments"
    },
    {
      "name": "Create",
      "value": "initiateRefund",
      "action": "Create a refund",
      "description": "Initiate a full or partial refund",
      "resource": "refund"
    },
    {
      "name": "Fetch",
      "value": "checkRefundStatus",
      "action": "Fetch a refund",
      "description": "Fetch refund status",
      "resource": "refund"
    },
    {
      "name": "Fetch All",
      "value": "fetchRefundList",
      "action": "Fetch all refunds",
      "description": "Fetch all refund requests",
      "resource": "refund"
    },
    {
      "name": "Cancel",
      "value": "cancelSubscription",
      "action": "Cancel a subscription",
      "description": "Cancel an active subscription",
      "resource": "subscription"
    },
    {
      "name": "Fetch",
      "value": "fetchSubscriptionStatus",
      "action": "Fetch a subscription",
      "description": "Fetch details and status of subscription",
      "resource": "subscription"
    },
    {
      "name": "Pause or Resume",
      "value": "pauseResumeSubscription",
      "action": "Pause or resume a subscription",
      "description": "Pause or resume a subscription",
      "resource": "subscription"
    },
    {
      "name": "Fetch All Transactions",
      "value": "settlementTxnListByDate",
      "action": "Fetch all settlement transactions",
      "description": "Fetch transaction level details for a settlement",
      "resource": "settlement"
    },
    {
      "name": "Fetch All",
      "value": "settlementBillList",
      "action": "Fetch all settlements",
      "description": "Fetch all settlement details",
      "resource": "settlement"
    }
  ]

npm_readme:
  # n8n-nodes-paytm

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

  **Paytm** is a leading payments platform in India that enables businesses to accept payments, process refunds, manage settlements, and build payment-driven workflows.

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

  ---

  ## Contents

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

  ---

  ## Installation

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

  For self-hosted setups, install the package into your n8n user directory (for example under `~/.n8n`), then **restart n8n** so the node loads.

  ---

  ## Operations

  Paytm n8n nodes support the following resources and operations.

  ### Order


  | Operation    | Description                                        |
  | ------------ | -------------------------------------------------- |
  | **Get**      | Fetch order details.                               |
  | **Get Many** | Fetch all order details for your merchant account. |


  ### Payment Link


  | Operation    | Description                                |
  | ------------ | ------------------------------------------ |
  | **Create**   | Create and share a payment link.           |
  | **Get**      | Fetch all transactions for a payment link. |
  | **Get Many** | Fetch all payment links.                   |


  ### Refund


  | Operation    | Description                        |
  | ------------ | ---------------------------------- |
  | **Create**   | Initiate a full or partial refund. |
  | **Get**      | Fetch refund status.               |
  | **Get Many** | Fetch all refund requests.         |


  ### Settlement


  | Operation                 | Description                                       |
  | ------------------------- | ------------------------------------------------- |
  | **Get Many**              | Fetch all settlement details.                     |
  | **Get Many Transactions** | Fetch transaction-level details for a settlement. |


  ### Subscription


  | Operation  | Description                            |
  | ---------- | -------------------------------------- |
  | **Get**    | Fetch subscription details and status. |
  | **Update** | Pause or resume a subscription.        |
  | **Delete** | Cancel an active subscription.         |


  ---

  ## Credentials

  To use Paytm nodes, authenticate with your **Paytm merchant API** credentials in n8n.

  ### Prerequisites

  1. If you already have a Paytm merchant account, sign in to the [Paytm Merchant Dashboard](https://dashboard.paytm.com/). If not, create an account from Paytm's business onboarding flow.
  2. Sign in with your registered credentials.
  3. Go to **Developer Settings** -> **API Keys**.
  4. Use **test** API details to validate workflows. Use **production** API details only for live money movement and settlement.

  ### Setting up Paytm credentials in n8n

  1. Sign in to your n8n instance.
  2. In the left panel, open **Credentials** -> **Create credential**.
  3. In the credential search box, type or select **Paytm** (merchant API credential; the picker label is **Paytm**).
  4. Choose the **environment** and enter **Merchant ID** and **Key Secret**.
  5. If the values are valid, n8n runs a test request and confirms the connection.

  ### Authentication method

  This node uses Paytm's standard API authentication: **Merchant ID (MID)** and **Key** (key secret), including checksum / signing where required.


  | Field           | Description                                                              |
  | --------------- | ------------------------------------------------------------------------ |
  | **Environment** | **Production** for live traffic, or **Test** for staging and validation. |
  | **Merchant ID** | Your Paytm MID from the merchant dashboard.                              |
  | **Key Secret**  | Merchant key used for request signing and checksums.                     |


  API reference: [Paytm Payments - Getting started](https://www.paytmpayments.com/docs/getting-started).

  ---

  ## Compatibility

  - **n8n:** Tested locally against **n8n v2.13.2**. Use a release that supports community nodes and a compatible `n8n-workflow` peer dependency; verify before production.
  - **Node.js:** `>=20.15` (see `package.json` -> `engines`).

  ---

  ## Usage

  ### Installing or configuring the Paytm community node

  #### Method 1: Community Nodes (recommended)

  1. Sign in to your n8n instance.
  2. Open **Settings** in the left navigation bar.
  3. Go to **Community Nodes** -> **Install**.
  4. Enter the package name: `@paytm/n8n-nodes-paytm`.
  5. **Restart n8n.** The node appears after restart.

  #### Method 2: Nodes panel

  1. Sign in to your n8n instance.
  2. Create a new workflow or open an existing one.
  3. Open the nodes panel (**+** on the top right, or press **N**).
  4. Search for **Paytm**.
  5. Choose **Install** if prompted.

  #### Method 3: npm (self-hosted)

  If you run a self-hosted n8n instance:

  ```bash
  # From your n8n user directory (typical default)
  cd ~/.n8n

  # Install the community node
  npm install n8n-nodes-paytm

  # Restart your n8n instance
  ```

  #### Method 4: Docker

  n8n often recommends Docker for self-hosting. Example image layer:

  ```dockerfile
  FROM n8nio/n8n:latest
  USER root
  RUN npm install -g n8n-nodes-paytm
  USER node
  ```

  Adjust paths and install location to match [n8n's Docker installation guide](https://docs.n8n.io/hosting/installation/docker/).

  ### Using the Paytm node

  1. Configure **Paytm** credentials (see [Credentials](#credentials)).
  2. Create or open a workflow.
  3. Add a node: open the panel (**+** or **N**) and search for **Paytm**.
  4. Pick the **resource** and **operation** (Create, Get, Get Many, etc.).
  5. Fill required and optional fields, then run the workflow.

  ---

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/installation/)
  - [Paytm Merchant Dashboard](https://dashboard.paytm.com/)
  - [Getting started with Paytm Payments](https://www.paytmpayments.com/docs/getting-started)

  ---

  ## Version history

  - See [GitHub Releases](https://github.com/paytm/n8n-nodes-paytm/releases) for tagged versions.
  - Current package version: **1.6.4** (see `package.json`).

  ---

  ## License

  See the [MIT license](https://github.com/paytm/n8n-nodes-paytm/blob/HEAD/LICENSE.md).

ai_documentation_summary:
  {"purpose":"Enables integration with Paytm's payment platform to manage orders, process refunds, handle settlements, and manage subscriptions within n8n workflows.","capabilities":["Fetch order details","Retrieve multiple orders for a merchant account","Create and share payment links","Fetch transactions for a payment link","Retrieve all payment links","Initiate full or partial refunds","Fetch refund status","Retrieve all refund requests","Fetch settlement details","Fetch transaction-level details for settlements"],"authentication":"API key required (Merchant ID and Key Secret)","commonUseCases":["Automating payment link generation for customer checkout","Processing refunds after order cancellation","Monitoring subscription status and managing renewals","Aggregating settlement reports for financial reconciliation"],"limitations":["Requires a Paytm merchant account to be set up beforehand","Node requires n8n v2.13.2 or later","Requires Node.js version >= 20.15","Must restart n8n after installing the community node package"],"relatedNodes":[]}


node_type: n8n-nodes-rendex.rendex
package_name: n8n-nodes-rendex
display_name: Rendex
description: Capture screenshots, generate PDFs, render HTML, and extract content via Rendex
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: dan425953
author_github_url: https://github.com/copperline-labs/rendex-n8n.git
npm_package_name: n8n-nodes-rendex
npm_version: 1.7.0
community_fetched_at: 2026-07-14T14:40:34.085Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "screenshot",
      "options": [
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Artifact",
          "value": "artifact"
        },
        {
          "name": "Batch",
          "value": "batch"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Job",
          "value": "job"
        },
        {
          "name": "Screenshot",
          "value": "screenshot"
        },
        {
          "name": "Watch",
          "value": "watch"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get account plan and usage",
          "description": "Get the caller's plan, this month's usage, per-minute rate limit, and upgrade info (read-only, no credits)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a branded artifact",
          "description": "Render a branded PDF/PNG artifact (plus a hosted share page) from Markdown or HTML in one call"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "artifact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a watch",
          "description": "Start monitoring a URL for changes on a schedule"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a watch",
          "description": "Delete a watch and its run history"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a watch",
          "description": "Fetch one watch by ID"
        },
        {
          "name": "Get Many",
          "value": "list",
          "action": "Get many watches",
          "description": "List your watches"
        },
        {
          "name": "Run Now",
          "value": "run",
          "action": "Run a watch now",
          "description": "Run an immediate check now (charges 1 credit)"
        },
        {
          "name": "Test",
          "value": "test",
          "action": "Test a watch config",
          "description": "Dry-run a config to preview what a watch would capture, without creating one"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a watch",
          "description": "Update, pause, resume, or re-point a watch"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "watch"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "capture",
      "options": [
        {
          "name": "Capture",
          "value": "capture",
          "action": "Capture a screenshot or PDF",
          "description": "Capture a screenshot or PDF synchronously and return the result"
        },
        {
          "name": "Capture Async",
          "value": "captureAsync",
          "action": "Submit an async capture job",
          "description": "Submit a capture job and return immediately with a job ID"
        },
        {
          "name": "Render Link",
          "value": "renderLink",
          "action": "Render a hosted image or PDF link",
          "description": "Render HTML/URL to a signed, hosted image/PDF URL (for og:image)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "screenshot"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "extract",
      "options": [
        {
          "name": "Extract",
          "value": "extract",
          "action": "Extract content from a URL",
          "description": "Extract clean reader-mode content (Markdown/JSON/HTML) from a URL — ideal for LLM and RAG pipelines"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get job status",
          "description": "Poll the status of an async job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "job"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "submit",
      "options": [
        {
          "name": "Submit",
          "value": "submit",
          "action": "Submit a batch",
          "description": "Submit a batch of URLs for capture (up to 500 per plan limit)"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get batch status",
          "description": "Poll the status of a batch and its jobs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "batch"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get",
      "value": "get",
      "action": "Get account plan and usage",
      "description": "Get the caller's plan, this month's usage, per-minute rate limit, and upgrade info (read-only, no credits)",
      "resource": "account"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a branded artifact",
      "description": "Render a branded PDF/PNG artifact (plus a hosted share page) from Markdown or HTML in one call",
      "resource": "artifact"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a watch",
      "description": "Start monitoring a URL for changes on a schedule",
      "resource": "watch"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a watch",
      "description": "Delete a watch and its run history",
      "resource": "watch"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a watch",
      "description": "Fetch one watch by ID",
      "resource": "watch"
    },
    {
      "name": "Get Many",
      "value": "list",
      "action": "Get many watches",
      "description": "List your watches",
      "resource": "watch"
    },
    {
      "name": "Run Now",
      "value": "run",
      "action": "Run a watch now",
      "description": "Run an immediate check now (charges 1 credit)",
      "resource": "watch"
    },
    {
      "name": "Test",
      "value": "test",
      "action": "Test a watch config",
      "description": "Dry-run a config to preview what a watch would capture, without creating one",
      "resource": "watch"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a watch",
      "description": "Update, pause, resume, or re-point a watch",
      "resource": "watch"
    },
    {
      "name": "Capture",
      "value": "capture",
      "action": "Capture a screenshot or PDF",
      "description": "Capture a screenshot or PDF synchronously and return the result",
      "resource": "screenshot"
    },
    {
      "name": "Capture Async",
      "value": "captureAsync",
      "action": "Submit an async capture job",
      "description": "Submit a capture job and return immediately with a job ID",
      "resource": "screenshot"
    },
    {
      "name": "Render Link",
      "value": "renderLink",
      "action": "Render a hosted image or PDF link",
      "description": "Render HTML/URL to a signed, hosted image/PDF URL (for og:image)",
      "resource": "screenshot"
    },
    {
      "name": "Extract",
      "value": "extract",
      "action": "Extract content from a URL",
      "description": "Extract clean reader-mode content (Markdown/JSON/HTML) from a URL — ideal for LLM and RAG pipelines",
      "resource": "document"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get job status",
      "description": "Poll the status of an async job",
      "resource": "job"
    },
    {
      "name": "Submit",
      "value": "submit",
      "action": "Submit a batch",
      "description": "Submit a batch of URLs for capture (up to 500 per plan limit)",
      "resource": "batch"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get batch status",
      "description": "Poll the status of a batch and its jobs",
      "resource": "batch"
    }
  ]

npm_readme:
  # n8n-nodes-rendex

  > n8n community node for [Rendex](https://rendex.dev) — capture screenshots, generate PDFs, render HTML and Markdown to images, and extract clean content from URLs via the Rendex rendering API.

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

  This is a community node for [n8n](https://n8n.io), the fair-code workflow automation platform. It lets your workflows talk to [api.rendex.dev](https://api.rendex.dev) to render web pages, raw HTML, and Markdown into high-quality PNG, JPEG, WebP, or PDF output.

  ---

  ## Features

  - **Capture screenshots** of live URLs, raw HTML, or Markdown (up to 5 MB of HTML/Markdown)
  - **Extract content** — turn any URL into clean reader-mode **Markdown, JSON, or HTML** for LLM and RAG pipelines (Document → Extract)
  - **Data templating** — fill `{{placeholders}}` in an HTML or Markdown template from a JSON object (Mustache) to generate invoices, reports, and certificates from one template
  - **Generate PDFs** with configurable page size, margins, landscape, and scale
  - **Device presets** — render at iPhone, iPad, or Pixel viewports (sets viewport, scale, and user agent in one option)
  - **Output resize** — downscale captures to thumbnails, aspect ratio preserved
  - **Clean capture** — hide cookie/consent banners and arbitrary CSS selectors before capture
  - **Async mode** — submit a capture and receive an HMAC-signed webhook when it's done
  - **Batch mode** — submit up to 500 URLs in a single request (plan-dependent)
  - **Geo-targeted captures** — render pages as seen from a specific country, city, or state *(Pro/Enterprise)*
  - **Element capture** — screenshot a specific CSS selector instead of the full page
  - **Watch a page for changes** *(Rendex Watch)* — monitor a URL on a schedule with real-Chrome **visual diff**, text diff, or both; create/list/update/run watches and **trigger a workflow when a page changes** (polling **Rendex Watch Trigger** node)
  - **Ad blocking**, resource blocking, CSS/JS injection, cookie injection, custom headers, dark mode emulation, full-page auto-scroll

  Rendex is built on Cloudflare Workers with Browser Rendering and backs a live production API. See [rendex.dev/docs](https://rendex.dev/docs) for full API documentation.

  ---

  ## Installation

  ### n8n Cloud & self-hosted

  1. Open your n8n instance → **Settings → Community Nodes**
  2. Click **Install** and paste: `n8n-nodes-rendex`
  3. Accept the community-node warning and click **Install**
  4. Once installed, add a **Rendex** node to any workflow

  ### Manual (npm)

  ```bash
  npm install n8n-nodes-rendex
  ```

  ---

  ## Authentication

  1. Sign in to [rendex.dev/dashboard](https://rendex.dev/dashboard) (free plan available)
  2. Go to **API Keys** and click **Create Key**
  3. Copy the key — it starts with `rdx_`
  4. In n8n, create a new **Rendex API** credential and paste the key into the **API Key** field

  Rendex keys are bearer tokens sent as `Authorization: Bearer rdx_...`. The node handles the header automatically.

  ---

  ## Operations

  ### Screenshot

  | Operation | What it does |
  |---|---|
  | **Capture** | Sync request that returns an image or PDF. Output is written to the node's binary property (default `data`) plus a JSON metadata object. |
  | **Capture Async** | Submits a job and returns immediately with a `jobId`. Optional `webhookUrl` is called with an HMAC-signed payload when the capture completes. |

  ### Document

  | Operation | What it does |
  |---|---|
  | **Extract** | Fetches a URL, runs reader-mode extraction in the fully rendered page (handles JS/SPA pages), and returns clean **Markdown**, **JSON**, or **HTML** — title, byline, excerpt, site name, and content. Ideal for feeding pages to LLM/RAG nodes. |

  ### Job

  | Operation | What it does |
  |---|---|
  | **Get Status** | Polls an async job by `jobId` and returns its current status + signed result URL once ready. |

  ### Batch

  | Operation | What it does |
  |---|---|
  | **Submit** | Submits up to 500 URLs for parallel capture. Accepts per-URL defaults and an optional completion webhook. |
  | **Get Status** | Polls a batch by `batchId` and returns status + all child job results. |

  ### Watch (Rendex Watch)

  Monitor a URL on a schedule and detect when it changes — real-Chrome **visual** diff (with a highlighted overlay), an extracted-**text** diff, or **both**. Uses your existing `rdx_` key and shared credit pool.

  | Operation | What it does |
  |---|---|
  | **Create** | Start monitoring a URL. Choose the interval, change-detection mode, and (optionally) a webhook/email alert + render knobs (element selector, noise filters, monitor identity). |
  | **Get** | Fetch one watch by ID. |
  | **Get Many** | List your watches (filter by active/paused) — one output item per watch. |
  | **Run Now** | Trigger an immediate check (charges 1 credit). |
  | **Update** | Change the URL, interval, mode, alerts, or pause/resume. |
  | **Delete** | Remove a watch and its run history. |

  > **Plan walls:** the minimum check interval is your plan's floor (Free daily / Starter 3h / Pro 30 min / Enterprise 5 min). Webhook alerts need Starter+; email alerts and the visual/text diff work on every plan.

  ### Rendex Watch Trigger

  A separate **trigger** node that starts your workflow when a monitored page changes. It **polls** your watches and fires for any whose last change advanced since the previous poll (leave **Watch ID** empty to fire for any of your watches, or set it to monitor one). For real-time delivery, point a watch's **Webhook URL** at an n8n **Webhook** node instead — this trigger is the zero-config alternative.

  ---

  ## Example: sync capture

  1. Add a **Rendex** node after any trigger
  2. Set **Resource** = `Screenshot`, **Operation** = `Capture`
  3. Set **Source** = `URL` and enter `https://example.com`
  4. Leave **Format** = `png`
  5. Click **Execute Node** — the output tab shows the metadata JSON and the binary `data` property holds the PNG. Wire it into **Write Binary File**, **Upload to S3**, **HTTP Request** (to forward it), or any other binary-capable node.

  ## Example: data templating (invoice from a template)

  1. Add a **Rendex** node, set **Operation** = `Capture`
  2. Set **Source** = `HTML` (or `Markdown`) and enter a template with Mustache placeholders, e.g. `<h1>Invoice {{number}}</h1><p>Total: {{total}}</p>`
  3. Set **Format** = `pdf`
  4. Fill the **Template Data (JSON)** field with the values to inject, e.g. `{"number":"INV-014","total":"$2,400"}`
  5. Execute — Rendex renders the template with your data and returns the PDF in the binary `data` property. Map an upstream node's JSON onto **Template Data (JSON)** to render one document per item.

  `Template Data (JSON)` is logic-less Mustache: `{{var}}` interpolation, `{{#items}}…{{/items}}` loops, and nested `{{a.b}}` access. It only applies to **HTML** and **Markdown** sources.

  ## Example: extract a page to Markdown for an LLM

  1. Add a **Rendex** node, set **Resource** = `Document`, **Operation** = `Extract`
  2. Enter the article **URL** (e.g. `https://example.com/blog/post`)
  3. Leave **Extract Format** = `Markdown` (or pick `JSON`/`HTML`)
  4. Execute — the output JSON has `content` (clean Markdown), plus `title`, `byline`, `excerpt`, `siteName`, and `length`. Map `content` straight into an **AI Agent**, **OpenAI**, or vector-store node — no HTML stripping needed.

  ## Example: async + webhook trigger

  1. Add a **Rendex** node, set **Operation** = `Capture Async`
  2. Paste a webhook URL in the **Webhook URL** field (use another workflow's **Webhook** node production URL)
  3. Execute. The first workflow returns immediately with the `jobId`.
  4. In the receiving workflow, verify the HMAC signature on the `rendex-signature` header, then download the signed result URL from the payload.

  ## Example: batch of URLs

  1. Add a **Rendex** node, set **Resource** = `Batch`, **Operation** = `Submit`
  2. Paste one URL per line in the **URLs** field
  3. Fill **Defaults (JSON)** with shared options, e.g. `{"format":"png","fullPage":true}`
  4. Execute — you get back a `batchId` and the list of queued jobs
  5. Wire a **Schedule Trigger** or **Wait** node to another **Rendex** node with **Resource** = `Batch`, **Operation** = `Get Status` to poll completion.

  ---

  ## Plan limits

  | Limit | Free | Starter | Pro | Enterprise |
  |---|---|---|---|---|
  | Rate limit (req/min) | 10 | 60 | 300 | 1000 |
  | Batch size | 5 | 25 | 100 | 500 |
  | Concurrent async jobs | 10 | 50 | 200 | 1000 |
  | Geo-targeting | — | — | ✓ | ✓ |

  See [rendex.dev/pricing](https://rendex.dev/pricing) for current pricing.

  ---

  ## Advanced options

  The **Capture** and **Capture Async** operations expose an **Additional Options** collection with the full Rendex parameter surface:

  - **Viewport**: Width, Height, Device Scale Factor, Full Page, Dark Mode
  - **Device & sizing**: Device preset (iPhone/iPad/Pixel), Resize Width, Resize Height
  - **Output**: Quality (for JPEG/WebP)
  - **Wait strategy**: Wait Until, Timeout, Delay, Wait For Selector, Best Attempt
  - **Element capture**: Element Selector
  - **Blocking**: Block Ads, Block Resource Types, Block Cookie Banners, Hide Selectors
  - **Injection**: Custom CSS, Custom JavaScript, Custom Headers (JSON), Cookies (JSON), User Agent
  - **PDF**: PDF Page Format, PDF Landscape, PDF Print Background, PDF Scale, PDF Margins (JSON)
  - **Geo-targeting**: Geo Country, Geo City, Geo State *(Pro/Enterprise)*
  - **Async**: Cache TTL

  Everything maps 1:1 to the [REST API parameters](https://rendex.dev/docs/api-reference).

  ---

  ## Support

  - **Docs**: [rendex.dev/docs](https://rendex.dev/docs)
  - **Issues**: [github.com/copperline-labs/rendex-n8n/issues](https://github.com/copperline-labs/rendex-n8n/issues)
  - **Email**: [support@rendex.dev](mailto:support@rendex.dev)

  ## License

  MIT © Copperline Labs LLC

ai_documentation_summary:
  {"purpose":"Captures screenshots, generates PDFs, and renders HTML to images via the Rendex API, supporting both synchronous and asynchronous workflows.","capabilities":["Capture screenshots of live URLs or raw HTML","Generate PDFs with configurable page size, margins, landscape, and scale","Render HTML to images (PNG, JPEG, WebP)","Async capture with HMAC-signed webhook notifications","Batch processing of up to 500 URLs","Geo-targeted captures (Pro/Enterprise)","Element-specific capture via CSS selectors","Ad blocking and resource blocking","Custom CSS/JS injection and cookie injection","Dark mode emulation"],"authentication":"API key required (Bearer token starting with rdx_)","commonUseCases":["Automated visual regression testing","Generating PDF reports from web pages","Creating thumbnail images for content feeds","Geo-specific page rendering for localization testing","Batch capturing multiple URLs for archival or analysis"],"limitations":["Geo-targeting features require Pro or Enterprise plans","Batch size limits vary by plan (5 for Free, up to 500 for Enterprise)","Rate limits apply based on subscription tier (10 req/min for Free)","Async mode requires a valid webhook URL to receive completion notifications"],"relatedNodes":["Webhook","Schedule Trigger","Wait","Write Binary File","Upload to S3"]}


node_type: @nalpeiron/n8n-nodes-nalpeiron.nalpeironZentitle2Trigger
package_name: @nalpeiron/n8n-nodes-nalpeiron
display_name: Nalpeiron Zentitle2 Trigger
description: Handle webhooks from Nalpeiron Zentitle2
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: tszturmaj-nalpeiron
author_github_url: https://github.com/Nalpeiron/integrations-n8n.git
npm_package_name: @nalpeiron/n8n-nodes-nalpeiron
npm_version: 1.1.1
community_fetched_at: 2026-07-14T14:40:34.087Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # @nalpeiron/n8n-nodes-nalpeiron

  Automate your license management and customer success workflows with the [Nalpeiron Growth Platform](https://nalpeiron.com). This n8n community node lets you integrate both Zentitle2 (license operations) and Zengain (customer lifecycle management) components with real-time notifications into your automation workflows.

  In addition to retrieval operations, action nodes support creating and updating records (POST/PATCH) for supported resources.

  ![Version](https://img.shields.io/npm/v/@nalpeiron/n8n-nodes-nalpeiron)
  ![Downloads](https://img.shields.io/npm/dm/@nalpeiron/n8n-nodes-nalpeiron)
  ![License](https://img.shields.io/npm/l/@nalpeiron/n8n-nodes-nalpeiron)

  ## What You Can Do

  ### 📊 License Data & Reporting

  - Retrieve license details and status information
  - List and filter licenses by various criteria
  - Track license usage and seat assignments
  - Monitor license expiration dates

  ### 👥 Customer Information

  - Get customer records and contact details
  - List customers with filtering options
  - Access customer-specific license information
  - Handle multi-tenant customer scenarios

  ### 📦 Product & Feature Insights

  - Retrieve product configurations and details
  - List available features and capabilities
  - Access product offerings and packages
  - Query custom attributes and configurations

  ### 🔔 Real-Time Notifications

  Listen for webhook events from both Growth Platform components:

  **Zentitle2 Component Events**:

  - License creation, activation, and expiration
  - Customer lifecycle events
  - Seat management notifications
  - Renewal and maintenance alerts

  **Zengain Component Events**:

  - Customer lifecycle changes (creation and updates) for revenue optimization and proactive customer success

  ## Use Cases

  Perfect for automating:

  **License Management (Zentitle2 Component):**

  - **License Monitoring**: Track license status and expiration dates across your organization
  - **Renewal Alerts**: Set up notifications for upcoming license expirations
  - **Usage Reporting**: Generate reports on license utilization and seat assignments
  - **Compliance Tracking**: Monitor license compliance and usage patterns

  **Customer Success & Revenue Growth (Zengain Component):**

  - **Revenue Optimization**: Identify upsell opportunities and at-risk accounts
  - **Proactive Customer Success**: Automate engagement based on customer lifecycle insights
  - **Sales Intelligence**: Sync customer behavior data to CRM systems for prioritized outreach
  - **Churn Prevention**: Set up automated workflows to address customer health signals

  **Integrated Growth Platform Workflows:**

  - **Data Synchronization**: Keep external systems updated with both license and customer success information from the Growth Platform
  - **Unified Customer View**: Combine Zentitle2 licensing data with Zengain customer success insights for complete customer intelligence

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes** in n8n
  2. Select **Install**
  3. Enter `@nalpeiron/n8n-nodes-nalpeiron` as the package name
  4. Click **Install**

  ### npm

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

  ## Setup Guide

  ### Step 1: Installation

  Install via Community Nodes (recommended) or npm as shown above.

  ### Step 2: Create API Credentials

  1. Log into your Nalpeiron Growth Platform account
  2. Go to the API credentials section
  3. Create new OAuth2 credentials
  4. Note down your Client ID, Client Secret, and OAuth URL

  ### Step 3: Configure Credentials in n8n

  1. In n8n, go to **Settings** > **Credentials**
  2. Click **Add Credential** and select **Nalpeiron account**
  3. Configure the following fields:
     - **Base URL**: Your Nalpeiron API endpoint (e.g., https://api.nalpeiron.com)
     - **Tenant ID**: Your Nalpeiron tenant identifier
     - **Client ID**: Your OAuth2 Client ID from Nalpeiron admin panel
     - **Client Secret**: Your OAuth2 Client Secret from Nalpeiron admin panel
     - **Access Token URL**: The OAuth2 Token endpoint URL (e.g., https://auth.nalpeiron.com/protocol/openid-connect/token)

  ### Step 4: Test Your Credentials

  The credentials include a built-in test function:

  1. Fill in your credential fields in the n8n UI
  2. Click the **"Test"** button
  3. Get immediate validation of your OAuth2 configuration

  **What Gets Tested:**

  - OAuth2 Token Request validation
  - Access Token format verification
  - Tenant-specific API access
  - Error diagnosis with specific guidance for common issues

  ## Getting Started

  After installation, you'll find four new nodes in your n8n palette:

  **Zentitle2 Nodes** (License Management Component):

  - **📊 Nalpeiron Zentitle2** - Retrieve license data (get licenses, customers, products, usage information)
  - **🔔 Nalpeiron Zentitle2 Trigger** - Listen for real-time events (license expiration, customer updates, renewals)

  **Zengain Nodes** (Customer Success Component):

  - **📊 Nalpeiron Zengain** - Access customer lifecycle data and account insights for revenue optimization
  - **🔔 Nalpeiron Zengain Trigger** - Listen for customer success events to drive proactive engagement

  **Note:** All Nalpeiron nodes are also available as AI tools for enhanced automation and intelligent workflows.

  ### Example Workflows

  **License Renewal Alert (Zentitle2 Component):**

  ```
  Nalpeiron Zentitle2 Trigger (license expires in 7 days) → Get Customer Details → Send Renewal Notice
  ```

  **Customer Success Automation (Zengain Component):**

  ```
  Nalpeiron Zengain Trigger (customer created) → Get Customer Insights → Update CRM with Revenue Opportunities
  ```

  ## Resources

  The node provides access to these Nalpeiron Growth Platform resources

  ## Webhook Events

  The trigger node supports webhook events for real-time automation

  ## Webhook Setup

  ### Basic Setup

  1. Add either the **Nalpeiron Zentitle2 Trigger** or **Nalpeiron Zengain Trigger** node to your workflow
  2. Select the events you want to listen for (supports multiple selection)
  3. Webhooks are automatically registered
  4. The webhook URL is automatically configured

  ### Authentication

  **Note:** RSA signature verification has been removed from this community package to ensure compatibility with n8n Cloud verification requirements. All webhook requests are accepted without signature verification.

  For production deployments requiring webhook authentication, consider implementing verification in your external systems or using n8n self-hosted with custom authentication logic.

  ### Auto-Setup Feature

  The trigger node automatically manage webhooks:

  - **Auto-Create**: Creates webhooks when the trigger activates
  - **Auto-Update**: Updates webhook subscriptions when events change
  - **Auto-Delete**: Removes webhooks when the trigger is deactivated

  ### Webhook Payload Structure

  All webhooks follow this structure:

  ```json
  {
  	"eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
  	"eventDate": "2025-06-06T11:39:22.739326Z",
  	"eventCode": "customer.created",
  	"resourceId": "cust_ILLqMyx3UUy_n5cZqui7NQ",
  	"callAttempt": 1,
  	"payload": {
  		// Event-specific data
  	}
  }
  ```

  ### Accessing Webhook Data in n8n

  | Data          | Access Path                   | Example                  |
  | ------------- | ----------------------------- | ------------------------ |
  | Event Type    | `{{ $json.data.eventCode }}`  | `"customer.created"`     |
  | Resource ID   | `{{ $json.data.resourceId }}` | `"cust_abc123"`          |
  | Event Payload | `{{ $json.data.payload }}`    | Event-specific data      |
  | Event Date    | `{{ $json.data.eventDate }}`  | `"2025-06-06T11:39:22Z"` |

  ## Troubleshooting

  ### Webhook Not Triggering

  1. Check webhook URL is correctly registered in Nalpeiron Growth Platform
  2. Verify selected events match the events being sent
  3. Review n8n execution logs for errors
  4. Test webhook manually using the "Test URL" feature

  ### API Calls Failing

  1. Verify OAuth2 credentials are correct and have proper permissions
  2. Check the base URL points to the correct environment

  ## License

  MIT

  ## Support

  For Nalpeiron Growth Platform API questions, please contact [Nalpeiron Support](https://nalpeiron.com/support).

  ## Links

  - [n8n](https://n8n.io)
  - [Nalpeiron Growth Platform](https://nalpeiron.com)
  - [API Documentation](https://api.nalpeiron.io/docs)

ai_documentation_summary:
  {"purpose":"Handles real-time webhook events from the Nalpeiron Zentitle2 component, enabling automation for license management, expiration alerts, and seat notifications.","capabilities":["Listen for license creation events","Listen for license activation events","Listen for license expiration events","Listen for customer lifecycle events","Listen for seat management notifications","Listen for renewal and maintenance alerts"],"authentication":"OAuth2","commonUseCases":["License renewal alerts and monitoring","Automated seat management workflows","Real-time compliance tracking","Integration with external CRM systems for license data"],"limitations":["Requires valid OAuth2 credentials configured in n8n","Dependent on Nalpeiron Growth Platform webhook configuration"],"relatedNodes":["Nalpeiron Zentitle2","Nalpeiron Zengain","Nalpeiron Zengain Trigger"]}


node_type: n8n-nodes-sharetribe.sharetribe
package_name: n8n-nodes-sharetribe
display_name: Sharetribe
description: Work with Sharetribe resources
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: greg-tribebuilder
author_github_url: https://github.com/TribeBuilder/
npm_package_name: n8n-nodes-sharetribe
npm_version: 0.2.12
community_fetched_at: 2026-07-14T14:40:34.087Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-sharetribe

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

  Sharetribe is a cloud platform for building and running online marketplaces. It provides the backend infrastructure — user management, listings, transactions, messaging, and payments — so marketplace operators can launch without building from scratch.

  > Requires the 'Build', 'Pro' or 'Extend' plan to access the Sharetribe [Integration API](https://www.sharetribe.com/docs/introduction/getting-started-with-integration-api/).

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

  **Note:** This n8n community node is not developed or maintained by Sharetribe. It has however been vetted by Sharetribe and is developed and maintained by a verified [Sharetribe Expert](https://experts.sharetribe.com/l/greg-long-freelance-developer/6973f22c-9cdb-4b3a-b0bd-7aa5e3915fe0).

  [![a verified sharetribe expert badge](/assets/I-am-a-Verified-Sharetribe-Expert_white.webp)](https://sharetribe.com)

  [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

  ### Sharetribe Trigger Node

  Polls for events from your Sharetribe marketplace:

  | Event Type             | Events                                    |
  | ---------------------- | ----------------------------------------- |
  | Availability Exception | Created, Updated, Deleted                 |
  | Booking                | Created, Updated, Deleted                 |
  | Listing                | Created, Updated, Deleted                 |
  | Message                | Created, Updated, Deleted                 |
  | Review                 | Created, Updated, Deleted                 |
  | Stock Adjustment       | Created, Updated, Deleted                 |
  | Stock Reservation      | Created, Updated, Deleted                 |
  | Transaction            | Initiated, Transitioned, Updated, Deleted |
  | User                   | Created, Updated, Deleted                 |

  ### Sharetribe Node

  | Resource               | Operations                                                                                           |
  | ---------------------- | ---------------------------------------------------------------------------------------------------- |
  | Asset                  | Get (translations, email texts, branding, listing fields, listing types, user fields, content pages) |
  | Availability Exception | Create, Delete, Get Many                                                                             |
  | Image                  | Upload (from file or URL)                                                                            |
  | Listing                | Approve, Close, Create, Get, Get Availability, Get Many, Open, Update                                |
  | Marketplace            | Get Name                                                                                             |
  | Stock                  | Get Adjustments, Get Reservation, Update Quantity                                                    |
  | Transaction            | Get, Get Many, Transition, Transition Speculative, Update                                            |
  | User                   | Approve, Get, Get Many, Update, Update Permissions, Verify Email                                     |

  Assets are marketplace configuration files stored on Sharetribe's CDN, fetchable by alias (`latest`) or specific version ID.

  ## Credentials

  Create new credentials of type **Sharetribe Integration API** in n8n:

  1. **Integration API Client ID** and **Integration API Client Secret** — create an Integration API application in [Sharetribe Console → Build → Advanced → Applications](https://console.sharetribe.com/advanced/applications).

  2. **Sharetribe Plan** — select your plan:
     - **Extend** (default, also for Trial and Build plans): enter your **Marketplace API Client ID** — create a Marketplace API application in [Sharetribe Console → Build → Advanced → Applications](https://console.sharetribe.com/advanced/applications).
     - **Pro**: enter your **Marketplace URL** — the node retrieves the Marketplace API Client ID automatically.

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with**: n8n versions 1.0.0+
  - **Sharetribe API**: Compatible with Sharetribe Integration API v2026-05-06

  ## Usage

  If you are new to n8n check out the n8n's [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started.

  #### Search Filters and Sorting

  The node learns about your marketplace's [extended data](https://www.sharetribe.com/docs/references/extended-data/) configuration to determine what extended data fields can be used as filter and sort options for Listings, Users and Transactions.

  The node also learns your marketplace Listing types, User types, Listing Categories, Transaction transitions and Transaction Processes. These can then be used as Search filters.

  **Note**: Only marketplaces using the 'Extend' plan can define custom fields for search and sort on Transactions and Users, see [Search schema](https://www.sharetribe.com/docs/references/extended-data/#search-schema). Public fields on a Listing can be defined as searchable and sortable in the Sharetribe console on any plan.

  #### Count Only

  Get Many operations for Listings, Transactions, Users, and Stock Adjustments support a **Count Only** option that returns just the total number of matching records instead of the full list — useful for conditional logic without fetching data you don't need.

  #### Response Flattening

  API responses are automatically simplified into flat, easy-to-use objects with related data merged in.

  #### Updating Extended Data

  When creating or updating a Listing, Transaction, or User, extended data fields can be added or updated in two modes:

  - **Manual Mapping** (Recommended) — add or update individual fields one by one. Only the fields you specify are changed; everything else is left untouched. Supports [dot-notation](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/#support-dot-notation) for nested values (e.g. `details.size`).
  - **JSON** — provide a raw JSON object that is merged at the top level only (**shallow merge**). **Use with caution**: if a field already contains a nested object, it will be **fully replaced**, not merged. Top-level fields set to `null` are deleted entirely.

    **Example** — if `publicData` is currently:

    ```json
    {
    	"color": "red",
    	"details": { "size": "large", "weight": 5 }
    }
    ```

    and you provide:

    ```json
    {
    	"details": { "size": "small" }
    }
    ```

    the result is:

    ```json
    {
    	"color": "red",
    	"details": { "size": "small" }
    }
    ```

    `weight` is permanently deleted. Use **Manual Mapping** with `details.size` to avoid this.

  **Deleting individual fields** — Update operations include a separate **Delete Fields** section. Enter the field path ([dot-notation](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/#support-dot-notation) supported). For example, setting the path to `details.weight` removes only that key while leaving the rest of `details` intact.

  ## Resources

  - [Sharetribe](https://www.sharetribe.com/)
  - [Sharetribe Devoper Docs](https://www.sharetribe.com/docs/)
  - [Sharetribe API Docs](https://www.sharetribe.com/api-reference/integration.html)
  - [Sharetribe Console](https://console.sharetribe.com/)

  ## Troubleshooting

  Issues can be created in the GitHub repository for the node https://github.com/tribebuilder/n8n-nodes-sharetribe.

  ## License

  [MIT](LICENSE.md)

  ## Development

  See [DEVELOPMENT.md](DEVELOPMENT.md)

ai_documentation_summary:
  {"purpose":"Enables integration with Sharetribe cloud marketplace platforms to manage listings, transactions, users, and other marketplace resources within n8n workflows.","capabilities":["Poll for real-time events (Availability Exception, Booking, Listing, Message, Review, Stock Adjustment, Transaction, User)","Create, Update, Delete, and Get Listings","Approve, Open, and Close Listings","Manage Transactions (Get, Transition, Update)","Upload Images from file or URL","Get and Update Stock Adjustments and Reservations","Manage Users (Approve, Update Permissions)","Fetch Marketplace Assets (translations, branding, listing fields)","Get Marketplace Name","Support for Count Only operations to retrieve record counts without full data"],"authentication":"OAuth2 (Integration API Client ID and Client Secret required; Marketplace API Client ID for Extend plan or Marketplace URL for Pro plan)","commonUseCases":["Automating marketplace listing approval workflows","Sending notifications when bookings or transactions are created or updated","Syncing user data and permissions across systems","Monitoring stock levels and adjusting inventory automatically","Aggregating marketplace metrics and counts for dashboards"],"limitations":["Requires Sharetribe 'Build', 'Pro', or 'Extend' plan to access the Integration API","Custom search and sort fields for Transactions and Users are only available on the 'Extend' plan","Not developed or maintained by Sharetribe (maintained by a verified Sharetribe Expert)","Requires n8n version 1.0.0 or higher"],"relatedNodes":[]}


node_type: n8n-nodes-sharetribe.sharetribeTrigger
package_name: n8n-nodes-sharetribe
display_name: Sharetribe Trigger
description: Poll Sharetribe for marketplace events
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-14 14:40:34
author_name: greg-tribebuilder
author_github_url: https://github.com/TribeBuilder/
npm_package_name: n8n-nodes-sharetribe
npm_version: 0.2.12
community_fetched_at: 2026-07-14T14:40:34.088Z
ai_summary_generated_at: 2026-05-02 08:57:17
npm_readme:
  # n8n-nodes-sharetribe

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

  Sharetribe is a cloud platform for building and running online marketplaces. It provides the backend infrastructure — user management, listings, transactions, messaging, and payments — so marketplace operators can launch without building from scratch.

  > Requires the 'Build', 'Pro' or 'Extend' plan to access the Sharetribe [Integration API](https://www.sharetribe.com/docs/introduction/getting-started-with-integration-api/).

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

  **Note:** This n8n community node is not developed or maintained by Sharetribe. It has however been vetted by Sharetribe and is developed and maintained by a verified [Sharetribe Expert](https://experts.sharetribe.com/l/greg-long-freelance-developer/6973f22c-9cdb-4b3a-b0bd-7aa5e3915fe0).

  [![a verified sharetribe expert badge](/assets/I-am-a-Verified-Sharetribe-Expert_white.webp)](https://sharetribe.com)

  [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

  ### Sharetribe Trigger Node

  Polls for events from your Sharetribe marketplace:

  | Event Type             | Events                                    |
  | ---------------------- | ----------------------------------------- |
  | Availability Exception | Created, Updated, Deleted                 |
  | Booking                | Created, Updated, Deleted                 |
  | Listing                | Created, Updated, Deleted                 |
  | Message                | Created, Updated, Deleted                 |
  | Review                 | Created, Updated, Deleted                 |
  | Stock Adjustment       | Created, Updated, Deleted                 |
  | Stock Reservation      | Created, Updated, Deleted                 |
  | Transaction            | Initiated, Transitioned, Updated, Deleted |
  | User                   | Created, Updated, Deleted                 |

  ### Sharetribe Node

  | Resource               | Operations                                                                                           |
  | ---------------------- | ---------------------------------------------------------------------------------------------------- |
  | Asset                  | Get (translations, email texts, branding, listing fields, listing types, user fields, content pages) |
  | Availability Exception | Create, Delete, Get Many                                                                             |
  | Image                  | Upload (from file or URL)                                                                            |
  | Listing                | Approve, Close, Create, Get, Get Availability, Get Many, Open, Update                                |
  | Marketplace            | Get Name                                                                                             |
  | Stock                  | Get Adjustments, Get Reservation, Update Quantity                                                    |
  | Transaction            | Get, Get Many, Transition, Transition Speculative, Update                                            |
  | User                   | Approve, Get, Get Many, Update, Update Permissions, Verify Email                                     |

  Assets are marketplace configuration files stored on Sharetribe's CDN, fetchable by alias (`latest`) or specific version ID.

  ## Credentials

  Create new credentials of type **Sharetribe Integration API** in n8n:

  1. **Integration API Client ID** and **Integration API Client Secret** — create an Integration API application in [Sharetribe Console → Build → Advanced → Applications](https://console.sharetribe.com/advanced/applications).

  2. **Sharetribe Plan** — select your plan:
     - **Extend** (default, also for Trial and Build plans): enter your **Marketplace API Client ID** — create a Marketplace API application in [Sharetribe Console → Build → Advanced → Applications](https://console.sharetribe.com/advanced/applications).
     - **Pro**: enter your **Marketplace URL** — the node retrieves the Marketplace API Client ID automatically.

  ## Compatibility

  - **Minimum n8n version**: 1.0.0
  - **Tested with**: n8n versions 1.0.0+
  - **Sharetribe API**: Compatible with Sharetribe Integration API v2026-05-06

  ## Usage

  If you are new to n8n check out the n8n's [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started.

  #### Search Filters and Sorting

  The node learns about your marketplace's [extended data](https://www.sharetribe.com/docs/references/extended-data/) configuration to determine what extended data fields can be used as filter and sort options for Listings, Users and Transactions.

  The node also learns your marketplace Listing types, User types, Listing Categories, Transaction transitions and Transaction Processes. These can then be used as Search filters.

  **Note**: Only marketplaces using the 'Extend' plan can define custom fields for search and sort on Transactions and Users, see [Search schema](https://www.sharetribe.com/docs/references/extended-data/#search-schema). Public fields on a Listing can be defined as searchable and sortable in the Sharetribe console on any plan.

  #### Count Only

  Get Many operations for Listings, Transactions, Users, and Stock Adjustments support a **Count Only** option that returns just the total number of matching records instead of the full list — useful for conditional logic without fetching data you don't need.

  #### Response Flattening

  API responses are automatically simplified into flat, easy-to-use objects with related data merged in.

  #### Updating Extended Data

  When creating or updating a Listing, Transaction, or User, extended data fields can be added or updated in two modes:

  - **Manual Mapping** (Recommended) — add or update individual fields one by one. Only the fields you specify are changed; everything else is left untouched. Supports [dot-notation](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/#support-dot-notation) for nested values (e.g. `details.size`).
  - **JSON** — provide a raw JSON object that is merged at the top level only (**shallow merge**). **Use with caution**: if a field already contains a nested object, it will be **fully replaced**, not merged. Top-level fields set to `null` are deleted entirely.

    **Example** — if `publicData` is currently:

    ```json
    {
    	"color": "red",
    	"details": { "size": "large", "weight": 5 }
    }
    ```

    and you provide:

    ```json
    {
    	"details": { "size": "small" }
    }
    ```

    the result is:

    ```json
    {
    	"color": "red",
    	"details": { "size": "small" }
    }
    ```

    `weight` is permanently deleted. Use **Manual Mapping** with `details.size` to avoid this.

  **Deleting individual fields** — Update operations include a separate **Delete Fields** section. Enter the field path ([dot-notation](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/#support-dot-notation) supported). For example, setting the path to `details.weight` removes only that key while leaving the rest of `details` intact.

  ## Resources

  - [Sharetribe](https://www.sharetribe.com/)
  - [Sharetribe Devoper Docs](https://www.sharetribe.com/docs/)
  - [Sharetribe API Docs](https://www.sharetribe.com/api-reference/integration.html)
  - [Sharetribe Console](https://console.sharetribe.com/)

  ## Troubleshooting

  Issues can be created in the GitHub repository for the node https://github.com/tribebuilder/n8n-nodes-sharetribe.

  ## License

  [MIT](LICENSE.md)

  ## Development

  See [DEVELOPMENT.md](DEVELOPMENT.md)

ai_documentation_summary:
  {"purpose":"Polls Sharetribe marketplaces for real-time events (like new listings, bookings, or messages) and provides CRUD operations for marketplace resources.","capabilities":["Poll for marketplace events (Availability Exception, Booking, Listing, Message, Review, Stock Adjustment, Stock Reservation, Transaction, User)","Create, Get, Update, Delete Listings","Create, Get, Update, Delete Transactions","Create, Get, Update, Delete Users","Create, Delete, Get Availability Exceptions","Upload Images","Approve, Close, Open Listings","Transition Transactions","Get Marketplace Name","Get Asset configurations (translations, branding, fields)"],"authentication":"OAuth2 (via Sharetribe Integration API Client ID and Client Secret)","commonUseCases":["Automated notifications when new listings are created or updated","Real-time booking alerts for marketplace operators","Syncing user data between Sharetribe and other systems","Monitoring transaction states for financial reconciliation","Automated inventory management via stock adjustments"],"limitations":["Requires Sharetribe 'Build', 'Pro', or 'Extend' plan to access the Integration API","Custom search and sort filters for Transactions and Users are only available on the 'Extend' plan","Community node not officially maintained by Sharetribe (though vetted by a Sharetribe Expert)"],"relatedNodes":[]}


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

updated_at: 2026-07-14 14:40:34
author_name: tszturmaj-nalpeiron
author_github_url: https://github.com/Nalpeiron/integrations-n8n.git
npm_package_name: @nalpeiron/n8n-nodes-nalpeiron
npm_version: 1.1.1
community_fetched_at: 2026-07-14T14:40:34.089Z
ai_summary_generated_at: 2026-05-02 08:57:17
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Customer",
          "value": "customer",
          "description": "Manage customer general operations"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Customer",
          "value": "create",
          "action": "Create customer",
          "description": "Creates new customer"
        },
        {
          "name": "Create Customer Contact",
          "value": "createContacts",
          "action": "Create customer contact",
          "description": "This method creates a new customer contact. The contact must have a unique email address for the customer."
        },
        {
          "name": "Disable Customer",
          "value": "updateDisable",
          "action": "Disable customer",
          "description": "This method disables customer and it's entitlements"
        },
        {
          "name": "Enable Customer",
          "value": "updateEnable",
          "action": "Enable customer",
          "description": "This method re-enables customer and it's entitlements"
        },
        {
          "name": "Get a Customer Contact List",
          "value": "listContacts",
          "action": "Get a customer contact list",
          "description": "This method returns a list of customer contacts"
        },
        {
          "name": "Get Customer",
          "value": "get",
          "action": "Get customer",
          "description": "This method returns the selected customer"
        },
        {
          "name": "Get Customer Contact",
          "value": "getContacts",
          "action": "Get customer contact",
          "description": "This method returns selected customer contact details"
        },
        {
          "name": "Get Customer List",
          "value": "list",
          "action": "Get customer list",
          "description": "This method returns list of customers"
        },
        {
          "name": "Search Contacts",
          "value": "listContactsSearch",
          "action": "Search contacts",
          "description": "This method search for customer contacts by email and returns paginated list of matching contacts"
        },
        {
          "name": "Update Customer Contact",
          "value": "updateContacts",
          "action": "Update customer contact",
          "description": "This method updates the selected customer contact details. At least one property must be provided."
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "customer"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Customer",
      "value": "create",
      "action": "Create customer",
      "description": "Creates new customer",
      "resource": "customer"
    },
    {
      "name": "Create Customer Contact",
      "value": "createContacts",
      "action": "Create customer contact",
      "description": "This method creates a new customer contact. The contact must have a unique email address for the customer.",
      "resource": "customer"
    },
    {
      "name": "Disable Customer",
      "value": "updateDisable",
      "action": "Disable customer",
      "description": "This method disables customer and it's entitlements",
      "resource": "customer"
    },
    {
      "name": "Enable Customer",
      "value": "updateEnable",
      "action": "Enable customer",
      "description": "This method re-enables customer and it's entitlements",
      "resource": "customer"
    },
    {
      "name": "Get a Customer Contact List",
      "value": "listContacts",
      "action": "Get a customer contact list",
      "description": "This method returns a list of customer contacts",
      "resource": "customer"
    },
    {
      "name": "Get Customer",
      "value": "get",
      "action": "Get customer",
      "description": "This method returns the selected customer",
      "resource": "customer"
    },
    {
      "name": "Get Customer Contact",
      "value": "getContacts",
      "action": "Get customer contact",
      "description": "This method returns selected customer contact details",
      "resource": "customer"
    },
    {
      "name": "Get Customer List",
      "value": "list",
      "action": "Get customer list",
      "description": "This method returns list of customers",
      "resource": "customer"
    },
    {
      "name": "Search Contacts",
      "value": "listContactsSearch",
      "action": "Search contacts",
      "description": "This method search for customer contacts by email and returns paginated list of matching contacts",
      "resource": "customer"
    },
    {
      "name": "Update Customer Contact",
      "value": "updateContacts",
      "action": "Update customer contact",
      "description": "This method updates the selected customer contact details. At least one property must be provided.",
      "resource": "customer"
    }
  ]

npm_readme:
  # @nalpeiron/n8n-nodes-nalpeiron

  Automate your license management and customer success workflows with the [Nalpeiron Growth Platform](https://nalpeiron.com). This n8n community node lets you integrate both Zentitle2 (license operations) and Zengain (customer lifecycle management) components with real-time notifications into your automation workflows.

  In addition to retrieval operations, action nodes support creating and updating records (POST/PATCH) for supported resources.

  ![Version](https://img.shields.io/npm/v/@nalpeiron/n8n-nodes-nalpeiron)
  ![Downloads](https://img.shields.io/npm/dm/@nalpeiron/n8n-nodes-nalpeiron)
  ![License](https://img.shields.io/npm/l/@nalpeiron/n8n-nodes-nalpeiron)

  ## What You Can Do

  ### 📊 License Data & Reporting

  - Retrieve license details and status information
  - List and filter licenses by various criteria
  - Track license usage and seat assignments
  - Monitor license expiration dates

  ### 👥 Customer Information

  - Get customer records and contact details
  - List customers with filtering options
  - Access customer-specific license information
  - Handle multi-tenant customer scenarios

  ### 📦 Product & Feature Insights

  - Retrieve product configurations and details
  - List available features and capabilities
  - Access product offerings and packages
  - Query custom attributes and configurations

  ### 🔔 Real-Time Notifications

  Listen for webhook events from both Growth Platform components:

  **Zentitle2 Component Events**:

  - License creation, activation, and expiration
  - Customer lifecycle events
  - Seat management notifications
  - Renewal and maintenance alerts

  **Zengain Component Events**:

  - Customer lifecycle changes (creation and updates) for revenue optimization and proactive customer success

  ## Use Cases

  Perfect for automating:

  **License Management (Zentitle2 Component):**

  - **License Monitoring**: Track license status and expiration dates across your organization
  - **Renewal Alerts**: Set up notifications for upcoming license expirations
  - **Usage Reporting**: Generate reports on license utilization and seat assignments
  - **Compliance Tracking**: Monitor license compliance and usage patterns

  **Customer Success & Revenue Growth (Zengain Component):**

  - **Revenue Optimization**: Identify upsell opportunities and at-risk accounts
  - **Proactive Customer Success**: Automate engagement based on customer lifecycle insights
  - **Sales Intelligence**: Sync customer behavior data to CRM systems for prioritized outreach
  - **Churn Prevention**: Set up automated workflows to address customer health signals

  **Integrated Growth Platform Workflows:**

  - **Data Synchronization**: Keep external systems updated with both license and customer success information from the Growth Platform
  - **Unified Customer View**: Combine Zentitle2 licensing data with Zengain customer success insights for complete customer intelligence

  ## Installation

  ### Community Nodes (Recommended)

  1. Go to **Settings > Community Nodes** in n8n
  2. Select **Install**
  3. Enter `@nalpeiron/n8n-nodes-nalpeiron` as the package name
  4. Click **Install**

  ### npm

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

  ## Setup Guide

  ### Step 1: Installation

  Install via Community Nodes (recommended) or npm as shown above.

  ### Step 2: Create API Credentials

  1. Log into your Nalpeiron Growth Platform account
  2. Go to the API credentials section
  3. Create new OAuth2 credentials
  4. Note down your Client ID, Client Secret, and OAuth URL

  ### Step 3: Configure Credentials in n8n

  1. In n8n, go to **Settings** > **Credentials**
  2. Click **Add Credential** and select **Nalpeiron account**
  3. Configure the following fields:
     - **Base URL**: Your Nalpeiron API endpoint (e.g., https://api.nalpeiron.com)
     - **Tenant ID**: Your Nalpeiron tenant identifier
     - **Client ID**: Your OAuth2 Client ID from Nalpeiron admin panel
     - **Client Secret**: Your OAuth2 Client Secret from Nalpeiron admin panel
     - **Access Token URL**: The OAuth2 Token endpoint URL (e.g., https://auth.nalpeiron.com/protocol/openid-connect/token)

  ### Step 4: Test Your Credentials

  The credentials include a built-in test function:

  1. Fill in your credential fields in the n8n UI
  2. Click the **"Test"** button
  3. Get immediate validation of your OAuth2 configuration

  **What Gets Tested:**

  - OAuth2 Token Request validation
  - Access Token format verification
  - Tenant-specific API access
  - Error diagnosis with specific guidance for common issues

  ## Getting Started

  After installation, you'll find four new nodes in your n8n palette:

  **Zentitle2 Nodes** (License Management Component):

  - **📊 Nalpeiron Zentitle2** - Retrieve license data (get licenses, customers, products, usage information)
  - **🔔 Nalpeiron Zentitle2 Trigger** - Listen for real-time events (license expiration, customer updates, renewals)

  **Zengain Nodes** (Customer Success Component):

  - **📊 Nalpeiron Zengain** - Access customer lifecycle data and account insights for revenue optimization
  - **🔔 Nalpeiron Zengain Trigger** - Listen for customer success events to drive proactive engagement

  **Note:** All Nalpeiron nodes are also available as AI tools for enhanced automation and intelligent workflows.

  ### Example Workflows

  **License Renewal Alert (Zentitle2 Component):**

  ```
  Nalpeiron Zentitle2 Trigger (license expires in 7 days) → Get Customer Details → Send Renewal Notice
  ```

  **Customer Success Automation (Zengain Component):**

  ```
  Nalpeiron Zengain Trigger (customer created) → Get Customer Insights → Update CRM with Revenue Opportunities
  ```

  ## Resources

  The node provides access to these Nalpeiron Growth Platform resources

  ## Webhook Events

  The trigger node supports webhook events for real-time automation

  ## Webhook Setup

  ### Basic Setup

  1. Add either the **Nalpeiron Zentitle2 Trigger** or **Nalpeiron Zengain Trigger** node to your workflow
  2. Select the events you want to listen for (supports multiple selection)
  3. Webhooks are automatically registered
  4. The webhook URL is automatically configured

  ### Authentication

  **Note:** RSA signature verification has been removed from this community package to ensure compatibility with n8n Cloud verification requirements. All webhook requests are accepted without signature verification.

  For production deployments requiring webhook authentication, consider implementing verification in your external systems or using n8n self-hosted with custom authentication logic.

  ### Auto-Setup Feature

  The trigger node automatically manage webhooks:

  - **Auto-Create**: Creates webhooks when the trigger activates
  - **Auto-Update**: Updates webhook subscriptions when events change
  - **Auto-Delete**: Removes webhooks when the trigger is deactivated

  ### Webhook Payload Structure

  All webhooks follow this structure:

  ```json
  {
  	"eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
  	"eventDate": "2025-06-06T11:39:22.739326Z",
  	"eventCode": "customer.created",
  	"resourceId": "cust_ILLqMyx3UUy_n5cZqui7NQ",
  	"callAttempt": 1,
  	"payload": {
  		// Event-specific data
  	}
  }
  ```

  ### Accessing Webhook Data in n8n

  | Data          | Access Path                   | Example                  |
  | ------------- | ----------------------------- | ------------------------ |
  | Event Type    | `{{ $json.data.eventCode }}`  | `"customer.created"`     |
  | Resource ID   | `{{ $json.data.resourceId }}` | `"cust_abc123"`          |
  | Event Payload | `{{ $json.data.payload }}`    | Event-specific data      |
  | Event Date    | `{{ $json.data.eventDate }}`  | `"2025-06-06T11:39:22Z"` |

  ## Troubleshooting

  ### Webhook Not Triggering

  1. Check webhook URL is correctly registered in Nalpeiron Growth Platform
  2. Verify selected events match the events being sent
  3. Review n8n execution logs for errors
  4. Test webhook manually using the "Test URL" feature

  ### API Calls Failing

  1. Verify OAuth2 credentials are correct and have proper permissions
  2. Check the base URL points to the correct environment

  ## License

  MIT

  ## Support

  For Nalpeiron Growth Platform API questions, please contact [Nalpeiron Support](https://nalpeiron.com/support).

  ## Links

  - [n8n](https://n8n.io)
  - [Nalpeiron Growth Platform](https://nalpeiron.com)
  - [API Documentation](https://api.nalpeiron.io/docs)

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the Nalpeiron Growth Platform to automate license management (Zentitle2) and customer lifecycle management (Zengain) workflows. It supports retrieving data, performing CRUD operations on records, and listening to real-time webhook events for proactive automation.","capabilities":["Retrieve license details, status, and usage information","List and filter licenses by various criteria","Get customer records and contact details","Access product configurations and feature insights","Create and update records (POST/PATCH) for supported resources","Listen to real-time webhook events for license lifecycle changes","Listen to real-time webhook events for customer lifecycle changes","Track seat assignments and monitor expiration dates"],"authentication":"OAuth2","commonUseCases":["License renewal alerts and expiration monitoring","Automated customer success engagement based on lifecycle insights","Revenue optimization by identifying upsell opportunities","Churn prevention through automated health signal workflows","Data synchronization between external systems and the Growth Platform"],"limitations":["Specific resource endpoints and event types are limited to those supported by the Nalpeiron Growth Platform API","Requires valid OAuth2 credentials with proper tenant configuration to function"],"relatedNodes":["n8n-nodes-n8n","n8n-nodes-crm"]}


